1 名前:あらかわ [2005/08/21(日) 02:46:02 ] 過去スレ HTA研究会 piza2.2ch.net/tech/kako/996/996763278.html Web制作板のHTAスレ pc8.2ch.net/test/read.cgi/hp/1068286485/ あとはまかせた
241 名前:デフォルトの名無しさん mailto:sage [2006/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 名前:デフォルトの名無しさん mailto:sage [2006/08/28(月) 13:58:32 ] >>125 mshta.exe "mhtml:res://自分.exe/main.mht" はどうでしょう?
243 名前:デフォルトの名無しさん mailto:sage [2006/08/28(月) 19:40:34 ] mht ってファイル名が全部フルパスに変更されちゃうからローカルファイルだとちょっとハズイ。 それとパッケージされるのは元からhtmlにリンクされているファイルだけみたいだけど スクリプトで動的に表示したい画像ファイルとかはどうやって保存する? IE以外に作成ツールとかあるのかな?
244 名前:デフォルトの名無しさん mailto:sage [2006/08/28(月) 20:00:22 ] >>117 目隠し程度でよいのなら、以下はどうでしょう? +ADwASABUAE0ATAA+ADwASABFAEEARAA+- +ADwAUwBDAFIASQBQAFQAIABsAGEAbgBnAHUAYQBnAGUAPQB2AGIAcwBjAHIAaQBwAHQAPg- +AFMAdQBiACAAdwBpAG4AZABvAHcAXwBvAG4AbABvAGEAZAAoACk- +AE0AcwBnAEIAbwB4ACAAIjBCMEQwRjBIMEoAIg- +AEUAbgBkACAAUwB1AGI- +ADwALwBTAEMAUgBJAFAAVAA+- +ADwALwBIAEUAQQBEAD4- +ADwAQgBPAEQAWQA+MEswTTBPMFEwUwAgADwALwBCAE8ARABZAD4APAAvAEgAVABNAEwAPg- ぱっと見では、HTMLにはとても見えませんが、 拡張子HTAかHTMLのファイルに保存すれば、実行可能です。
245 名前:デフォルトの名無しさん mailto:sage [2006/08/28(月) 20:09:45 ] >>243 IEでなく、CDO.Messageを使うと、Content-IDでリンクされます。 CDO.Messageなら、いろいろ操作できてよいのでは。
246 名前:デフォルトの名無しさん mailto:sage [2006/08/28(月) 20:11:26 ] >>116 named pipeでなく、anonymous pipeで標準入力に渡せばよいのでは? >>114 しかし、そうやってHTAファイルを隠したところで、 所詮、右クリックの「ソースの表示」で見えちゃうのでは?
247 名前:デフォルトの名無しさん mailto:sage [2006/09/01(金) 23:17:42 ] >>246 HTA:APPLICATIONタグで 右クリック禁止にしておけばいいんじゃないの?
248 名前:デフォルトの名無しさん mailto:sage [2006/09/02(土) 11:29:51 ] Vistaでは、簡単にHTAの背景透過できるんかな
249 名前:デフォルトの名無しさん mailto:sage [2006/09/02(土) 13:54:28 ] >>247 コンテキストメニューのほうは抑止できますが、^pの印刷は抑止できます? 印刷設定ダイアログ表示中にテンポラリフォルダを見るとソースがあります。 この方法はダイアログなどにも使えます。
250 名前:デフォルトの名無しさん mailto:sage [2006/09/02(土) 18:44:23 ] クライアントで読む必要があるものを隠そうとするのは不毛の道
251 名前:デフォルトの名無しさん mailto:sage [2006/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 名前:デフォルトの名無しさん mailto:sage [2006/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 mailto:sage [2006/09/03(日) 17:01:52 ] 一応補足。 Zipフォルダが使える環境でないと動かないはず。 逆にエクスプローラでフォルダとして扱えればLHAでもCABでもなんでもいけるはず。
254 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 17:49:25 ] >>249 そもそもHTAをのぞけばソース見えちゃうんだし。 テンポラリ漁ってまで見たいような人にはどんな対策をしても無駄だと思うけど。
255 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 19:23:21 ] Windows Script Encoder みたいな仕組みはないのかな?
256 名前:デフォルトの名無しさん mailto:sage [2006/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 名前:デフォルトの名無しさん mailto:sage [2006/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 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 21:31:29 ] HTAで、ShellNameSpaceが、XP SP2より後の修正で、使えなくなりました。 セキュリティ絡みでしょうか。 これを使うHTAが駄目に。回避方法はないでしょうか? ADODB.StreamのLoadFromFileも、HTAで、使えません。 「エラー: このコンピュータの安全性の設定により、ほかのドメインのデータ ソースへのアクセスは禁止されています。」 HTML+SCなら使えるのに、なんで? ShellNameSpaceと同じ修正が関係? 使ってる人、多そうなのに大丈夫でしょうか。
259 名前:デフォルトの名無しさん mailto:sage [2006/09/09(土) 14:22:17 ] >>249 に突っ込まないのはこのスレの方針? IEとHTAとHTABOXの機能をごっちゃにしてるみたいなんだけど。
260 名前:デフォルトの名無しさん mailto:sage [2006/09/09(土) 14:59:19 ] じゃあお前が突っ込めばいいのでは?
261 名前:デフォルトの名無しさん mailto:sage [2006/09/09(土) 15:25:12 ] せっかく静かに流れてたんだからスルーしとこうヨ
262 名前:258 mailto:sage [2006/09/09(土) 15:39:27 ] ShellNameSpace HTAでは使えなくなりましたが、HTAから出したダイアログ内では使えます。 コントロールが、わざわざダイアログかどうかをチェックして、 ダイアログでなかったら使えないようにすることに、 何かメリットがあるとは思えないので、 よくある、セキュリティ上の問題を回避、軽減する弥縫策でしょうか。 なので、HTAでShellNameSpaceを使うときの回避策は、 HTAからダイアログを出して、その中でShellNameSpaceを使うことです。 ファイルが2つに分かれるのが面白くないので、ひとつで済ます方法を 2パターン考えました。 自身をダイアログで呼び出し、中で切り分ける。 空のダイアログを作って中身を書き換える。 どちらも、使い慣れてないせいか、かなり面倒でした。
263 名前:デフォルトの名無しさん [2006/09/18(月) 11:42:58 ] htaでグーグルマップのAPIを使ったアプリは作成できるのかな。 問題点があるとしたらなんだろう。
264 名前:デフォルトの名無しさん mailto:sage [2006/09/18(月) 23:29:30 ] 用途が思いつかないことかな。
265 名前:デフォルトの名無しさん mailto:sage [2006/09/21(木) 00:51:04 ] HTAでframeを使いたいときは、必ずソースファイルのhtmを 用意する必要があるんですかね? 何がしたいかというと、bodyから何から全てスクリプトで動的に 生成していきたいのです。
266 名前:デフォルトの名無しさん mailto:sage [2006/09/21(木) 00:53:42 ] >>265 document.writeしてもだめだったっけ?
267 名前:デフォルトの名無しさん mailto:sage [2006/09/21(木) 01:26:07 ] >>265 >>256 みたいに <frame src=javascript:'HTML記述'> <frame src=vbscript:"HTML記述"> はどうでしょう。
268 名前:デフォルトの名無しさん mailto:sage [2006/09/22(金) 15:27:27 ] わざわざframe使わなくても,div(或いはtableのtd)の中身を動的に生成するのじゃだめなの?
269 名前:デフォルトの名無しさん mailto:sage [2006/09/23(土) 03:17:42 ] >>266 frame タグの仕様で src に URL を指定しないといけないのですが そのURLをファイルとして用意する以外に方法はないかと。 で、>>267 さんの提案を試してみましたがなかなかうまくいきません…。 javascript:document.write(...) でいけるかと思ったのですが失敗。 >>268 たとえば、エラーメッセージと本メッセージでスクロール領域を 分けたいのですよね〜。 frame ってXSSの温床になってるせいもあってかセキュリティも厳しくて、 どうも使い勝手がイマイチなのが残念。
270 名前:デフォルトの名無しさん mailto:sage [2006/09/23(土) 07:49:37 ] <div style="overflow:scroll"></div> でいいやん。
271 名前:デフォルトの名無しさん mailto:sage [2006/09/23(土) 09:31:29 ] 俺もframe要らないと思うよ。 frameが無いと出来ないことってほとんど無いだろうし。
272 名前:267 mailto:sage [2006/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 名前:デフォルトの名無しさん mailto:sage [2006/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 名前:デフォルトの名無しさん mailto:sage [2006/09/25(月) 23:31:53 ] せきゅりちいゾーンがちがうからね。 >>138 とかすればノーガードになる。
275 名前:デフォルトの名無しさん mailto:sage [2006/09/27(水) 00:54:42 ] >>274 さんありがとうございます! うほっ、そんな属性があったとは。ステキ。 自分もまだまだ勉強不足です。 しかしセキュリティゾーンは面倒だなあ。 Vista/IE7になったらもっと面倒になりそう…。
276 名前:デフォルトの名無しさん mailto:sage [2006/10/03(火) 21:54:14 ] >>243 subst
277 名前:デフォルトの名無しさん [2006/10/09(月) 08:04:22 ] 初歩的なことかもしれないけど、教えてください。 やりたいことはフレーム分割をして、それぞれに任意のオブジェクトを配置したいのです。 しかし、タグ解説サイトを見ると、フレームの中身はsrcで指定したhtmlを読ませるだけで frameset、frameタグを書いたファイル自身で、フレーム内の内容を記述する解説が見つかりません。 もちろんHTAでも外部のhtmlを参照できるのは知っていますが、便宜上1ファイルに纏めたいので 上記のことをやる方法を教えてください。現在はとりあえずフレーム自体は表示されるのですが、 frameタグの中に何を書いても一切表示されません。 VBSはだいぶ前から使っているのですが、GUIを作成する手段としてHTAを使い始めたばかりで HTML関連を扱うのはこれが始めてなので悪戦苦闘しています。宜しくお願いします。 とりあえずcols="50,*"で<input type="button"/>を左右に一つずつ配置する サンプルでも書いていただけるとありがたいのですが。
278 名前:デフォルトの名無しさん mailto:sage [2006/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 mailto:sage [2006/10/09(月) 08:55:40 ] 一々open()やwrite()使わないで, frame1.document.body.innerHTML = '<html><body><div><input type="button"/></div></body></html>'; でもよい。
280 名前:277 mailto:sage [2006/10/09(月) 09:26:00 ] >>278-279 なるほど、スクリプトで書くわけですか。 どうりでタグ解説サイトを漁っても見つからないわけだ。 とにかく、教えていただいた document.writeとdocument.body.innerHTMLで 目的は果たせます。ありがとうございました。
281 名前:デフォルトの名無しさん mailto:sage [2006/10/11(水) 21:01:01 ] >>191 関連情報(?)見付けたので投稿してみる HTAで引数を使う ttp://wscript.name/index.php?%B0%FA%BF%F4%A1%CA%A5%B3%A5%DE%A5%F3%A5%C9%A5%B9%A5%A4%A5%C3%A5%C1%A1%CB%A4%F2%BC%F5%A4%B1%BC%E8%A4%EB#t0a550e7 via WSH Lab. 掲示板
282 名前:デフォルトの名無しさん mailto:sage [2006/10/13(金) 16:58:04 ] では、こんなのも。 HTAでコマンドラインの引数を分離するVBScript関数 www.vector.co.jp/soft/win95/prog/se402218.html
283 名前:デフォルトの名無しさん mailto:sage [2006/10/26(木) 18:04:38 ] コマンドライン引数を分離するVBScript関数ってこれじゃだめなの? www.microsoft.com/japan/technet/scriptcenter/resources/qanda/apr05/hey0420.mspx
284 名前:デフォルトの名無しさん mailto:sage [2006/10/26(木) 18:55:37 ] mahta.exe c:\short\path\name\hoge.hta a b c でやってみて。
285 名前:284 mailto:sage [2006/10/26(木) 18:58:20 ] typo mshta.exe
286 名前:デフォルトの名無しさん mailto:sage [2006/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 名前:デフォルトの名無しさん mailto:sage [2006/10/27(金) 01:19:17 ] Console.WriteLi → Console.WriteLine
288 名前:デフォルトの名無しさん mailto:sage [2006/10/27(金) 14:42:29 ] VistaとIE7で、HTAの扱いどうなってんの? 背景透過の容易性とか、アクティブデスクトップ機能とかあるんかいな
289 名前:デフォルトの名無しさん mailto:sage [2006/10/27(金) 18:20:47 ] IE7入れて自分の目で確認したらいい。 OSの差は無いから。
290 名前:デフォルトの名無しさん mailto:sage [2006/11/08(水) 00:28:14 ] HTAでAPIとか使わないで画像の合成して書き出しって可能?
291 名前:デフォルトの名無しさん mailto:sage [2006/11/08(水) 00:31:54 ] BMPぐらいならなんとかできるかも?
292 名前:デフォルトの名無しさん mailto:sage [2006/11/08(水) 00:35:03 ] IMGタグとかフィルタとか
293 名前:デフォルトの名無しさん mailto:sage [2006/11/08(水) 00:57:39 ] やっぱADODB.Streamあたりでごりごりやるのかね……
294 名前:デフォルトの名無しさん mailto:sage [2006/11/08(水) 01:14:14 ] ADODB.StreamもAPIだよ。 Win32APIではないけどね。
295 名前:デフォルトの名無しさん mailto:sage [2006/11/08(水) 01:19:27 ] ……そう言っちまったら「APIでない」のって何があるんだ…… window配下のオブジェクトツリーだけは「組み込み」ってことで特別扱い?
296 名前:デフォルトの名無しさん mailto:sage [2006/11/08(水) 01:45:27 ] 「そう言っちまったら」って…w COMコンポはどう考えたってAPIとしか言えないだろ。
297 名前:BMPをごりごり書いてみたw mailto:sage [2006/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 名前: ↓ 続く mailto:sage [2006/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 名前:デフォルトの名無しさん [2006/11/08(水) 12:56:57 ] >>297-298 これ何?
300 名前:デフォルトの名無しさん mailto:sage [2006/11/08(水) 13:18:07 ] BMPファイルを救う
301 名前:デフォルトの名無しさん mailto:sage [2006/11/08(水) 14:45:44 ] 普通、VBSやJSで処理が可能かどうか、駄目そうなら他のLLではどうか、 C++や他で作ったDLLを利用するかしないか、 でインターフェイス(GUI)にHTAを選ぶかどうか、ジャマイカ?
302 名前:デフォルトの名無しさん mailto:sage [2006/11/08(水) 19:10:47 ] >>301 そんな普通に考えていたら最終的にHTAを選択する確率は限りなく0に近くなるだろ? やっぱしHTAに対する盲目的な愛が必要だと思うんだ。
303 名前:デフォルトの名無しさん mailto:sage [2006/11/08(水) 20:17:14 ] 大切なことはHTAで何ができるかじゃあない. 我々がHTAのために何をしてあげられるかということなんだ.
304 名前:301 mailto:sage [2006/11/08(水) 20:40:26 ] 限りなく0...www AHKにもGUIあるしねぇ。 >>301 のは 『HTAで○○出来る?』っていうの観るとさぁ。萎えるんだ、最近。 トシのせいかな。いや、愛が足りてないのかな?
305 名前:デフォルトの名無しさん mailto:sage [2006/11/08(水) 20:42:04 ] いや単に心の狭い小さな人間だから。
306 名前:290 mailto:sage [2006/11/08(水) 22:05:53 ] うぉっ 教えて君でごめんちゃい。 自分で調べても出来そうな方法が見つからなかったけど、 ここの住人の人たちはレベル高そうなんで、 なにか良い方法をしってるかも?と思って軽い気持ちで聞いちゃった。 「API使わないで」ってのは、「DynaCallつかってWin32API」とかって一蹴されそうなんで 入れてみただけなんですよ・・・そんなイジメないで・・・ 職場の環境上HTAぐらいしか選択肢がないもんで。 てか、ADODB.Stream使った方法とかすげぇ。 この方法を使うと絵もかけちゃったりするのか、マジ感動。 ほんと勉強になりまっす HTAで出来ることと出来ないことの切り分けが未熟なんで 迷惑かけてすいませんでした。 自分でももうすこし調べて頑張ってみるよん
307 名前:デフォルトの名無しさん mailto:sage [2006/11/08(水) 23:40:14 ] あれ、HTAでADODB.StreamのLoadFromFileが エラー: このコンピュータの安全性の設定により、ほかのドメインのデータ ソースへのアクセスは禁止されています。 になりません? どの設定でしょう?
308 名前:デフォルトの名無しさん mailto:sage [2006/11/08(水) 23:46:18 ] とりあえずさ、エラーが出たらそのエラー文でそのままググる癖付けろよ。 殆どの場合、聞くより早く解決するし、「ググれカス」とか言われずに済む。
309 名前:デフォルトの名無しさん mailto:sage [2006/11/08(水) 23:54:34 ] でも、ローカルのHTAからローカルのファイルにアクセスできないんですよ。 こういう例はググっても出てきませんが。。。
310 名前:デフォルトの名無しさん mailto:sage [2006/11/09(木) 00:02:48 ] もうバカとしか言えないな。 HTAの話でもないし、放置してもいいでしょ。
311 名前:デフォルトの名無しさん mailto:sage [2006/11/09(木) 00:20:09 ] ……そう言っちまったら「HTAの話」って何があるんだ…… window配下のオブジェクトツリーだけは「組み込み」ってことで特別扱い?
312 名前:デフォルトの名無しさん mailto:sage [2006/11/09(木) 00:28:14 ] > window配下のオブジェクトツリー HTML
313 名前:デフォルトの名無しさん mailto:sage [2006/11/09(木) 00:28:25 ] >309 もしかしてノートンとか入れてる?
314 名前:デフォルトの名無しさん mailto:sage [2006/11/09(木) 01:23:49 ] >もしかしてノートンとか入れてる? 入ってます。そのせいでしょうか?
315 名前:デフォルトの名無しさん mailto:sage [2006/11/09(木) 10:27:43 ] よくノートンなんて入れる気になるな
316 名前:デフォルトの名無しさん mailto:sage [2006/11/09(木) 10:44:48 ] スクリプト遮断をオフにしても駄目。 ADODB.Streamには、ScriptBlockingInprocServer32キーがない。 ノートンは関係ないのでは?
317 名前:デフォルトの名無しさん mailto:sage [2006/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 名前:デフォルトの名無しさん mailto:sage [2006/11/09(木) 22:35:29 ] HTAにドロップするにはレジストリをいじらないといけないと聞きました 他の人に自作のHTAを提供したいのですがレジストリは変えたくないそうです HTABOXというソフトを使って、exeファイルにドロップして起動できるようになるのでしょうか? 自分の環境はレジストリを変えているので確認できません
319 名前:デフォルトの名無しさん mailto:sage [2006/11/09(木) 22:59:07 ] 当然exeにすれば、exefileのドロップハンドラが適用されるようになるよ。 あとはvbs、jsなどを介するとか。D&Dを受け付けないだけで引数が渡せないわけじゃないから スクリプトにD&Dさせて、スクリプトからhtaに引数を渡すって方法もある。
320 名前:デフォルトの名無しさん mailto:sage [2006/11/10(金) 01:05:06 ] >>318 >>240 でcmdファイルにすればいいんじゃないの。
321 名前:デフォルトの名無しさん mailto:sage [2006/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 名前:デフォルトの名無しさん mailto:sage [2006/11/10(金) 01:35:06 ] >>318 MSHTA.EXE フルパス.HTA のショートカットを作ればいいだけじゃないの。
323 名前:デフォルトの名無しさん mailto:sage [2006/11/10(金) 01:47:07 ] 過去の遺産になりつつあるbatchファイルでもいいんでないか?
324 名前:デフォルトの名無しさん mailto:sage [2006/11/10(金) 19:26:29 ] >>319-323 ありがとうございます。いろいろ方法があるんですね 即理解できるほど頭良くないのでじっくり吟味します。
325 名前:デフォルトの名無しさん mailto:sage [2006/11/11(土) 17:17:33 ] 少ない内容を背景で誤魔化してる例見つけた ttp://sei.qee.jp/program/hta/sample/bmi.html HTAも結局デザインセンス如何で結構使ってもらえるかも
326 名前:デフォルトの名無しさん [2006/11/13(月) 01:23:02 ] >>325 HTA自体、もともとIE(の普通のコンテンツ)からセキュリティと GUIの制約を一部はずしたものなので、無理にデザインセンスとか いわなくても、少しだけ気をつければダイアログベースのアプリ のようなものなら、VBで作るexeのアプリとほとんど区別つかない ものは比較的簡単にできると思う。 ttp://www2.wbs.ne.jp/~kanegon/ にある「jseval」とか、見かけダイアログだし、ほとんどキーボードで 操作できるし、普段HTAと意識することなく普通に便利に使ってる。 デザインよりも内容じゃないの。
327 名前:デフォルトの名無しさん mailto:sage [2006/11/14(火) 19:28:46 ] >>324 レジストリ云々はこのあたりの話しじゃね?→ >>191 OSがXPSP2なら無問題ジャネ?
328 名前:デフォルトの名無しさん mailto:sage [2006/11/15(水) 12:16:08 ] それならHTAでの引数の扱い方も一緒に >>281-283 それから pc.2ch.net/tech/kako/1013/10135/1013527404.html の182
329 名前:デフォルトの名無しさん mailto:sage [2006/11/23(木) 16:48:11 ] >>241 の出典発見 ttp://www.vector.co.jp/soft/winnt/util/se408592.html >>241 ←Yさん本人? …まさかね
330 名前:デフォルトの名無しさん mailto:sage [2006/11/24(金) 20:18:56 ] こっちにHTAネタが pc8.2ch.net/test/read.cgi/tech/1055075469/742
331 名前:デフォルトの名無しさん mailto:sage [2006/11/26(日) 13:11:47 ] >326 そこそこ詳しい人なら中身で評価するけどね・・・ パソ初級者レベルだと見た目が良くないとダメだよ。 うちの嫁がそう。 あとブランド名か。
332 名前:デフォルトの名無しさん mailto:sage [2006/11/26(日) 17:13:03 ] qooxdoo、Yahoo UI Library、Prototype Window Class とか javascriptのライブラリ使えば結構リッチなGUIになるけどね。そいや >>198 もあったね。 スクリプタな人は嫌うのかな?
333 名前:デフォルトの名無しさん mailto:sage [2006/11/27(月) 09:02:24 ] HTAは一見単なるHTMLファイルと見紛うような 見た目のチープさがいいんだよ!!
334 名前:デフォルトの名無しさん mailto:sage [2006/11/27(月) 16:13:50 ] エエエエエェェ(;´Д`)ェェエエエエエエエエ
335 名前:デフォルトの名無しさん mailto:sage [2006/11/27(月) 18:18:43 ] GUIなしのHTAの利用法を忘れてはいけません。 インラインで書けるスクリプトホスト。 Windowオブジェクトが組み込みで使えるスクリプトホスト。 例えば、>>330
336 名前:デフォルトの名無しさん mailto:sage [2006/11/27(月) 19:01:28 ] >>335 batファイル作るんならもう一つwshファイル作った方が早くね? と思ったが、doskeyマクロとかに登録するともしかしてコンソールで便利に使えるのかな?
337 名前:デフォルトの名無しさん mailto:sage [2006/11/28(火) 19:44:42 ] >>336 例えば、>>330 をWSHファイルで作ると、どう? かえって手間が掛かるのでは?
338 名前:デフォルトの名無しさん mailto:sage [2006/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 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 09:03:25 ] > selAmPm.options("optAm").selected = true; で出来るよ。 但し「name=optAm」ではなく「id=optAm」ね。(両方でもいいけど) HTA関係ないHTMLの基礎。
340 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 10:03:46 ] セキュリティ脆弱性があるから、HTAの関連付けを外せ、と巷間で言われてますが、 そんなに危ない? 対策としては、拡張子を適当に変えるだけでもよいのでは?HTBとか。
341 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 10:38:44 ] 関連付け外したり、拡張子変えたりで対策出来ると思ってるようなバカには危ないかもな。 きちんと対策してれば何の問題もないけど。