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/ あとはまかせた
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 ] 関連付け外したり、拡張子変えたりで対策出来ると思ってるようなバカには危ないかもな。 きちんと対策してれば何の問題もないけど。
342 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 15:28:49 ] EXEもHTA同様に危ないわけだが
343 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 18:41:32 ] >>341 バカバカってあまり言わないほうが、バカに見えないですよ。
344 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 20:09:28 ] >>341 1回 >>343 3回
345 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 22:06:35 ] バカバカバカバカ。ほらね、そうでしょ?
346 名前:338 mailto:sage [2006/12/15(金) 00:37:25 ] ありがとうございました。
347 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 14:39:32 ] 関連付け外すのは、MSが HTA の実行の脆弱性 - CVE-2006-1388 の回避策に挙げてるくらいだから、それなりに有効だろ。 でもそれじゃ不便だから、HTBに関連付けを変えれば、同等の効果があるんじゃないか。 HTA遣いのリスクを避ける知恵じゃないか。
348 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 17:49:17 ] >>307 マイコンピュータゾーンの 「ドメイン間のデータ ソースのアクセス」が「ダイアログを表示する。」 になっていると、そうなるみたい。なんかメッセージと合わないですが。 マイコンピュータゾーンのセキュリティを強化して、 ローカルのHTAからローカルのファイルにアクセスできないのも困ったもの。 >>317 の代替手段はあるけど、ちょっと面倒ですね。
349 名前:デフォルトの名無しさん mailto:sage [2006/12/16(土) 01:09:33 ] HTAでEscキーでウィンドウを閉じるようにはできないですか?
350 名前:デフォルトの名無しさん mailto:sage [2006/12/16(土) 01:15:59 ] できるよ
351 名前:デフォルトの名無しさん mailto:sage [2006/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 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 11:54:35 ] おぉ、HTAのスレがあったんですね。過疎ってますけど(ノ∀`)アチャー 自分の場合は、 番組表、天気予報、ニュースなどを取得する、 Samurizeのスクリプト(VBS)を使って、 出力結果をHTML+CSSで整形、単体で起動できるようにしてます。
353 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 12:06:11 ] ありきたりな使い方だな 俺もありきたりな使い方しかしてないけど
354 名前:351 mailto:sage [2006/12/21(木) 00:39:13 ] なんとなくわかりました。どうも。
355 名前:デフォルトの名無しさん mailto:sage [2006/12/22(金) 15:42:17 ] >>198 のよりも手軽に使えるかも DHTML Suite for applications ttp://www.dhtmlgoodies.com/index.html?page=dhtml-suite 注)ライセンス:LGPL …なのが玉に瑕...か
356 名前:デフォルトの名無しさん [2006/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 名前:デフォルトの名無しさん mailto:sage [2006/12/23(土) 16:03:05 ] エラー拾ってリトライするか、 エラー無視してonloadで念のためもう一度やる、とかは?
358 名前:sage [2006/12/23(土) 17:57:10 ] >>356 例外処理という方法があったのですね。 アドバイスありがとうございます、 おかげで期待通りの動作になりました。
359 名前:デフォルトの名無しさん mailto:sage [2006/12/26(火) 14:37:26 ] >>355 ライセンス:LGPL ねぇ… Yahoo UI Libraryが出てるから魅力感じないス。 phpspotでも紹介してたスね。こっちのほうが速いけど。 // 何気にこのスレって面白い情報集まるのね >>39 >>85 とか早い時期から注目してるし。
360 名前:デフォルトの名無しさん mailto:sage [2006/12/27(水) 11:07:58 ] HTMLと同じように使えるので気に入ってます。 ただ,HTAではcookieは使えないようですね? 以前のデータをcookieのように保存するよい方法 がHTAにあれば,教えてください。
361 名前:デフォルトの名無しさん mailto:sage [2006/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 名前:デフォルトの名無しさん mailto:sage [2006/12/27(水) 14:49:50 ] >361 詳しいコードまで作成していただき,感謝です。これを改良して使わさせて いただきます。 ところで,自分で教えていただいた new ActiveXObject("ADODB.Stream"); をネットで検索すると,Ajaxの解説ページ,JavaScript Libraryのページ などにありました。HTAに関連する他のnew ActiveXObject("...")の基本 的な機能を勉強するに,おすすめのサイトはございますか?
363 名前:デフォルトの名無しさん mailto:sage [2006/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 名前:デフォルトの名無しさん mailto:sage [2006/12/27(水) 19:25:05 ] >>360 cookie使えたような気がしたけど、俺の記憶違いかな HTAらしさを醸し出すならやっぱし behavior:url(#default#userData)
365 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 21:08:44 ] HTAならテキストファイルの読み書きが出来るからiniでもxmlでも好きなようにするがよろしい。