06/06/21 22:30:39
>>134-135
参考 -
ImagePad.HTA
URLリンク(www.vector.co.jp)
「Windows XP SP2より前は、HTAファイルにアイコンはなく、
ドロップも使えません。」
Win XP SP2 ではそういう配慮は不要…でいいんですよね?
それ以前のOSの場合やソフトの配布を考えるなら別でしょうけど。
143:hidebou
06/06/22 13:26:36
>>142
HTAへの直接ドロップに関しては回答するほどの知識を持っていませんが、改めて
XP SP2で実験してみると、ドロップファイルを引数とは認識していないようです。
レジストリを書き換えてそれを有効にする方法があるようですが、試したことは
ありません。
HTABOX3.00はEXEですので、ドロップされたファイルを引き数として認識します。
この文字列を子プロセスとして実行するHTAへ文字列として渡すのでレジストリ
を書き換えずにHTAへドロップファイルのパスを渡せます。
144:hidebou
06/06/22 16:24:25
追記です。
HTAアプリケーションとして既に開いているウインドウへのドロップと起動時の
引数としてのドロップがごっちゃになった発言をしてしまったかも知れません。
起動時の引数としてのドロップならばOSに関わらず134の例のように何らかの
細工がないとできないと思います。
145:hidebou
06/06/23 20:52:40
HTABOXにHTAを入れて実行した場合、生成されたEXEがHTAと同一なフォルダに必ず
存在している事になります。EXEの方はHTAが実体化されると何の仕事もしていない
のですが、HTAからパイプ経由で呼び出されるサービスルーチンを持っていたら、今
まで煩雑なコーディングが必要だった部分をスマートに記述できるかもしれません。
具体的には 「生成.EXE コマンド 引数」をHTAから実行して用意されたWIN32APIの
結果をその標準入出力を利用して取得するものです。(生成.EXEは非表示実行)
例えばEXEがファイルのバイナリデータをパイプしてHTAは16進文字列として入出力
できるというのを手始めに用意しようと思っています。私はHTA歴が浅いので発想が
貧困なのですが、こんなサービスルーチンがあったらというご意見をいただければ
可能な限り実現してゆきたいと考えています。
146:デフォルトの名無しさん
06/06/24 02:20:53
HTAのD&Dといえば、
>>39,142でもお馴染みのYさん作「Clipboard.HTA」の方法もある。
環境依存?そんなん知らねーよって方に。
147:142
06/06/24 12:07:49
>>143-146
レス 有難うございます。
こちらの環境(Win XP SP2、IEも最新)では
ImagePad.HTA
URLリンク(www.vector.co.jp)
も
>>135 の
URLリンク(pc.2ch.net)
で示されているサンプルコードもレジストリを弄らずに動作してるんですよね…。
あと、直接HTAの事ではありませんが
Y氏の
CurrentDirectoryOnDrop.VBS
ファイルをドロップしたときのカレントディレクトリの謎を解くVBScript
URLリンク(www.vector.co.jp)
などをみると色々あるみたいですね…。
勉強して出直してきます。
148:デフォルトの名無しさん
06/06/24 17:31:18
htabox
自分だけが例外なのか起動時に一瞬エラーメッセージちらつかん?
メッセージが疾風のように現れて疾風のように去ってゆく
利用には困らないんだけど何て書いてあるのか読めなくて気になる
再現手順、htaboxで作ったexeをデスクトップにおきダブルクリック。
2つ目以降の起動では出ない、キーボード操作での起動だと出ない、
英語圏なパスに置けばダブルクリックでも出ない
os2kのie5sp4を使ってて動体視力に自信ある人は試してくれないか?
149:hidebou
06/06/24 21:53:22
起動時のエラーメッセージということですが、大変興味があります。場合によって
は問題解決用にワンステップづつ動作を停止するバージョンを用意します。
c:\日本語 というフォルダでテストしていますが、症状が再現できていません。
よろしかったら具体的なフォルダ名を教えていただけないでしょうか。
150:hidebou
06/06/24 22:16:15
追記
一つ思い当たるのはMSHTA.EXEのプロセスメモリを読むためにMSHTAを一度実体化
させる必要があるんですが、ここでmshtaにalertダイアログを表示させメモリ
確認後ターミネイトしています。ここのalertダイアログが一瞬見えてしまっている
のかもしれません。ディスクキャッシュがきく2回目からは動作がスムーズになる
ので気にならないというのもありそうな話です。この部分は改良の余地があると認識
しておりましたので対策を行いたいと思います。
151:hidebou
06/06/24 22:38:09
alert()を削除してもメモリは確認可能でしたのでコンパイルしたEXEを置きます。
このページは他のページからリンクされていませんので直接下記URLへアクセスして
ください。
URLリンク(www5a.biglobe.ne.jp)
152:hidebou
06/06/24 23:20:24
単にalert()をやめると空のHTAウインドウが目立つのでプロセス生成時にウインドウ
非表示を指定するようにしました。本当ははじめっからそうすべきだったんですけど
動くと興味を失って細かいチューニングをやらないというのが私の欠点なのです。
これで気になるメッセージが見えなければいいのですが。
153:デフォルトの名無しさん
06/06/25 00:31:48
>152
申し訳ない、再現しまくれるんだけどどうあがいても同じになる
イベント ID (1900) (ソース HHCTRL 内) に関する説明が見つかりませんでした。
リモート コンピュータからメッセージを表示するために必要なレジストリ情報またはメッセージ DLL ファイルがローカル コンピュータにない可能性があります。
次の情報はイベントの一部です: この操作は HTML ヘルプ内でのみ機能します。,
URLリンク(www.keiyu.com) URLリンク(go.microsoft.com)
これイベントビューアにびっしり埋まってました。これ以外は残らない
無関係なところで自爆してるっぽいかもしれません。
154:デフォルトの名無しさん
06/06/25 02:04:02
上のは関係ない情報だきっと!まざっちった!失礼
いろいろなソースでやって見たけどなんかの規則で出るのは出る
的外れかもしれないけど出るパターンのソースにだけ含まれてた怪しげな部分
css { behavior: url(#default#download); }
document.cookie
<iframe />
どれか入れると出るかも?いまいちわかんない。お騒がせしました
155:hidebou
06/06/25 02:11:54
>>153
mshta確認のための処理は mshta.exe javascript: を行い、実体化したところで
メモリを読みターミネイトしています。ちなみにDOS窓から上記コマンドは実行できる
でしょうか?。そこのエラーではないとすると次の本体起動時になるわけですが、
これもBOXに入れない状態でDOS窓からコマンド起動してみたら何かつかめないで
しょうか。それと、もしCGIが記録した
JST2006-06-25-00:26:58Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
がアクセスしていただいたログだとしたらIEのバージョン問題かもしれません。
ご迷惑をおかけします。
156:デフォルトの名無しさん
06/06/25 03:08:22
>>155
mshta.exeを差し替えることが出来るユーザ相手に
この程度の隠蔽はほとんど役に立たないんだから
プロセスメモリ解析なんて意味ないじゃん。
どうしてもmshta.exeをチェックしたいならMD5とか使えば?
TerminateProcessにしたって出来るだけ使うなってなってるはずだし。
157:hidebou
06/06/25 08:47:42
ドロップされたHTML、HTAのスクリプトコードをNamedPipeでやりとりする事
もできます。ただPC内で行われていることですので何かをまったく隠すというのは
無理なのですが、見る気をおこさせない、面倒だという状態をつくります。
もちろん、次期バージョンではドロップしたユーザーがmshtaのチェックやファイル
の消去などの動作を選択できるようにすべきですよね。
158:デフォルトの名無しさん
06/06/25 16:37:38
>>157
隠蔽されたファイル、スクリプトを取り出そうとする場合
mshta.exeを差し替えたりAPI弄ったりしないってこと。
もっと簡単な方法がある。NapedPipe使ってあっても同じ。
mshta.exeを差し替えるスキルがあるユーザなら当然そっちの方法を使うでしょ。
だからmshta.exeチェックのために特定のバージョンに依存したり、
TerminateProcessするといった暴挙はデメリットでしかないよ。
自分の駐車場に勝手に車を止められたくないからって
隣の駐車場にチェーンをはってる感じ。意味無し。
159:hidebou
06/06/25 17:34:43
ご意見は真摯に受け止めます。
160:デフォルトの名無しさん
06/06/26 17:24:52
デスクトップ・アプリケーションにもHTML化の波が
URLリンク(itpro.nikkeibp.co.jp)
これってVistaに標準で実装される、ってことですよね?
これからHTAでデスクトップ・アプリ作るの、考えちゃうな。
Microsoft Gadgets以外のアプリを配布ならHTABOXでいいんだろうけど。
161:デフォルトの名無しさん
06/06/26 18:22:29
>>160
"HTAをもっと流行らせる"スレとしては、ね。
とりあえず思いつき
Dojo
URLリンク(dojotoolkit.org)
qooxdoo
URLリンク(journal.mycom.co.jp)
Survey of AJAX/JavaScript Libraries
URLリンク(wiki.osafoundation.org)
みたいなライブラリでも作って(あるいは既存のライブラリを利用とか)
簡単にアプリ作れる環境整える、とか
>>113 じゃないけど専用のエディタかなんか作るとか?
…イメージ貧困でスマソ。
162:デフォルトの名無しさん
06/06/27 12:18:17
M$ってば >>19 "HTA Helpomatic"なんてユーザーにばら撒いておいて…
(あまりひろまってないみたいだけど)
もしかしてHTAでプログラミング初心者ユーザーを慣らしておいて
Gadgetsへの誘導が目的だったとか?
考えすぎ?
163:デフォルトの名無しさん
06/06/27 15:40:36
MacとかFireFoxでもやってるから、そのマネだよ。
UIを「HTMLで」ってのは、入り口は簡単だがこだわるとかなりメンドクサそう。
得意の独自拡張をさらに追加するのかな。
164:デフォルトの名無しさん
06/06/27 16:49:51
HTABOXの対抗馬?
eBook Maestro FREE
URLリンク(www.ebookmaestro.com)
Supporting any files.
You can include absolutely any files into your eBooks:
HTML pages, Graphic Files, Java Scripts, VB Scripts,
Cascade Style Sheets, Flash Files, Shockwave Files,
ActiveX Files, Sound Files, Video Files, Java Applets, etc.
Supporting all character sets.
You can create eBooks written in any languages with any character sets.
Full Windows Script Host (WSH) support.
You can use the entire range of WSH and Microsoft object features in your eBooks.
For example, you can use Scripting.FileSystemObject to work with files/directories,
Microsoft.XMLDOM to open/save/manage XML data, etc.
HTML HELPっぽいつくり。
Free版にはステータスバーにebookmaestro.comのURLが出るけど。
165:デフォルトの名無しさん
06/06/27 17:30:46
>>164
全くコンセプトの違うものに見えるのだが・・・
166:デフォルトの名無しさん
06/06/27 17:33:22
URLリンク(msdn.microsoft.com)
MSDN Library > Win32 and COM Development > User Interface > Gadgets
...Gadgets、 いつのまにか出来てるし。
// 前からあったっけ?
167:162
06/06/27 18:20:59
>>163
CSS3になれば色々出来るようになるだろうし、
これ以上HTMLの独自拡張は増やさないんじゃないですかね?
M$、前にこれ以上独自拡張は増やさない、って発表してなかったかしらん?
↑記憶が定かでナイデス
168:デフォルトの名無しさん
06/06/28 00:28:53
>167
M$には舌が1024枚ありますから
169:デフォルトの名無しさん
06/06/28 02:23:07
独自拡張はdocument.allだけでもうたくさん。
170:162
06/06/28 18:04:08
>>167 自己レス
>M$、前にこれ以上独自拡張は増やさない、って発表してなかったかしらん?
>↑記憶が定かでナイデス
そのものズバリのエントリーが見つからなかったです。
思い違いだったかもしれません、申し訳ない。
参考リンク
URLリンク(www.microsoft.com)
URLリンク(www.microsoft.com)
M$の外
URLリンク(www.fliedlice.com)
M$もWEB標準から離れていくような
勝手に独自拡張を増やす方向へはいかない、
と個人的には思いたいですけどね。
勿論、WEB上に公開するHTML文書についてのはなしで、
HTAはHTAである時点でHTML文書では無いし、
アプリである上に HTMLをDOMとして捉える事が殆どだろうし、
状況は違ってくるんでしょうけど。
URLリンク(www.parkcity.ne.jp)
>>164
HTABOXの対抗馬? あえていうなら
>>98 の www-Sharp.ClrHost HTA compiler
のほうかと。
171:デフォルトの名無しさん
06/06/28 20:36:29
こんな素敵なスレが。
HTAって、Windows(>>7)の中でも使ってたのね。
172:デフォルトの名無しさん
06/06/29 04:39:58
>155
おーーすげーー!
mshta javascript:でエラー出る。メッセージは
インターネットサイト: javascript: を開けません。
操作は中断されました。
です。
mshta javascript:alert("aaaa");
こうしたらエラーがとまって読めた、
もろこれだ!すっきりした。これおもしろいね機能するのにIEいかつい
173:デフォルトの名無しさん
06/06/29 18:52:56
>>171 同感
『流行らせるスレ』だからか参考リンクが多いから
リンク先見て回るだけでも面白い
174:デフォルトの名無しさん
06/06/29 20:08:44
>>113 >>161
~ライブラリでも作って(あるいは既存のライブラリを利用とか)
~専用のエディタかなんか作るとか?
↓イメージとしはこんな感じ?
Yahoo! Widgets - Workshop - DEVELOPER SDK
URLリンク(widgets.yahoo.com)
に続いて
Google Desktop Gadget Designer(IDE)
URLリンク(desktop.google.com)
も公開されたね。
先に開発して売り込んでれば商売になったかも?
175:デフォルトの名無しさん
06/06/29 20:40:51
コマンドラインヘルプの奴はまじですごいな。
>>39のvectorのプロセス操る奴もなかなか。ここまでできるかHTA。
いや、すごいのはShell.Applicationか?
Yahoo! WidgetsとMozillaのXULは、タグを覚えんの面倒くさいんで流行らないでしょ。
176:デフォルトの名無しさん
06/06/29 23:46:02
参考リンクが多いのがいいの?
じゃ マネして
Gadgetつながりで
Yahoo WidgetやGoogle GadgetにみるCGUIの萌芽
URLリンク(www.atmarkit.co.jp)
"Web 2.0とリッチクライアントの関係と今後の動向について解説"
HTAに関連? - 参考リンク
- ブラウザを飛び越えて進化するリッチクライアント -
スタンドアロン型リッチクライアントとは?
URLリンク(www.atmarkit.co.jp)
引用ここから~
"リッチクライアントには、美しい色彩のイメージデータやアニメーションを取り込みつつ、
高い操作性/機能性の実装が容易で、
結果として高いUser Experienceの実現を可能にするポテンシャルを持つことが求められる。"
~引用終わり
HTAもスタンドアロン型リッチクライアントと考えていいんだよね?
@IT > リッチクライアント & 帳票
URLリンク(www.atmarkit.co.jp) で見つけたフレーズ
"みんなで情報を持ち寄って、Ajaxを育てよう"
AjaxをHTAに置き換えて考えてみると"参考リンクが多い"のも案外
177:デフォルトの名無しさん
06/06/30 12:00:25
「スタンドアロン型リッチクライアント」という捉え方は間違いではないと思います。
以下は個人的な意見ですが
HTAでそれ(スタンドアロン型リッチクライアント)
を前面に打ち出すのはちょっとキツイかな、とも感じます。
無理やり料理で例えて
HTA以外の「スタンドアロン型リッチクライアント」を濃い味付けの料理だとすれば
HTAは「豆腐」のように他の素材や料理と組み合わせたり
色々な使い方が出来るんだ、というようなアピールの方がいいんじゃないかと。
適当な例えが浮かばなくて。判りづらい文章ですいません。
どの道、「スタンドアロン型リッチクライアント」も
淘汰が始まっていくんじゃないか、と思いますし。
# 「利用者の生産性維持/向上」「Experience性の重視」といった考え方は有用だと思います。
178:デフォルトの名無しさん
06/06/30 17:31:41
社員さん乙
179:デフォルトの名無しさん
06/07/01 13:07:02
HTAってIE7の影響を度の程度受けるんですか?
180:デフォルトの名無しさん
06/07/02 10:24:24
>>175
コマンドラインヘルプの奴
>>32 の "Cmd Help Wrapper" ですか?
サイト、落ちてるみたいですね。
今のところ web.archive で観られるようですね。
>>179
IE7はまだBETA版だし、影響、といわれても
上級者でも答えようが無いんじゃないでしょうか。
公開されているベータ版落としてきて色々試してみて、
要望とか不具合などMSの方へフィードバックするとか。
如何でしょう?
hidebouさんのところに関連記事があったので紹介させて貰いますね。
IE7とMSHTA
URLリンク(www5a.biglobe.ne.jp)
181:175
06/07/02 23:39:56
>>180
>>>32 の "Cmd Help Wrapper" ですか?
そうそれそれ。グーグルのキャッシュでみたよ。
182:175
06/07/02 23:46:22
よく考えたらIEでできることは(JavaScriptとかActiveXとか)すべてHTAでできるんだよね。
↓のなんか78.アナログ時計(HTA)っていうのがワラタ
URLリンク(www.makoto3.net)
HTAというかIEがすごいな。
183:デフォルトの名無しさん
06/07/03 22:45:27
>>182
サンプルが豊富ですね。
同サイト内
URLリンク(www.makoto3.net)
154,157 「oncontextmenuイベント」
などは HTAをアプリケーションとして仕上げる時などすぐに使えそうですね。
関連リンク:
oncontextmenu Event (JScript,VBScript)
URLリンク(msdn.microsoft.com)
" Event property :
object.oncontextmenu = handler → JScript only
object.oncontextmenu = GetRef("handler") → Visual Basic Scripting Edition (VBScript) 5.0 or later only
..."
- del.icio.us経由の情報 -
スクリプトレット「setContextMenu メソッド」 (IE 4.0以上?)
URLリンク(www.microsoft.com)
184:hidebou
06/07/04 18:50:12
いつも話題に乗れない書き込みで恐縮なのですが、ドロップファイル毎に取り扱い
を選択できるHTABOX4.00ベータを用意しました。単に入れ物として使うだけで全部
見てね!もできます。結構ヘトヘトですから穴があったらこっそり教えてください。
URLリンク(www5a.biglobe.ne.jp)
185:142,147
06/07/05 18:36:20
>>142 >>147です。
Win XP SP2 でD&Dが出来たり出来なかったりするケースがあるのは
これが原因じゃないか、と思えることがあったので報告させて下さい。
単純なことなんですが
ID属性をつけるかつけないか、ということに注目してみました。
「コマンドラインから引数を渡したい」
URLリンク(hyons.hp.infoseek.co.jp)
"<HTA:APPLICATION> に id を設定し、
id名.commandLine で、引数が読み込めます。"
を参考に
<HTA:APPLICATION
ID="任意のID名"
という感じで付けたり外したりして確認しました。
他の原因である可能性もあると思うので
とりあえず、の経過報告でした。
それと…
MSのリファレンスは分かりづらいですね。探し方が悪いのか
ID属性についての説明も見当たりませんし。
URLリンク(msdn.microsoft.com)
186:デフォルトの名無しさん
06/07/05 23:29:34
explorerのドロップハンドラがファイルの中身まで見ることは無い気がするけど・・・。
基本的には拡張子のShellEx(レジストリ)にDropHandlerが設定されているかどうかだよ。
187:185
06/07/06 00:25:20
>>186
レス有難うございます。
DropHandler は確認済みでした。分かりづらい文章ですいません。
>>142 のカキコミ
" 参考 -
ImagePad.HTA
URLリンク(www.vector.co.jp)
「Windows XP SP2より前は、HTAファイルにアイコンはなく、
ドロップも使えません。」
Win XP SP2 ではそういう配慮は不要…でいいんですよね?"
という風に確認がしたかったんですが、その後
XP SP2 でD&Dが出来なかった(引数を認識ない)というレスがあり
その原因が知りたかったので色々調べていました。
紛らわしいカキコミで失礼しました。
188:デフォルトの名無しさん
06/07/06 18:33:08
Windows XP SP2でのHTAアイコンへのドロップでは
HTAアプリにID属性を付けておくことが必要、
こちらでも実験してみた。
こちらの環境 Windows XP SP2,IE6
通常のドロップのほかに
SendToに置いたショートカットへのドロップの有効も確認
>>187 GJ
とりあえず HTAアプリにはID属性をつけておこう、ということで FA?
189:188
06/07/07 07:35:43
>>188 自己レス
うわっ 朝になって読み返してみると表現がちょっとおかしく思えてきた
HTA:APPLICATIONタグにはID属性を もしくは
HTAアプリにはIDを振っておこう
の方がいいのか?
190:デフォルトの名無しさん
06/07/07 19:38:57
>>189 用語の使い方でツッコミが入るかも…
191:189
06/07/07 21:04:14
>>190
>用語の使い方で
"HTA:APPLICATIONタグ"ってあたり?ちょっと修正&加筆してみた
* Win XP SP2 では レジストリ
htafile\DefaultIcon と
htafile\ShellEx\DropHandler がデフォルトで設定済。
HTAアプリケーションのアイコン、ショートカットへファイルをドロップして
ファイル名を 引数に渡すには
<HTA:APPLICATION>要素にID属性の設定が必要
Win XP SP2 以前のWin OSではレジストリの編集か >>134 氏、>>146氏の様な工夫が必要
** Win XP SP2 以前のWin OSでレジストリの編集を手軽に済ませたいなら
>>142氏が紹介されている
ImagePad.HTA
URLリンク(www.vector.co.jp)
にレジストリ結合用のhtafile.REGファイルが同梱されているので利用させて貰う
こんな感じでどうだろう?どこか問題ありならツッコミ、修正よろしく
192:デフォルトの名無しさん
06/07/07 22:06:42
htaってのはどーいった実行ファイルがどんな順番で起動されてるの?
193:デフォルトの名無しさん
06/07/08 16:57:33
>>192
HTAファイル(コマンドライン引数として) → %WINDIR%\system32\mshta.exe
…っていったら怒る?
URLリンク(www.roy.hi-ho.ne.jp)(HTML%83A%83v%83%8A%83P%81[%83V%83%87%83%93)%82%C9%82%C2%82%A2%82%C4
194:デフォルトの名無しさん
06/07/08 23:26:44
HTAをもっと流行らせる計画
レス:192 件|得点:0|一日のレス:1 件/日|スレ年齢:321 日|予想寿命:1351 日
余命4年か...
195:デフォルトの名無しさん
06/07/09 13:58:10
>>194
HTAスレでは長いほうなんじゃ?いままでのスレはだいたい短命だたよ。
…じゃぁ~ちょっと燃料投下してミヨカ?
VBS用画像描画・変換COMコンポーネント
URLリンク(www.vector.co.jp)
スクリーンキャプチャ簡単に弄る方法考えてて見つけた
GUIをHTAで作れば面白いかも?てかHTA向き?
作者タンのページではBETA版の人柱も募集してるみたい。
興味ある人ドゾ。
196:デフォルトの名無しさん
06/07/09 17:01:21
上のほうの話題から
HTMLのFRAME内にHTAを読み込むのは無理が無い?
HTA内のFRAME内にHTAを読み込むのも無理があると思うんだけど。
特にXP2になってセキュリティも強化されてるだろうし。
NAVIGABLE="yes" も
APPLICATION="yes" も
FRAME内にHTMLを読み込む場合には有効なんだけど。
自分のところ(WinXP2,IE6)では出来なかった。
成功した人、いるのかな?
ちょっとだけ興味があったり。
自分ならそういう手法(FRAME内にHTAを読み込む)はとらないから
どっちでもいい、っていえばどっちでもいいんだけど。
セキュリティ的に問題がありそうならスレ的には話題として取り上げてもいいのかも。
関連するかもしれないリンク:
どれもクロス フレームスクリプティングについての解説。
[InetSDK] クロスフレームスクリプトが可能なページを HTML アプリケーションで作成する
URLリンク(support.microsoft.com)
サポート: Internet Explorer 4.0 とそれ以降 Cross-Frame スクリプティング セキュリティ
URLリンク(support.microsoft.com)
実行時にセキュリティで保護されたフレームを表示する
URLリンク(www.microsoft.com)
>>195 関連情報:某掲示板ではかなり前からやりとりがされてる模様。
197:デフォルトの名無しさん
06/07/09 18:11:03
できないし、する必要もない。
198:デフォルトの名無しさん
06/07/22 11:14:14
DHML GUI部品色々 (Javascript,css,XML)
URLリンク(scbr.com)
dhtmlxTree , dhtmlxGrid , dhtmlxTreeGrid , dhtmlxToolbar
dhtmlxTabbar , dhtmlxMenu
・ ライセンス形態:
Open Source - GPL,
URLリンク(scbr.com)
Free License,
URLリンク(scbr.com)
Commercial License,
URLリンク(scbr.com)
・ XMLでメニューアイテムを管理、なところが特徴
・ かっちりした(?)外観のアプリにむいてるかも
>>183 javascriptだとこんな感じ?
DHTML List based context menu(javascript)
URLリンク(www.dhtmlgoodies.com)
AJAXの影響かDHTMLの情報が溢れてるからこういう紹介のカキコミ、
必要無い気がしないでもなかったり。
// でも >>176 みたいな考え方もあるしなぁ。 う~ん…
199:デフォルトの名無しさん
06/07/22 16:27:13
htaに特化したものであれば良いんだけど、
どうしてもhtml+wshになるしね・・・。
200:198
06/07/22 21:47:41
たま~に来て てきと~に情報投げて、じゃやっぱり迷惑だよね…。
今までよく怒られなかったヨ。 過疎ってたせいもあるんだろうけど。
…これからは控えますです。
201:デフォルトの名無しさん
06/07/23 10:24:08
いや、迷惑じゃないと思うよ。
202:198
06/07/23 13:34:53
>>199 >>201 ノシ
コアな話しの邪魔にならない程度に考えてみる
203:デフォルトの名無しさん
06/07/25 20:12:28
タイトル バーに閉じるボタンがない HTA を作成する方法はありますか。
URLリンク(www.microsoft.com)
MSの日本法人は刺ねばいいと思いませんか?
204:デフォルトの名無しさん
06/07/25 22:44:06
これ解けたら神だよ!!
hjuus htuuuiu4548""hh $%%458koiut
#hdifhkla''
さあこのプログラムがわかるかな?
205:デフォルトの名無しさん
06/07/27 22:22:19
>>203
何で?
206:デフォルトの名無しさん
06/07/27 23:18:33
>>205
英語
URLリンク(img.microsoft.com)
日本語
URLリンク(img.microsoft.com)
207:デフォルトの名無しさん
06/07/27 23:46:27
>>206
糞ワロタ
208:デフォルトの名無しさん
06/07/28 00:26:20
ヤバイ、MSの日本法人にちょっと萌えたw
209:デフォルトの名無しさん
06/07/28 10:37:46
>>208
MSの日本法人には日本人向けにドジっ娘属性が付けてあります♪
210:デフォルトの名無しさん
06/07/31 20:39:49
>>206
なるほど
211:デフォルトの名無しさん
06/08/02 22:33:40
生意気な hta みかけたぜ
<script>
(new ActiveXObject("WScript.Shell")).SendKeys("^{ESC}{UP}~~");
</script>
212:デフォルトの名無しさん
06/08/03 23:22:49
>>211
どこが?
213:デフォルトの名無しさん
06/08/04 19:17:54
HTAバカにしてきたけど、本格的なプログラムっぽい外観にできてかなりイイ!
214:デフォルトの名無しさん
06/08/07 23:20:49
自分のサーバー上に置いている自作のxxx.htaの中で、
<OBJECT CLASSID=clsid:38EE5CEE-4B62-11D3-854F-00A0C9C898E7
ID=DVD STYLE="height:420px; width:560px">
というMicrosoftのActiveXを読み込ますようにしています。
これの影響なのか、xxx.htaをダウンロードしようとしても、上記のActiveX
が正常に機能しません。私のサーバーのURLをIEの設定で「信頼するサイト」
に登録すると、正常に機能します。
htaのウリは、「ブラウザから解き放たれた」はずです。IEのセキュリティに
から解放する方法はございますでしょうか?(いちいち、ユーザーに私の
サイトを「信頼するサイト」に登録するようにお願いするのは面倒です。)
215:デフォルトの名無しさん
06/08/09 10:13:39
そんなの出来たら、ウイルスばら撒くのに便利すぎる。
リモートで実行できる以上、なんらかのセキュリティは必須だから
「IEのセキュリティ」から解放されても「htaのセキュリティ」が必要になる。
無駄だから統合してあるだけのこと。
216:デフォルトの名無しさん
06/08/09 11:22:02
>>214
「ブラウザから解き放たれた」ってのはつまり普通の exe アプリケーションと
同じ扱いするってことで… .hta ファイルをローカルに保存して実行してくれってことでわ?
217:デフォルトの名無しさん
06/08/09 22:50:26
>>216, 215
コメントありがとうございます。
> .hta ファイルをローカルに保存して実行してくれってことでわ?
明日試してみますが、ユーザーが自分のパソコンに「ローカルに保存」して私のhtaを
実行する」場合にも、そのユーザーはまず、私のサーバーを「信頼するサイト」と
してIEで登録しないと、214のようはhtaは実行できないのではありませんか?
もう1つ教えていただきたい点がございます。htaを開発しているWindows XPパソコ
ンには、Visual Studio 2005をインストールしていいて、htaにバグが発生すると、
自動的にVisual Studio 2005が立ち上がります。Visual Studioは便利なので、これで
初めからhtaを開発できたら便利だと思うのですが、可能でしょうか? 現在は、
エディターでhtaを書いています。
218:デフォルトの名無しさん
06/08/10 01:29:10
>>134
このbatがすごく自分のやりたい事に近いのですが、
batとJavaScriptにうとい為、いまいちどういう仕組みで
機能しているのか理解できません。
やっとこ調べて、%0がbatのパスを指すらしいことは分かったのですが
%* と s.indexOf("[[remov"+"e_tag]]") が良くわかりません。
vbsでいうところの、
For Each DropFile in Wscript.Arguments
MsgBox DropFile
Next
みたいにするには、どこを書きかえればいいのでしょうか?
219:デフォルトの名無しさん
06/08/10 02:04:15
>218
まぁ、ぶっちゃけ肝は
> //コマンドラインを取得
> document.getElementById("cmd_line").value = app.commandLine;
ここなんだけどね。
var cmdline = app.commandLine;
var args = cmdline.split(/\s+/);
for (var i = 0; i < args.length; ++i) {
window.alert(args[i]);
}
ってすれば「vbsでいうところの~」のよーなことになる。
(split()で単純に空白で区切ってるから空白入ったパスは寸断してしまうが。サンプルコードなんでカンベソ)
ちなみに、バッチファイルの「%*」は「バッチファイルに与えられた引数全部」。
(バッチの中でshiftコマンド使うと話が変わってくるがそれはおいとく)
「s.indexOf("[[remov"+"e_tag]]")」は"[[remove_tag]]"という文字列が含まれてるかの検査
(vbsならInStr(s, "[[remov"&"e_tag]]")だな)だが
DOMで全文書パースしてるからそこを"[[remove_tag]]"と書いてしまうとその部分も引っかかってわやになるので
そう書いている。
220:218
06/08/10 22:43:43
>>219
親切丁寧なScripting Guyに惚れそうです。本当に感謝です。
甘えてばっかもアレなんで、冗長っぽいコードですがVBS仕様にしてみました。
>>134氏同様にインデントは全角スペースになっています。
Sub window_onLoad
Dim arg,FindCnt,StartCnt,FilePath,fso
'----- 一番上のコメント削除(完全流用) -----
For Each n in Document.body.Childnodes
If typename(n.nodeValue)="String" and 0 < inStr(n.nodeValue,"[[remov" & "e_tag]]") then n.nodeValue=""
Next
'----- CommandLineを整形 ------
arg = Replace(app.commandLine ,Chr(34) & Split(app.commandLine,"""")(1) & Chr(34) & " ", "") '自身のパス削除
StartCnt=1
Set fso = CreateObject("Scripting.FileSystemObject")
'スタート地点が文字数を超えない限りループ
Do While StartCnt < Len(arg)
'最初の文字が「"」かどうかで分岐(「"」で始まる場合は、パスの間に空白がある)
If Mid(arg, StartCnt, 1) = Chr(34) Then
FindCnt = InStr(StartCnt + 1, arg, chr(34))'パスの終わりの「"」を探す
FilePath = Mid(arg, StartCnt + 1, FindCnt - (StartCnt + 1))'パスの抽出
StartCnt = FindCnt + 2'スタート箇所を次のパスの頭へずらす
Else
FindCnt = InStr(StartCnt, arg, " ")'パスの区切りである「 」を探す
FilePath = Mid(arg, StartCnt, FindCnt - StartCnt)'パスの抽出
StartCnt = FindCnt + 1'スタート箇所を次のパスの頭へずらす
End If
Msgbox FilePath & vbNewLine & "Exists:" & fso.FileExists(FilePath)'抽出パスの確認
Loop
Set fso = Nothing
End Sub
221:218
06/08/10 22:54:11
コードで行がいっぱいいっぱいになってしまったので連投スマソ。
参考資料
URLリンク(www.microsoft.com)
どうしても、わからない事があったので聞きたいのですが、
>DOMで全文書パースしてるからそこを"[[remove_tag]]"と書いてしまうとその部分も引っかかってわやになるので
>そう書いている。
この部分を詳しくお願いします。
どうも"[[remov" & "e_tag]]" と "[[remove_tag]]" の違いが理解できなくて。
&で文字列を結合するのとしないのと違いがでるのでしょうか?
222:デフォルトの名無しさん
06/08/12 02:39:54
今さら真面目に>>134見てみたけど、面白いねこれ。
まず、拡張子は .bat だから基本的にこれはバッチファイル。
だから引数を %* で食えるんだね。
バッチだったら "<html>" 以下は文法エラーじゃないかと一見思えるが、
その2行上でexit してる。バッチはインタプリタなので exit 以下は無視
されるので問題ない。ふむふむ。
で、このバッチが何をしているかというと、自分自身を mshta.exe の引数
に渡してる。(2行目)
ここでこのファイルは HTAファイルとして mshta.exe に評価されることに
なる。
じゃー今度は <html> より上の部分が文字列として表示されてしまうじゃん
かというと、これはこれで<html>より上はしっかり HTML 的にコメントアウト
されてる。なるほど!
いやいや待ちたまえ、rem [[remove_tag]] はコメントアウトされてないじゃ
ないか。その通り。
そのために ev_onload() で「"[[remove_tag]]" という文字列を含むノード
は中身を空にする」って作業を入れてるわけだ。おもしろ~い。
そこで>>134氏に2つ質問。
・数行前にはああ書いたけど、本当は前半の <!-- --> はオマケだよね?
<html>より上は1つのTextノードになるから、どっちみち ev_onload() で
除去される。
・"[[remov"+"e_tag]]" は必要なの?<script>はElementノードだから
nodeValue は null。影響ないんじゃない?
223:デフォルトの名無しさん
06/08/18 09:52:33
×ボタンが押された場合の処理ってjavascriptでどう検出して書けばいいんでしょうか…
onunloadに書くと全てのウィンドウを閉じる操作をした場合に実行されてしまうので。
HTAでは×ボタンを表示しないようにするしかないのでしょうか。
224:デフォルトの名無しさん
06/08/18 10:29:36
自己レス
フラグ立てれば済む話という単純なことに気づきませんでした…スマソ。
225:デフォルトの名無しさん
06/08/20 17:10:50
んがー、HTA+VBScriptでSleepは使えないのか。
ループの中でテキストボックスの中身変更しても反映されないorz
226:デフォルトの名無しさん
06/08/20 19:54:51
>>225
無理みたいね
HTA(HTMLアプリケーション)について
URLリンク(www.roy.hi-ho.ne.jp)(HTML%83A%83v%83%8A%83P%81[%83V%83%87%83%93)%82%C9%82%C2%82%A2%82%C4
(注意:WscriptオブジェクトはWSHの組み込みオブジェクトなので、HTAからは利用できない)
HTAファイルでWScriptオブジェクトの使用
URLリンク(www.happy2-island.com)
代替案でsetTimeoutの説明してる
227:デフォルトの名無しさん
06/08/22 00:39:04
>>225
URLリンク(msdn.microsoft.com)
228:デフォルトの名無しさん
06/08/23 15:41:15
どうしても分からないんで助言をお願いしまっす
HTAでIEのツール→インターネットオプションの詳細設定の
一番下の「背景とイメージを印刷する」を
オン・オフするにはどうすれば良いでしょうか?
色々調べたんですが、探しかたが悪いのか全く情報が見つかりません。
どうか宜しくお願いします
229:デフォルトの名無しさん
06/08/23 16:42:54
>>228
\HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\Print_Background
230:228
06/08/24 14:37:01
>>229
素早い返事ありがとです。やっぱレジストリをいじいじするんですね。
こう言うキーの探し方ってコツとかあるですかね?
あと一つだけ質問です。
職場で動かそうとするとノートンに怒られ、
最終的には管理者に怒られてしまうので
レジストリとか手をだしたことがないんですけど
コレは大丈夫でしょうか?
質問ばっかりで申し訳ないんですが、宜しくお願いします
231:デフォルトの名無しさん
06/08/24 15:28:28
>>230
探し方のコツはレジストリを適当に眺めてるとつかめますよ。
HTAはノートンの設定を変えないと警告が出るんだっけ。
いっそのこと↓のようにexeにしてしまうとか。
スレリンク(tech板:77番)
232:デフォルトの名無しさん
06/08/24 19:25:30
>>230
管理者にバレたら大変じゃないの?
233:デフォルトの名無しさん
06/08/24 20:28:01
>>231
HTAだとSCRIPTがVBの時もあるのだけどそういうのをexeにするコンバータとか売ってる?
234:デフォルトの名無しさん
06/08/24 21:25:35
単純にexeにするのなら>>98のがある。
VB.NETや他の.NET対応言語で書き直すもよし。
235:228
06/08/24 23:01:01
>>231
なるほど眺め続ければいーんですね。
ってキーの数とか半端ないんですけど…
んで、HTAの件ですがレジストリの読み込みは普通にできました。
ただレジストリを変更すると流石に反応するんじゃないかな?
と思ってるんでチャレンジしてません。
ノートンの知識がないんで、何に反応されるか戦々恐々なんですよ…
exeはただのjscriptでも可能なら考えてみたいです
>>232
大変かもしれません。
一度引っ掛かって、管理者の方がスットンできた経験あります。
原因がわかってるならいーけど?みたいな事を言われ軽く睨まれました。
引っ掛かった瞬間パニくって、速攻で丸ごと削除ったから
原因なんて分かる訳ないじゃん?とはチキンなんでいえませんでした。
236:デフォルトの名無しさん
06/08/24 23:13:38
>>235
手動でIEの[ツール]の[オプション]を変更して反応しなければ
他のプログラムでレジストリの該当部分を変更しても大丈夫だと
思うけど。
レジストリを変更したプログラムを一々監視してたとしたら別ですが。
237:デフォルトの名無しさん
06/08/25 11:12:34
>>234
アンカミスってません?
『>>130 >>136"*.exeじゃ無かったな、確か。独自形式の*.wsits だったな、確か。"』
exeにするなら >>184 HTABOX の方かと
>>235
>exeはただのjscriptでも可能なら
>>231のリンク先以外の方法なら
URLリンク(www.vector.co.jp)
とか いくつかありますね
238:デフォルトの名無しさん
06/08/25 13:44:25
>>234,237
ありがとう。
しかし同じ動作するのにexeだとOKでhtaじゃ嫌と言う社内の空気がワカラン orz
アイコンつけられるかつけられないかの違いだったらモットワカラン orz
239:デフォルトの名無しさん
06/08/25 18:47:36
ノートン先生ってHTAには警告出すけど
EXEはスルーするよね。
240:デフォルトの名無しさん
06/08/26 11:04:08
>>134 >>222
もっと簡単に、
@START MSHTA.EXE "%~f0" %*
@GOTO :EOF
<script language=vbscript>document.body.innerText=""</script>
<html>
~略~
更に、#!行みたいに、1行で、
@START MSHTA.EXE "%~f0" %* & GOTO :EOF & REM <script language=vbscript>document.body.innerText=""</script>
<html>
~略~
241:デフォルトの名無しさん
06/08/26 20:27:53
>>117 >>120 >>125
HTMLならMHTMLでひとつに纏められます。
そこで、まずhoge.HTAをhoge.HTMに変えて、IEで開き、MHTMLで保存します。
MSHTA.EXE %CD%\hoge.mht
とやっても駄目ですが、
MSHTA.EXE mhtml:file://%CD%/hoge.mht
とすればよいようです。
このファイルの先頭に、
@START MSHTA.EXE "mhtml:file://%~f0" %*
@GOTO :EOF
の2行を追加して、拡張子をCMDに変えます。
或いは、
拡張子を.MHTAに変え、
MSHTA.EXE "mhtml:file://%0" %*
に関連付けます。
242:デフォルトの名無しさん
06/08/28 13:58:32
>>125
mshta.exe "mhtml:res://自分.exe/main.mht"
はどうでしょう?
243:デフォルトの名無しさん
06/08/28 19:40:34
mht ってファイル名が全部フルパスに変更されちゃうからローカルファイルだとちょっとハズイ。
それとパッケージされるのは元からhtmlにリンクされているファイルだけみたいだけど
スクリプトで動的に表示したい画像ファイルとかはどうやって保存する?
IE以外に作成ツールとかあるのかな?
244:デフォルトの名無しさん
06/08/28 20:00:22
>>117
目隠し程度でよいのなら、以下はどうでしょう?
+ADwASABUAE0ATAA+ADwASABFAEEARAA+-
+ADwAUwBDAFIASQBQAFQAIABsAGEAbgBnAHUAYQBnAGUAPQB2AGIAcwBjAHIAaQBwAHQAPg-
+AFMAdQBiACAAdwBpAG4AZABvAHcAXwBvAG4AbABvAGEAZAAoACk-
+AE0AcwBnAEIAbwB4ACAAIjBCMEQwRjBIMEoAIg-
+AEUAbgBkACAAUwB1AGI-
+ADwALwBTAEMAUgBJAFAAVAA+-
+ADwALwBIAEUAQQBEAD4-
+ADwAQgBPAEQAWQA+MEswTTBPMFEwUwAgADwALwBCAE8ARABZAD4APAAvAEgAVABNAEwAPg-
ぱっと見では、HTMLにはとても見えませんが、
拡張子HTAかHTMLのファイルに保存すれば、実行可能です。
245:デフォルトの名無しさん
06/08/28 20:09:45
>>243
IEでなく、CDO.Messageを使うと、Content-IDでリンクされます。
CDO.Messageなら、いろいろ操作できてよいのでは。
246:デフォルトの名無しさん
06/08/28 20:11:26
>>116
named pipeでなく、anonymous pipeで標準入力に渡せばよいのでは?
>>114
しかし、そうやってHTAファイルを隠したところで、
所詮、右クリックの「ソースの表示」で見えちゃうのでは?
247:デフォルトの名無しさん
06/09/01 23:17:42
>>246
HTA:APPLICATIONタグで
右クリック禁止にしておけばいいんじゃないの?
248:デフォルトの名無しさん
06/09/02 11:29:51
Vistaでは、簡単にHTAの背景透過できるんかな
249:デフォルトの名無しさん
06/09/02 13:54:28
>>247
コンテキストメニューのほうは抑止できますが、^pの印刷は抑止できます?
印刷設定ダイアログ表示中にテンポラリフォルダを見るとソースがあります。
この方法はダイアログなどにも使えます。
250:デフォルトの名無しさん
06/09/02 18:44:23
クライアントで読む必要があるものを隠そうとするのは不毛の道
251:デフォルトの名無しさん
06/09/03 12:46:15
res:みたいに、ZIPの中身を取り出すprotocolがあったら、と思いません?
もし、それがあれば、HTMLやHTAを.filesや.mhtでなく、.zipにまとめて保存できて、よいのに。
誰か作っているかも、と思って探してみたけれど見つかりませんでした。残念。
試しに、こんなことを。
<script language=vbscript src='vbscript:CreateObject("Scripting.FileSystemObject").OpenTextFile("C:\a.vbs").ReadAll()'></script>
は出来るのに、
<img src="javascript:var sc=new ActiveXObject('ScriptControl');sc.Language='javascript';var s=sc.Eval('new ActiveXObject(\'ADODB.Stream\')');s.Open();s.Type=1;s.LoadFromFile('C:\\a.gif');s.Read(-1);">
は駄目みたいです。
252:デフォルトの名無しさん
06/09/03 14:11:01
これはできたよ。
<script language="VBScript">
Dim sh
Set sh = CreateObject("Shell.Application")
sh.NameSpace("H:\").CopyHere(sh.NameSpace("H:\test.zip").Items())
</script>
253:252
06/09/03 17:01:52
一応補足。
Zipフォルダが使える環境でないと動かないはず。
逆にエクスプローラでフォルダとして扱えればLHAでもCABでもなんでもいけるはず。
254:デフォルトの名無しさん
06/09/03 17:49:25
>>249
そもそもHTAをのぞけばソース見えちゃうんだし。
テンポラリ漁ってまで見たいような人にはどんな対策をしても無駄だと思うけど。
255:デフォルトの名無しさん
06/09/03 19:23:21
Windows Script Encoder みたいな仕組みはないのかな?
256:デフォルトの名無しさん
06/09/03 20:16:05
<script language=vbscript src='vbscript:CreateObject("Scripting.FileSystemObject").GetStandardStream(0).ReadAll()'></script>
とやると、スクリプトを標準入力/パイプから読み込めるので、スクリプトは隠蔽できるかも。
そもそも隠蔽しなくてよければ、
MSHTA.EXE vbscript:CreateObject("Scripting.FileSystemObject").GetStandardStream(0).ReadAll()
で、HTAソース全体を標準入力/パイプで流し込めます。
257:デフォルトの名無しさん
06/09/03 21:30:19
>>252
>Set sh = CreateObject("Shell.Application")
>sh.NameSpace("H:\test.zip")
このやり方は、Windows2000で、エラーになるらしい。cabも。
そういうときは、Explorerのid.Document.Applicationから
Shell.Applicationを取り出して使えばよいと思う。
258:デフォルトの名無しさん
06/09/03 21:31:29
HTAで、ShellNameSpaceが、XP SP2より後の修正で、使えなくなりました。
セキュリティ絡みでしょうか。
これを使うHTAが駄目に。回避方法はないでしょうか?
ADODB.StreamのLoadFromFileも、HTAで、使えません。
「エラー: このコンピュータの安全性の設定により、ほかのドメインのデータ ソースへのアクセスは禁止されています。」
HTML+SCなら使えるのに、なんで? ShellNameSpaceと同じ修正が関係?
使ってる人、多そうなのに大丈夫でしょうか。
259:デフォルトの名無しさん
06/09/09 14:22:17
>>249 に突っ込まないのはこのスレの方針?
IEとHTAとHTABOXの機能をごっちゃにしてるみたいなんだけど。
260:デフォルトの名無しさん
06/09/09 14:59:19
じゃあお前が突っ込めばいいのでは?
261:デフォルトの名無しさん
06/09/09 15:25:12
せっかく静かに流れてたんだからスルーしとこうヨ
262:258
06/09/09 15:39:27
ShellNameSpace
HTAでは使えなくなりましたが、HTAから出したダイアログ内では使えます。
コントロールが、わざわざダイアログかどうかをチェックして、
ダイアログでなかったら使えないようにすることに、
何かメリットがあるとは思えないので、
よくある、セキュリティ上の問題を回避、軽減する弥縫策でしょうか。
なので、HTAでShellNameSpaceを使うときの回避策は、
HTAからダイアログを出して、その中でShellNameSpaceを使うことです。
ファイルが2つに分かれるのが面白くないので、ひとつで済ます方法を
2パターン考えました。
自身をダイアログで呼び出し、中で切り分ける。
空のダイアログを作って中身を書き換える。
どちらも、使い慣れてないせいか、かなり面倒でした。
263:デフォルトの名無しさん
06/09/18 11:42:58
htaでグーグルマップのAPIを使ったアプリは作成できるのかな。
問題点があるとしたらなんだろう。
264:デフォルトの名無しさん
06/09/18 23:29:30
用途が思いつかないことかな。
265:デフォルトの名無しさん
06/09/21 00:51:04
HTAでframeを使いたいときは、必ずソースファイルのhtmを
用意する必要があるんですかね?
何がしたいかというと、bodyから何から全てスクリプトで動的に
生成していきたいのです。
266:デフォルトの名無しさん
06/09/21 00:53:42
>>265
document.writeしてもだめだったっけ?
267:デフォルトの名無しさん
06/09/21 01:26:07
>>265
>>256みたいに
<frame src=javascript:'HTML記述'>
<frame src=vbscript:"HTML記述">
はどうでしょう。
268:デフォルトの名無しさん
06/09/22 15:27:27
わざわざframe使わなくても,div(或いはtableのtd)の中身を動的に生成するのじゃだめなの?
269:デフォルトの名無しさん
06/09/23 03:17:42
>>266
frame タグの仕様で src に URL を指定しないといけないのですが
そのURLをファイルとして用意する以外に方法はないかと。
で、>>267 さんの提案を試してみましたがなかなかうまくいきません…。
javascript:document.write(...) でいけるかと思ったのですが失敗。
>>268
たとえば、エラーメッセージと本メッセージでスクロール領域を
分けたいのですよね~。
frame ってXSSの温床になってるせいもあってかセキュリティも厳しくて、
どうも使い勝手がイマイチなのが残念。
270:デフォルトの名無しさん
06/09/23 07:49:37
<div style="overflow:scroll"></div>
でいいやん。
271:デフォルトの名無しさん
06/09/23 09:31:29
俺もframe要らないと思うよ。
frameが無いと出来ないことってほとんど無いだろうし。
272:267
06/09/23 20:28:46
>>265
こんな感じで、ヒントエクスプローラバーをやってみましたが、うまく行きましたよ。
<script>
function source(){return '<'+'html>\r\n'+'<'+'head>\r\n'+'<'+'/head>\r\n'+'<'+'body>\r\n'+'<'+'img src=tips.gif>\r\n'+'<'+'/body>\r\n'+'<'+'/html>\r\n\r\n';}
</script>
<frameset>
<frame src="javascript:parent.source()">
</frameset>
273:デフォルトの名無しさん
06/09/25 23:21:20
皆々さん、ありがとう!
確かに、やろうとしたかったことは fram を使わずにできました。
HTA:APPLICATION タグでスクロールを無効にして、
<div id="result" style="width: 100%; height: 50%; overflow: auto; margin: 0px;"></div>
<hr />
<div id="error" style="width: 100%; height: 50%; overflow: auto; margin: 0px;"></div>
とすれば、ほぼフレームと同じ見た目になりますね!
(枠を移動させるまではできませんが…。もちろんscriptをガリガリ書けばできるでしょうけど。)
それとは別に、>>272さんのワザは勉強になりました。
document.write するんでなくてそのまま評価されるんですね。
ただ、HTMLとしてなら成功しましたが、HTA では「オブジェクトでサポートされていない
プロパティまたはメソッドです。javascript:parent.source()」
とエラーになってしまいました。
274:デフォルトの名無しさん
06/09/25 23:31:53
せきゅりちいゾーンがちがうからね。
>>138 とかすればノーガードになる。
275:デフォルトの名無しさん
06/09/27 00:54:42
>>274さんありがとうございます!
うほっ、そんな属性があったとは。ステキ。
自分もまだまだ勉強不足です。
しかしセキュリティゾーンは面倒だなあ。
Vista/IE7になったらもっと面倒になりそう…。
276:デフォルトの名無しさん
06/10/03 21:54:14
>>243
subst
277:デフォルトの名無しさん
06/10/09 08:04:22
初歩的なことかもしれないけど、教えてください。
やりたいことはフレーム分割をして、それぞれに任意のオブジェクトを配置したいのです。
しかし、タグ解説サイトを見ると、フレームの中身はsrcで指定したhtmlを読ませるだけで
frameset、frameタグを書いたファイル自身で、フレーム内の内容を記述する解説が見つかりません。
もちろんHTAでも外部のhtmlを参照できるのは知っていますが、便宜上1ファイルに纏めたいので
上記のことをやる方法を教えてください。現在はとりあえずフレーム自体は表示されるのですが、
frameタグの中に何を書いても一切表示されません。
VBSはだいぶ前から使っているのですが、GUIを作成する手段としてHTAを使い始めたばかりで
HTML関連を扱うのはこれが始めてなので悪戦苦闘しています。宜しくお願いします。
とりあえずcols="50,*"で<input type="button"/>を左右に一つずつ配置する
サンプルでも書いていただけるとありがたいのですが。
278:デフォルトの名無しさん
06/10/09 08:51:39
>>277
<html>
<head>
<script>
function load() {
with (frame1.document) {
open("text/html", "replace");
write('<html><body><div><input type="button"/></div></body></html>');
close();
}
with (frame2.document) {
open("text/html", "replace");
write('<html><body><div><input type="button"/></div></body></html>');
close();
}
}
</script>
</head>
<frameset cols="50%,*" onload="load()">
<frame id="frame1" />
<frame id="frame2" />
</frameset>
</html>
279:278
06/10/09 08:55:40
一々open()やwrite()使わないで,
frame1.document.body.innerHTML = '<html><body><div><input type="button"/></div></body></html>';
でもよい。
280:277
06/10/09 09:26:00
>>278-279
なるほど、スクリプトで書くわけですか。
どうりでタグ解説サイトを漁っても見つからないわけだ。
とにかく、教えていただいた
document.writeとdocument.body.innerHTMLで
目的は果たせます。ありがとうございました。
281:デフォルトの名無しさん
06/10/11 21:01:01
>>191
関連情報(?)見付けたので投稿してみる
HTAで引数を使う
URLリンク(wscript.name)
via WSH Lab. 掲示板
282:デフォルトの名無しさん
06/10/13 16:58:04
では、こんなのも。
HTAでコマンドラインの引数を分離するVBScript関数
URLリンク(www.vector.co.jp)
283:デフォルトの名無しさん
06/10/26 18:04:38
コマンドライン引数を分離するVBScript関数ってこれじゃだめなの?
URLリンク(www.microsoft.com)
284:デフォルトの名無しさん
06/10/26 18:55:37
mahta.exe c:\short\path\name\hoge.hta a b c
でやってみて。
285:284
06/10/26 18:58:20
typo
mshta.exe
286:デフォルトの名無しさん
06/10/27 01:17:30
面倒なので別のプログラムにやらせたりしてた。
// arg.js - コンパイル方法: jsc arg.js
import System;
var arg: String[] = Environment.GetCommandLineArgs();
for (var i: int = 1; i < arg.Length; i++)
Console.WriteLi(arg[i]);
<!-- HTA Sample -->
<html><head><hta:application id="Hta" /><script>
var WshShell = new ActiveXObject("WScript.Shell");
function GetCommandLineArgs() {
return WshShell.Exec("arg.exe " + Hta.commandLine).StdOut.ReadAll().split(/\r\n/);
}
</script></head><body><dl><dt>Command Line:</dt><script>
var c = GetCommandLineArgs();
for (var i = 0; i < c.length; i++)
document.write('<dd>' + i + ': ' + c[i] + '</dd>');
</script></body></html>
287:デフォルトの名無しさん
06/10/27 01:19:17
Console.WriteLi → Console.WriteLine
288:デフォルトの名無しさん
06/10/27 14:42:29
VistaとIE7で、HTAの扱いどうなってんの?
背景透過の容易性とか、アクティブデスクトップ機能とかあるんかいな
289:デフォルトの名無しさん
06/10/27 18:20:47
IE7入れて自分の目で確認したらいい。
OSの差は無いから。
290:デフォルトの名無しさん
06/11/08 00:28:14
HTAでAPIとか使わないで画像の合成して書き出しって可能?
291:デフォルトの名無しさん
06/11/08 00:31:54
BMPぐらいならなんとかできるかも?
292:デフォルトの名無しさん
06/11/08 00:35:03
IMGタグとかフィルタとか
293:デフォルトの名無しさん
06/11/08 00:57:39
やっぱADODB.Streamあたりでごりごりやるのかね……
294:デフォルトの名無しさん
06/11/08 01:14:14
ADODB.StreamもAPIだよ。
Win32APIではないけどね。
295:デフォルトの名無しさん
06/11/08 01:19:27
……そう言っちまったら「APIでない」のって何があるんだ……
window配下のオブジェクトツリーだけは「組み込み」ってことで特別扱い?
296:デフォルトの名無しさん
06/11/08 01:45:27
「そう言っちまったら」って…w
COMコンポはどう考えたってAPIとしか言えないだろ。
297:BMPをごりごり書いてみたw
06/11/08 03:21:03
<html><head>
<script language="VBScript">
Dim BmpFileHeader, BmpInfoHeader, BmpImageData
Dim BmpImageWidth, BmpImageHeight, BmpImageLineBytes
BmpFileHeader = Array(66,77, 54,0,0,0, 0,0, 0,0, 54,0,0,0)
BmpInfoHeader = Array(40,0,0,0, 0,0,0,0, 0,0,0,0, 1,0, 24,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0)
BmpImageData = Array()
Sub SetArrayLong(arr, index, LongNum)
Dim num, i
num = CLng(LongNum)
For i = 0 To 3
arr(index + i) = num Mod &H100
num = num \ &H100
Next
End Sub
Sub SetBmpSize(x, y)
BmpImageWidth = x
BmpImageHeight = y
BmpImageLineBytes = ((x * 3 + 3) \ 4) * 4
SetArrayLong BmpFileHeader, 2, 54 + BmpImageLineBytes * y
SetArrayLong BmpInfoHeader, 4, x
SetArrayLong BmpInfoHeader, 8, y
ReDim BmpImageData(BmpImageLineBytes * y - 1)
End Sub
Sub SetPixel(x, y, r, g, b)
Dim index
index = (BmpImageHeight - y - 1) * BmpImageLineBytes + x * 3
BmpImageData(index) = b
BmpImageData(index+1) = g
BmpImageData(index+2) = r
End Sub
298: ↓ 続く
06/11/08 03:21:41
Sub SaveBmpFile()
Dim strm, i
Set strm = CreateObject("ADODB.Stream")
strm.Type = 2 ' = adTypeText
strm.Charset = "iso-8859-1"
strm.Open
For Each i In BmpFileHeader
strm.WriteText ChrW(i)
Next
For Each i In BmpInfoHeader
strm.WriteText ChrW(i)
Next
For Each i In BmpImageData
strm.WriteText ChrW(i)
Next
strm.SaveToFile "test.bmp", 2
End Sub
Sub Main()
SetBmpSize 32, 32
dim i
for i=0 to 31
SetPixel i,i, 255,0,0
next
SaveBmpFile
End Sub
</script>
</head>
<body><button onclick="Main()">SAVE BMP FILE</button></body>
</html>
299:デフォルトの名無しさん
06/11/08 12:56:57
>>297-298
これ何?
300:デフォルトの名無しさん
06/11/08 13:18:07
BMPファイルを救う
301:デフォルトの名無しさん
06/11/08 14:45:44
普通、VBSやJSで処理が可能かどうか、駄目そうなら他のLLではどうか、
C++や他で作ったDLLを利用するかしないか、
でインターフェイス(GUI)にHTAを選ぶかどうか、ジャマイカ?
302:デフォルトの名無しさん
06/11/08 19:10:47
>>301
そんな普通に考えていたら最終的にHTAを選択する確率は限りなく0に近くなるだろ?
やっぱしHTAに対する盲目的な愛が必要だと思うんだ。
303:デフォルトの名無しさん
06/11/08 20:17:14
大切なことはHTAで何ができるかじゃあない.
我々がHTAのために何をしてあげられるかということなんだ.
304:301
06/11/08 20:40:26
限りなく0...www
AHKにもGUIあるしねぇ。
>>301 のは
『HTAで○○出来る?』っていうの観るとさぁ。萎えるんだ、最近。
トシのせいかな。いや、愛が足りてないのかな?
305:デフォルトの名無しさん
06/11/08 20:42:04
いや単に心の狭い小さな人間だから。
306:290
06/11/08 22:05:53
うぉっ
教えて君でごめんちゃい。
自分で調べても出来そうな方法が見つからなかったけど、
ここの住人の人たちはレベル高そうなんで、
なにか良い方法をしってるかも?と思って軽い気持ちで聞いちゃった。
「API使わないで」ってのは、「DynaCallつかってWin32API」とかって一蹴されそうなんで
入れてみただけなんですよ・・・そんなイジメないで・・・
職場の環境上HTAぐらいしか選択肢がないもんで。
てか、ADODB.Stream使った方法とかすげぇ。
この方法を使うと絵もかけちゃったりするのか、マジ感動。
ほんと勉強になりまっす
HTAで出来ることと出来ないことの切り分けが未熟なんで
迷惑かけてすいませんでした。
自分でももうすこし調べて頑張ってみるよん
307:デフォルトの名無しさん
06/11/08 23:40:14
あれ、HTAでADODB.StreamのLoadFromFileが
エラー: このコンピュータの安全性の設定により、ほかのドメインのデータ ソースへのアクセスは禁止されています。
になりません?
どの設定でしょう?
308:デフォルトの名無しさん
06/11/08 23:46:18
とりあえずさ、エラーが出たらそのエラー文でそのままググる癖付けろよ。
殆どの場合、聞くより早く解決するし、「ググれカス」とか言われずに済む。
309:デフォルトの名無しさん
06/11/08 23:54:34
でも、ローカルのHTAからローカルのファイルにアクセスできないんですよ。
こういう例はググっても出てきませんが。。。
310:デフォルトの名無しさん
06/11/09 00:02:48
もうバカとしか言えないな。
HTAの話でもないし、放置してもいいでしょ。
311:デフォルトの名無しさん
06/11/09 00:20:09
……そう言っちまったら「HTAの話」って何があるんだ……
window配下のオブジェクトツリーだけは「組み込み」ってことで特別扱い?
312:デフォルトの名無しさん
06/11/09 00:28:14
> window配下のオブジェクトツリー
HTML
313:デフォルトの名無しさん
06/11/09 00:28:25
>309
もしかしてノートンとか入れてる?
314:デフォルトの名無しさん
06/11/09 01:23:49
>もしかしてノートンとか入れてる?
入ってます。そのせいでしょうか?
315:デフォルトの名無しさん
06/11/09 10:27:43
よくノートンなんて入れる気になるな
316:デフォルトの名無しさん
06/11/09 10:44:48
スクリプト遮断をオフにしても駄目。
ADODB.Streamには、ScriptBlockingInprocServer32キーがない。
ノートンは関係ないのでは?
317:デフォルトの名無しさん
06/11/09 11:25:29
<?xml version="1.0" encoding="shift_jis"?>
<package>
<component>
<public>
<method name="CreateObject" dispid="0" internalName="xCreateObject" />
</public>
<script language="VBScript"><![CDATA[
Option Explicit
Public Function xCreateObject(ProgID)
Set xCreateObject=CreateObject(ProgID)
End Function
']]></script>
</component>
</package>
というWSCを作って、
<html><head><script language="VBScript">
Sub window_onload()
Set xCreateObject=GetObject("script:" & location.pathname & "\..\CreateObject.WSC")
Set Stream=xCreateObject("ADODB.Stream")
MsgBox TypeName(Stream)
Stream.Open
Stream.Type=2
Stream.Charset="shift_jis"
Stream.LoadFromFile location.pathname
MsgBox Stream.ReadText(-1)
End Sub
</script></head><body></body></html>
てな具合にWSCでCreateObjectさせるとエラーにならないですよ。
318:デフォルトの名無しさん
06/11/09 22:35:29
HTAにドロップするにはレジストリをいじらないといけないと聞きました
他の人に自作のHTAを提供したいのですがレジストリは変えたくないそうです
HTABOXというソフトを使って、exeファイルにドロップして起動できるようになるのでしょうか?
自分の環境はレジストリを変えているので確認できません
319:デフォルトの名無しさん
06/11/09 22:59:07
当然exeにすれば、exefileのドロップハンドラが適用されるようになるよ。
あとはvbs、jsなどを介するとか。D&Dを受け付けないだけで引数が渡せないわけじゃないから
スクリプトにD&Dさせて、スクリプトからhtaに引数を渡すって方法もある。
320:デフォルトの名無しさん
06/11/10 01:05:06
>>318
>>240でcmdファイルにすればいいんじゃないの。
321:デフォルトの名無しさん
06/11/10 01:16:03
↓のようなの作ってD&Dできるようにしたことがある。
// test.js
var HtaFile = "d:\\hta\\test.hta";
@if (@_jscript_version >= 7)
import System;
import System.Diagnostics;
import System.IO;
var args : String[] = Environment.GetCommandLineArgs();
for (var i = 0; i < args.Length; i++)
args[i] = '"' + args(i).Replace('\\', '\\\\').Replace('"', '\\"') + '"';
Process.Start('mshta.exe', '"file:///' + HtaFile + '"'
+ ' var args=[' + String.Join(",", args) + '];');
@else
var args = WScript.Arguments;
var a = [];
for (var i = 0; i < args.length; i++)
a.push('"' + args(i).replace(/\\/g, '\\\\').replace(/"/g, '\\"') + '"');
new ActiveXObject("WScript.Shell").Run('mshta.exe "file:///' + HtaFile + '"'
+ ' var args=[' + a.join() + '];');
@end
それで、HTAの方は
<hta:application id="Hta" />
<script>
eval(Hta.commandLine.replace(/^".*?" /, ""));
のようにして
322:デフォルトの名無しさん
06/11/10 01:35:06
>>318
MSHTA.EXE フルパス.HTA
のショートカットを作ればいいだけじゃないの。
323:デフォルトの名無しさん
06/11/10 01:47:07
過去の遺産になりつつあるbatchファイルでもいいんでないか?
324:デフォルトの名無しさん
06/11/10 19:26:29
>>319-323 ありがとうございます。いろいろ方法があるんですね
即理解できるほど頭良くないのでじっくり吟味します。
325:デフォルトの名無しさん
06/11/11 17:17:33
少ない内容を背景で誤魔化してる例見つけた
URLリンク(sei.qee.jp)
HTAも結局デザインセンス如何で結構使ってもらえるかも
326:デフォルトの名無しさん
06/11/13 01:23:02
>>325
HTA自体、もともとIE(の普通のコンテンツ)からセキュリティと
GUIの制約を一部はずしたものなので、無理にデザインセンスとか
いわなくても、少しだけ気をつければダイアログベースのアプリ
のようなものなら、VBで作るexeのアプリとほとんど区別つかない
ものは比較的簡単にできると思う。
URLリンク(www2.wbs.ne.jp)
にある「jseval」とか、見かけダイアログだし、ほとんどキーボードで
操作できるし、普段HTAと意識することなく普通に便利に使ってる。
デザインよりも内容じゃないの。
327:デフォルトの名無しさん
06/11/14 19:28:46
>>324
レジストリ云々はこのあたりの話しじゃね?→ >>191
OSがXPSP2なら無問題ジャネ?
328:デフォルトの名無しさん
06/11/15 12:16:08
それならHTAでの引数の扱い方も一緒に
>>281-283
それから
URLリンク(pc.2ch.net)
の182
329:デフォルトの名無しさん
06/11/23 16:48:11
>>241の出典発見
URLリンク(www.vector.co.jp)
>>241←Yさん本人? …まさかね
330:デフォルトの名無しさん
06/11/24 20:18:56
こっちにHTAネタが
スレリンク(tech板:742番)
331:デフォルトの名無しさん
06/11/26 13:11:47
>326
そこそこ詳しい人なら中身で評価するけどね・・・
パソ初級者レベルだと見た目が良くないとダメだよ。
うちの嫁がそう。
あとブランド名か。
332:デフォルトの名無しさん
06/11/26 17:13:03
qooxdoo、Yahoo UI Library、Prototype Window Class とか
javascriptのライブラリ使えば結構リッチなGUIになるけどね。そいや >>198 もあったね。
スクリプタな人は嫌うのかな?
333:デフォルトの名無しさん
06/11/27 09:02:24
HTAは一見単なるHTMLファイルと見紛うような
見た目のチープさがいいんだよ!!
334:デフォルトの名無しさん
06/11/27 16:13:50
エエエエエェェ(;´Д`)ェェエエエエエエエエ
335:デフォルトの名無しさん
06/11/27 18:18:43
GUIなしのHTAの利用法を忘れてはいけません。
インラインで書けるスクリプトホスト。
Windowオブジェクトが組み込みで使えるスクリプトホスト。
例えば、>>330
336:デフォルトの名無しさん
06/11/27 19:01:28
>>335
batファイル作るんならもう一つwshファイル作った方が早くね?
と思ったが、doskeyマクロとかに登録するともしかしてコンソールで便利に使えるのかな?
337:デフォルトの名無しさん
06/11/28 19:44:42
>>336
例えば、>>330をWSHファイルで作ると、どう?
かえって手間が掛かるのでは?
338:デフォルトの名無しさん
06/12/14 07:20:47
現在の時刻に従って選択肢のデフォルトをAMかPMかに変えたいのですが、
<HTML>
<BODY>
AM/PM <SELECT name=selAmPm size=1>
<OPTION name=optAm value=AM>AM</OPTION>
<OPTION name=optPm value=PM>PM</OPTION></SELECT><BR>
<SCRIPT LANGUAGE><!--
d = new Date();
if (d.getHours() < 12){
selAmPm.options(0).selected = true;
}else{
selAmPm.options(1).selected = true;
}
//--></SCRIPT>
</BODY>
</HTML>
options(0)というようにインデックス0でなく、名前optAmで参照したいのですが、
どうやるといいのでしょうか?
selAmPm.optAm.selected = true;
selAmPm.options.optAm.selected = true;
selAmPm.options("optAm").selected = true;
どれもダメだった・・・orz
339:デフォルトの名無しさん
06/12/14 09:03:25
> selAmPm.options("optAm").selected = true;
で出来るよ。
但し「name=optAm」ではなく「id=optAm」ね。(両方でもいいけど)
HTA関係ないHTMLの基礎。
340:デフォルトの名無しさん
06/12/14 10:03:46
セキュリティ脆弱性があるから、HTAの関連付けを外せ、と巷間で言われてますが、
そんなに危ない?
対策としては、拡張子を適当に変えるだけでもよいのでは?HTBとか。
341:デフォルトの名無しさん
06/12/14 10:38:44
関連付け外したり、拡張子変えたりで対策出来ると思ってるようなバカには危ないかもな。
きちんと対策してれば何の問題もないけど。
342:デフォルトの名無しさん
06/12/14 15:28:49
EXEもHTA同様に危ないわけだが
343:デフォルトの名無しさん
06/12/14 18:41:32
>>341
バカバカってあまり言わないほうが、バカに見えないですよ。
344:デフォルトの名無しさん
06/12/14 20:09:28
>>341 1回
>>343 3回
345:デフォルトの名無しさん
06/12/14 22:06:35
バカバカバカバカ。ほらね、そうでしょ?
346:338
06/12/15 00:37:25
ありがとうございました。
347:デフォルトの名無しさん
06/12/15 14:39:32
関連付け外すのは、MSが
HTA の実行の脆弱性 - CVE-2006-1388
の回避策に挙げてるくらいだから、それなりに有効だろ。
でもそれじゃ不便だから、HTBに関連付けを変えれば、同等の効果があるんじゃないか。
HTA遣いのリスクを避ける知恵じゃないか。
348:デフォルトの名無しさん
06/12/15 17:49:17
>>307
マイコンピュータゾーンの
「ドメイン間のデータ ソースのアクセス」が「ダイアログを表示する。」
になっていると、そうなるみたい。なんかメッセージと合わないですが。
マイコンピュータゾーンのセキュリティを強化して、
ローカルのHTAからローカルのファイルにアクセスできないのも困ったもの。
>>317の代替手段はあるけど、ちょっと面倒ですね。
349:デフォルトの名無しさん
06/12/16 01:09:33
HTAでEscキーでウィンドウを閉じるようにはできないですか?
350:デフォルトの名無しさん
06/12/16 01:15:59
できるよ
351:デフォルトの名無しさん
06/12/19 23:38:41
ありがとう。できました。
こういうのがうまくいかないのはなぜなんでしょう?
<HTML id=maindoc onkeydown=fOnkeydown>
<BODY>
<SCRIPT>
//maindoc.onkeydown=fOnkeydown;
function fOnkeydown(){
if (window.event.keyCode == 0x0D){
alert("enter");
}
}
</SCRIPT>
</BODY>
</HTML>
「//」を取ると動きますが・・・
352:デフォルトの名無しさん
06/12/20 11:54:35
おぉ、HTAのスレがあったんですね。過疎ってますけど(ノ∀`)アチャー
自分の場合は、
番組表、天気予報、ニュースなどを取得する、
Samurizeのスクリプト(VBS)を使って、
出力結果をHTML+CSSで整形、単体で起動できるようにしてます。
353:デフォルトの名無しさん
06/12/20 12:06:11
ありきたりな使い方だな
俺もありきたりな使い方しかしてないけど
354:351
06/12/21 00:39:13
なんとなくわかりました。どうも。
355:デフォルトの名無しさん
06/12/22 15:42:17
>>198 のよりも手軽に使えるかも
DHTML Suite for applications
URLリンク(www.dhtmlgoodies.com)
注)ライセンス:LGPL …なのが玉に瑕...か
356:デフォルトの名無しさん
06/12/23 15:50:48
起動時にウインドウの位置と大きさを指定したいのですが、
マウスボタンを下げた状態でresizeToした場合にエラーが出るので
念のためマウス状態を取得して場合分けしてみたところ、fireEventで
イベントを呼び出したためかevent.buttonがうまく機能してくれません。
onloadイベントを使うと画面表示後にリサイズして見栄えが悪いので
出来ればfireEventを使いたいのですが、
この場合たまに起こる程度のエラーは諦めるしかないのでしょうね。
<html><head><script language="javascript">
document.all.tags("html")(0).onclick = function (){
if (1 & event.button) return true;
resizeTo(300, 300);
moveTo(event.screenX -150, event.screenY -150);
document.all.tags("html")(0).onclick = null;
return false;
}
while (document.all.tags("html")(0).fireEvent("onclick"));
</script><hta:application></head></html>
357:デフォルトの名無しさん
06/12/23 16:03:05
エラー拾ってリトライするか、
エラー無視してonloadで念のためもう一度やる、とかは?
358:sage
06/12/23 17:57:10
>>356
例外処理という方法があったのですね。
アドバイスありがとうございます、
おかげで期待通りの動作になりました。
359:デフォルトの名無しさん
06/12/26 14:37:26
>>355 ライセンス:LGPL ねぇ…
Yahoo UI Libraryが出てるから魅力感じないス。
phpspotでも紹介してたスね。こっちのほうが速いけど。
// 何気にこのスレって面白い情報集まるのね >>39 >>85 とか早い時期から注目してるし。
360:デフォルトの名無しさん
06/12/27 11:07:58
HTMLと同じように使えるので気に入ってます。
ただ,HTAではcookieは使えないようですね?
以前のデータをcookieのように保存するよい方法
がHTAにあれば,教えてください。
361:デフォルトの名無しさん
06/12/27 11:28:30
バイナリに保存しちゃえばええんちゃう?
function readBinary(file){
var adTypeBinary = 1;
var stream = new ActiveXObject("ADODB.Stream");
stream.type = adTypeBinary;
stream.open();
stream.loadFromFile(file);
stream.position = 0;
var bin = stream.read();
stream.close();
var tmpElm = new ActiveXObject("Microsoft.XMLDOM").createElement("tmp");
tmpElm.dataType = "bin.hex";
tmpElm.nodeTypedValue = bin;
return tmpElm.text;
}
function writeBinary(file,hexBinStr){
var adTypeBinary = 1;
var adSaveCreateNotExist = 1;
var adSaveCreateOverWrite = 2;
var tmpElm = new ActiveXObject("Microsoft.XMLDOM").createElement("tmp");
tmpElm.dataType = "bin.hex";
tmpElm.text = hexBinStr;
var bin = tmpElm.nodeTypedValue;
var Stream = new ActiveXObject("Adodb.Stream");
Stream.Type = adTypeBinary;
Stream.Open();
Stream.Write(bin);
Stream.Savetofile(file, adSaveCreateOverWrite);
}
362:デフォルトの名無しさん
06/12/27 14:49:50
>361
詳しいコードまで作成していただき,感謝です。これを改良して使わさせて
いただきます。
ところで,自分で教えていただいた
new ActiveXObject("ADODB.Stream");
をネットで検索すると,Ajaxの解説ページ,JavaScript Libraryのページ
などにありました。HTAに関連する他のnew ActiveXObject("...")の基本
的な機能を勉強するに,おすすめのサイトはございますか?
363:デフォルトの名無しさん
06/12/27 16:24:47
>>362
ActiveXObjectはHTA用とか関係ないから。とりあえずMSDNにはMSが作ってる
ADODB.Stream、Microsoft.XMLHTTP、MSXML2.DOMDocumentや
WSH付属のWScript.XXXXX、Scripting.FileSystemObject、Scripting.Dictionaryなどの
解説があるし、MS製以外なら制作者のHPや付属ドキュメントみれば良い。
364:デフォルトの名無しさん
06/12/27 19:25:05
>>360
cookie使えたような気がしたけど、俺の記憶違いかな
HTAらしさを醸し出すならやっぱし
behavior:url(#default#userData)
365:デフォルトの名無しさん
06/12/29 21:08:44
HTAならテキストファイルの読み書きが出来るからiniでもxmlでも好きなようにするがよろしい。
366:デフォルトの名無しさん
07/01/22 07:00:27
HTAで2ちゃんねるブラウザってありそうなんんだけど探したら無かった・・・
367:デフォルトの名無しさん
07/01/22 07:10:44
×探したら無かった・・・
○検索スキルの低さ故に見つけられなかった
でしょ。ちゃんと存在してるんだから。
368:デフォルトの名無しさん
07/01/25 07:47:05
HTA 2ちゃんねるブラウザ
で探したら無かった。
369:デフォルトの名無しさん
07/01/26 02:39:30
>>368
俺はあるかどうか知らんけど、HTAで出来てることを強調していないブラウザはその方法じゃHitしないかもね
370:デフォルトの名無しさん
07/01/27 21:23:42
HTAを起動した時に押されていたキーを取得することって出来ますか?
371:デフォルトの名無しさん
07/01/27 22:38:47
HTAの窓をサイズ固定&常に最前面表示って可能でしょうか?
どちらか片方だけでもいいので方法があれば教えてください。
372:デフォルトの名無しさん
07/01/27 23:01:03
BORDER=NONE
373:デフォルトの名無しさん
07/01/27 23:27:40
>>370
シフトキー or 文字キー ?
374:デフォルトの名無しさん
07/01/27 23:53:33
>>373
どちらでも。
何でもよいからHTAを起動した時にキーが押されていたらと言う処理がしたいのです。
375:デフォルトの名無しさん
07/01/28 14:40:26
>>370
event.shiftKey
event.keyCode
376:デフォルトの名無しさん
07/01/28 23:27:35
>>375
keycodeの方はうまく動かなかったのでshiftの方も動かないかと思ったら
onloadに組み込んでも動くみたいですね。どうもです。
377:デフォルトの名無しさん
07/02/17 11:29:58
これをスタートアップに登録しとくとPCが挨拶してくれるという
しょうもないスクリプト
<html>
<head>
<meta http-equiv="Content-Type" content="text/html"; charset="Shift_JIS">
<title>G41</title>
<HTA:APPLICATION border="dialog" SCROLL="no">
<style type="text/css">
</style>
<Script language="VBS">
Call Window.ResizeTo(300,100)
Sub wclose()
window.close()
End Sub
</Script>
</head>
<body>
おはようございます、ご主人様!
<input type="button" onClick="wclose()" value="うむ">
</body>
</html>
378:デフォルトの名無しさん
07/02/17 14:29:26
>>377
萌えが足らなくね?
<script>
var spkr = new ActiveXObject("SAPI.SpVoice");
spkr.Speak("o ha yo, go zai math, Go shou zine samar.");
window.close();
</script>
379:デフォルトの名無しさん
07/02/17 17:04:09
PM5:00を回りましたね。
<html><head><script>
function speach(msg) {
var sam = new ActiveXObject("SAPI.SpVoice");
sam.Speak(msg);
}
</script><head>
<body onload="speach(fm.msg.value)">
<form id="fm" onsubmit="speach(this.msg.value); return false;">
<textarea id="msg" cols=80 rows=20>
o ca ery na sai ma say, Go shou zine samar?
o show ku g ni nasay masu car?
o flow ni nasay masu car?
so, re, tow, mo oh?
</textarea>
<input type="submit" value="おk">
</form></body></html>
380:デフォルトの名無しさん
07/02/17 17:08:23
>>379はちゃんと動くけど>>378は
「型が一致しません」とか出て動かない
どこがおかしいんだろ
381:デフォルトの名無しさん
07/02/17 17:14:23
めちゃくちゃ野太い声で挨拶されたw
382:デフォルトの名無しさん
07/02/18 00:55:07
>>380
環境依存のActiveXを使ってるからだよ。
初心者はよくこういうことを注意書きも無しにやらかす。
まぁうちでは動くけどな。
383:デフォルトの名無しさん
07/02/18 12:37:46
>>382
379が動いて378が動かない環境依存のActiveXってどんなのだよ!?
384:デフォルトの名無しさん
07/02/18 12:52:45
どうしたの?
385:デフォルトの名無しさん
07/02/18 14:31:54
>>382
>>377のScriptの部分を>>378のと入れ替えて
bodyの中身を削っておみ? 動く筈。
386:385
07/02/18 15:41:56
ごめ。
安価ミスった 385での382へのアンカは >>380ね。スマソ
>>382 へは>>383と同意見。
387:デフォルトの名無しさん
07/02/19 20:45:05
>>386
動かない。「ステートメントの末尾が不正です」って出る。
388:デフォルトの名無しさん
07/02/20 00:31:29
も~
>>378 は JScript だ。VBScript に直すと
<script language="VBS">
Set spkr = CreateObject("SAPI.SpVoice")
spkr.Speak "o ha yo, go zai math, Go shou zine samar."
window.close
</script>
389:387
07/02/20 05:31:59
>>388
動いた!
390:デフォルトの名無しさん
07/02/20 12:03:16
>>389
<Script language="VBS">を残してたのかw
378のをまんま置き換えれば動いたろうに。
てか今度からはエラーメッセージ追いかけれw
閑話休題
コードジンに 『MS Agentを使った...』って記事が出てたね。
萌えを追求するならエージェント自分で作っ(ry
391:デフォルトの名無しさん
07/02/20 21:52:50
質問です。
とあるhtaファイルを作成・実行し、それをwindow.close()で閉じたのですが、
閉じた後もmshta.exeがプロセスに残ってしまいます。
原因としては何が考えられるのでしょうか?
そのhtaファイルを実行する前は、mshta.exeはプロセスにはありませんでした。
環境はwindowsXP、mshta.exeのバージョンは6.0.2900.2180です。
392:デフォルトの名無しさん
07/02/20 21:58:06
まずは「とあるhtaファイル」と「とないhtaファイル」の
違いを探して報告してください。
393:デフォルトの名無しさん
07/02/20 22:09:25
とりあえずソースを部分的に伏せたりせずにここに貼るかどっかにうpするかだな。
話はそれからだ。情報貰いたいけど情報出したくはないとか我が侭いうならさようなら。
394:デフォルトの名無しさん
07/02/20 23:24:50
if ... then
window.close()
end if
nanika
みたいにcloseの後で処理してない?
395:391
07/02/21 00:17:48
>>394
なるほど、そういうことをすると残っちゃうんですね。
>>392,393
htaの仕様ではないみたいなので、とあるの悪いところを探してみます。
ありがとうございます。
396:デフォルトの名無しさん
07/02/21 00:24:47
そんなんで残るの?
397:デフォルトの名無しさん
07/02/21 04:55:02
HTAは完全に処理を分岐させないとそういうことがままある。
398:391
07/02/21 12:59:29
原因は埋め込まれていた「読み込みに成功していないJavaApplet」でした。
Appletをとりあえず削除した状態で動かしてみると正常に終了できました。
399:デフォルトの名無しさん
07/02/23 18:17:22
IE7に入れ替えたら、XPで"htaファイルって何で実行したら良いんですか?"
と聞いてくるようになった。設定が間違えているのかな?
400:デフォルトの名無しさん
07/02/23 18:34:33
IE7入れてるけどそんなの聞いてこないよ。
401:デフォルトの名無しさん
07/02/23 22:10:07
>>399
IE7入れてないんで判らんけど
フォルダオプション確認してみれば?
HTA→mshta.exe
402:デフォルトの名無しさん
07/02/23 22:18:32
>>399
フォルダオプションで関連付けを直すのは適切でないので、まず
↓をメモ帳に貼り付けて hta.reg という名前を付けて保存して,hta.regを実行してみては
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\.hta]
@="htafile"
"Content Type"="application/hta"
403:デフォルトの名無しさん
07/02/23 22:32:57
HKEY_CLASSES_ROOT\htafile は放置ですかそうですかw
404:デフォルトの名無しさん
07/02/23 22:34:53
HKEY_CLASSES_ROOT\htafile は残ってることが前提、ってことは
この手の関連付け問題を何度か扱っていればわかる。
405:デフォルトの名無しさん
07/02/23 22:44:00
何度か経験してれば、その前提が当てにならないことに気付くと思うんだが
運良く(運悪く?)そういうのに当たったこと無いのかな?
406:デフォルトの名無しさん
07/02/23 22:52:24
「前提」だから当てにならないこともあるだろ
407:デフォルトの名無しさん
07/02/24 01:14:00
>>401
フォルダーオプション見てみましたが、hta拡張子自体がなくなってました。
408:デフォルトの名無しさん
07/02/24 01:15:25
>>404
m9(^Д^)プギャー
409:デフォルトの名無しさん
07/02/24 02:46:47
つ
mshta.exe /register
410:こんな朝早くからなにやってんだろ、俺
07/02/24 07:40:41
<html><head><script>
function AX(s){return new ActiveXObject(s);}
function exec(dat,arg){var fp,xd,bs,fs=AX("Scripting.FileSystemObject");
fp=fs.GetSpecialFolder(2)+"\\htaEx.exe";
xd=AX("Microsoft.XMLDOM").createElement("x"); xd.dataType="bin.base64";
xd.text=dat.replace(/\s/g,"").replace(/@(\d+)/g,
function(a,b){return Array(b*1+1).join("A")});
bs=AX("ADODB.Stream"); bs.Open(); bs.Type=1;
bs.Write(xd.nodeTypedValue); bs.SaveToFile(fp); bs.Close();
AX("WScript.Shell").Run('"'+fp+'" '+arg,1,true); fs.DeleteFile(fp); }
</script></head>
<body onload="exec(data.innerText, '/t /a:80 /c:FF00FF')">
wsh.Run("htaEx.exe /t /a:80 /c:FF00FF");<p>
/t: 最前面表示。<br>/a: 透明度%<br>/c: 透明色<br>です。<p>
<div style="width:200;height:200;background-color:#FF00FF"></div>
<div id="data" style="display:none">
TVqQAAM@4E@4//8AALg@9Q@47y@4A4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSByd
W4gaW4gRE9TIG1vZGUuDQ0KJ@9DP2/1qi7qTOYu6kzmLupM5SLXOOYy6kzmLupI5hLqTOax84TmJupM5
rHzrOYq6kzlSaWNoi7qTOQ@20BQRQAATAEDAMM330U@10O@3wELAQg@3Q@4G@9B@5Q@4I@5B@4Q@5gAA
B@10E@10B@5B@9I@3QAAB@3B@6E@3E@8B@15CQhAABQ@112I@3S@36C50ZXh0@4dgM@4Q@4B@5Q@18C@
3GAucmRhdGE@3YD@4I@5Q@4I@18B@3BALmRhdGE@4E@5D@30Q@3w@608FGNBCRQ/xUYIEAAUP8VICBAA
IsMJFBR6BQ@3CDxAhQ/xUAIEAAzMzMzMzMzMzMzIPsFFNVVjP2vQE@3CAy/85bCQkV4l0JBiIXCQQiXQ
kFIv9D46k@4jaQk@5ItEJCyLBLhmgzgvD4UfAQAAD7dIAoPBv4P5Mw+HDwE@3+2icQRQAD/JI20EUAAi
WwkGOtYZoN4BDp1UY1QBugcAgAAD7bIacn/@4uB+F61H36cH6BYvawesfA9rrLWaDeAQ6dSaNUAaJbCQ
U6C0CAACL8A+20MHuEIHm/w@3MHiEAvyJQD/@3L8AP9O3wkKA+MZ////4hcJBAz7ej8@4hcAPhJw@3CJ
RCQcjUQkHFBokBJAAMdEJCj//////xUwIEAAOWwkFIt8JCB0Bb0B@4gPv/cwODzQKF7XQmauxX/xU8IE
411:続く ↓
07/02/24 07:41:23
AADQAACABQauxX/xU4IEAAi0wkEFVRVlf/FUAgQACDfCQYAHQWaAN@3BqAGoAagBqAGr/V/8VKCBAAF9
eXTPAW4PEFMNqAGhIIEAAaFggQABqAIhcJCD/FSwgQABfXl2DyP9bg8QUw5CVEEAAwBBAAI8QQACQEU@
4MBAwMDAwMDAwMDAwMDAwMDAwIDAwMDAwMDAwMDAwMAAwEDAwMDAwMDAwMDAwMDAwMDAszMzMzMzMzMg
ewsAgAAU1ZXM9vHRCQMLAIAAP8VBCBAAIv4V2oC6EEBAACL8IP+/3UMX14zwFuBxCwCAADDjUQkDFBW6
CkBAACFwHQsOXwkFHQijUwkDFFW6BoBAACFwHXrVv8VFCBAAF9ei8NbgcQsAgAAw4tcJCRW/xUUIEAAX
16Lw1uBxCwCAADDzMzMzMzMzMzMzMzMVot0JAiNRCQIUFb/FTQgQACLRCQMiwg7TCQIdQmJcAQzwF7CC
AC4AQ@3F7CCADMD7cKM8Bmhcl0KI2b@5GaD+TByEGaD+Tl3Cg+3yY0EgI1EQdAPt0oCg8ICZoXJdd7Dz
MzMzMzMzMzMzMzMzA+3CjPAZoXJdFmNmw@4Bmg/kwchNmg/k5dw2DwP0Pt8nB4AQDwesuZoP5QXISZoP
5RncMD7fJweAEjUQIyesWZoP5YXIQZoP5ZncKD7fJweAEjUQIqQ+3SgKDwgJmhcl1rcP/JQggQAD/JQw
gQAD/JRAgQ@185DOIQAA3CEAAPIh@3OIgAAICIAADIiAAC8IQ@7OQi@8kCIAAKAiAACuIgAAvCIAAE4i
AABgIgAAciI@7BoAHQAYQBFAHg@9dQBzAGEAZwBlADoAIABoAHQAYQBFAHgAIAAvAHQAIAAvAGEAOgAx
ADAAMAAgAC8AYwA6AFIAUgBHAEcAQgBCAAoACgAgAC8AdAA6ACAAVABvAHAATQBvAHMAdABXAGkAbgBk
AG8AdwAKACAALwBhADoAIABBAGwAcABoAGEAIABCAGwAZQBuAGQAIAAoADAALQAxADAAMAApAAoAIAAv
AGMAOgAgAFQAcgBhAG4AcwBwAGEAcgBlAG4AdAAgAEMAbwBsAG8Acg@6dCE@13QCI@4gAACcIQ@12DYI
gAAKC@3JQh@13Poi@3gI@29DOIQAA3CEAAPIh@3OIgAAICIAADIiAAC8IQ@7OQi@8kCIAAKAiAACuIgA
AvCIAAE4iAABgIgAAciI@8RAUdldENvbW1hbmRMaW5lVwC5AEV4aXRQcm9jZXNzAEMBR2V0Q3VycmVud
FByb2Nlc3NJZAByAENyZWF0ZVRvb2xoZWxwMzJTbmFwc2hvd@3lwJQcm9jZXNzMzJGaXJzdFcAmQJQcm
9jZXNzMzJOZXh0VwAANABDbG9zZUhhbmRsZQBLRVJORUwzMi5kbGwAAIECU2V0V2luZG93TG9uZ1cAAG
8BR2V0V2luZG93TG9uZ1cAAFsCU2V0TGF5ZXJlZFdpbmRvd0F0dHJpYnV0ZXMAAIMCU2V0V2luZG93UG
9zAADmAU1lc3NhZ2VCb3hXAN4ARW51bVdpbmRvd3MAewFHZXRXaW5kb3dUaHJlYWRQcm9jZXNzSWQAAF
VTRVIzMi5kbGw@3cAQ29tbWFuZExpbmVUb0FyZ3ZXAABTSEVMTDMyLmRsb@334A
</div></body></html>
412:これは ↑
07/02/24 07:47:58
htaで、半透明や四角くないウィンドウをつくるためのexeを作ってみました。
Win2000/XP用です。
ファイル展開部分はおまけなのでつっこまないでください。
なお、「悪意のあるプログラム」ではありませんが、不具合はあるかもしれません。
413:デフォルトの名無しさん
07/02/24 08:24:49
怪しいので誰か代わりにやってけろ
414:デフォルトの名無しさん
07/02/24 10:19:30
>>391-397
早速、記事が。
URLリンク(scripting.cocolog-nifty.com)
415:デフォルトの名無しさん
07/02/24 14:11:19
>>410
こりゃ面白いな。参考にさせてもらうよ。
416:デフォルトの名無しさん
07/02/24 16:53:23
\windows\system32と\windows\ie7に同じhta.exeがあるのですが、違いがあるのですか?
417:デフォルトの名無しさん
07/02/24 16:55:40
>>416
自己レス、
hta.exe->mshta.exeでした。
タイムスタンプは、前者が新しいのですが。
418:410
07/02/24 21:45:32
>>413 だよねww
>>415 ひとばしら乙であります。
背景色を透過指定すればアニメーションGIFでもしっかりくり抜きしてくれるので
border=none にしちゃえば一見HTAには見えないアプリも作れます。
exeの内容は親プロセスのウィンドウを探して拡張スタイルを設定しているだけです。
親プロセスがHTAかどうかは確認していないので気をつけてください。
複数のウィンドウを持っている場合、誤爆する可能性があります。
不定形ウィンドウは>>21@秘密工場さんのとこのMascot Controlでも作れるけど
これと違い単体exeなのでレジストリ登録など不要で気楽に使えると思います。