HTAをもっと流行らせる計画 Part2at TECH
HTAをもっと流行らせる計画 Part2 - 暇つぶし2ch350:デフォルトの名無しさん
10/03/28 18:05:15
>>348
それをやるメリットがよく分からない

351:デフォルトの名無しさん
10/03/28 20:35:26
.wsf に vbs と js と hta を
入れて「ひとりパイプライン」を作ると。
ファイルが一つで済んで
デスクトップが散らばらない

352:デフォルトの名無しさん
10/03/28 22:07:21
>>351
なにをいってるのか意味がよく分らない

353:デフォルトの名無しさん
10/03/29 00:11:53
<html><head><script language="VBScript">
sub window_onload
msgbox typename(WebOC.object.Document)
end sub
</script></head><body>
<object id="WebOC" classid="clsid:8856F961-340A-11D0-A96B-00C04FD705A2" width="100%" height="100%">
<param name="location" value="c:\">
<object></body></html>
IShellFolderView?が取れないんだけど、どうすりゃ取れるの?

354:デフォルトの名無しさん
10/03/29 01:43:01
>>353
VBScriptがいけないのかも

<html><head>
<script language="JScript">
function getTarget1() {return WebOC.Document;}
function getTarget2() {return WebOC.document;}
</script>
<script language="VBScript">
sub window_onload
msgbox typename(WebOC.object.Document)
msgbox typename(WebOC.object.document)
msgbox typename(getTarget1())
msgbox typename(getTarget2())
end sub
</script>
</head><body>
<object id="WebOC" classid="clsid:8856F961-340A-11D0-A96B-00C04FD705A2" width="100%" height="100%">
<param name="location" value="c:\">
</object></body></html>


355:354
10/03/29 02:34:02
適当に書いたのでJScriptとVBScriptで参照してるオブジェクトが違ってしまってるけど、
WebOC.object.DocuemtとWebOC.Docuemtnは同じなので結果に影響はないはず

356:デフォルトの名無しさん
10/03/29 14:46:28
VBScriptは大文字小文字の区別がないからVBScriptではできないってことですか
なんとまぁ

357:デフォルトの名無しさん
10/03/29 17:37:43
WebOC.[Docuemnt]もだめ

358:デフォルトの名無しさん
10/03/29 23:55:21
>>351
サンプル作ろうとしたけど
二重引用符でハマってしまった
忘れて

359:デフォルトの名無しさん
10/03/31 14:49:29
名前空間を区別するのが.objectのはずなのに

360:デフォルトの名無しさん
10/04/01 19:24:25
contenDocumentもだめ

361:デフォルトの名無しさん
10/04/02 14:25:53
>>348
getresourceを知らんのか


362:デフォルトの名無しさん
10/04/02 17:08:41
<resource>はhtaでhtmlを埋め込む時は使えないな。どうする?


363:デフォルトの名無しさん
10/04/10 12:08:20
<?xml version="1.0"?><package><job id="main"><script language="VBScript"><![CDATA[
Rem パイプ内でhta.wsf ユニコードで保存
Set objShell = WScript.CreateObject("Wscript.Shell")
Set objDOM = WScript.CreateObject("MSXML2.DOMDocument")
objDOM.load(WScript.ScriptFullName)
objShell.Run "cmd.exe /c dir c:\ | " & "mshta.exe " & Replace("""" & "about:" &_
objDOM.childNodes(1).childNodes(1).childNodes(0).nodeValue & """", vbLf, "") & _
" | " & "cscript.exe //Nologo " & """" & WScript.ScriptFullName & """" & _
" //job:VBS " & " | " & "sort /r && pause"]]></script></job>
<job id="HTA"><![CDATA[<HTA:APPLICATION navigable='yes'>
<script language='JScript'>function InOut(){
FSO = new ActiveXObject('Scripting.FilesystemObject');
In = FSO.getStandardStream(0);Out = FSO.getStandardStream(1);
while (!In.atEndOfStream){Out.writeLine(In.readLine());};
Out.writeLine(window.document.getElementById('inputbox').value);
window.close();Out.writeLine('HTA called.');};
</script><body>helloworld<form action='#' onsubmit='InOut()'>
<input type='text' id='inputbox'/><input type='submit'/></form></body>]]></job>
<job id="VBS"><script language="VBScript"><![CDATA[Do Until Wscript.StdIn.AtEndOfStream
Wscript.StdOut.WriteLine Wscript.StdIn.ReadLine
Loop : Wscript.Echo "VBS called."]]></script></job></package>

364:デフォルトの名無しさん
10/04/10 13:07:12
mshta.exe の引数の文字数が 5XXover だと
xp+ie6 にて動かなかった
vista+ie8 ではそうでもない

365:デフォルトの名無しさん
10/04/10 14:18:56
めんどくさいだけでなにがいいのか

366:デフォルトの名無しさん
10/04/10 14:27:56
>>364
vista+ie8 でもだめだろ
mshta javascript:かvbscript:の中でCreateObject("MSXML2.DOMDocument")・・・
すれば文字数制限にかからんよ


367:デフォルトの名無しさん
10/04/10 21:23:36
>>366
しばらく考えさせていただきます
DOM系のなんかで出来ないか画策中

368:デフォルトの名無しさん
10/04/11 13:12:22
>>365 できたよ こんな感じか ありがと
<?xml version="1.0"?><package><job id="main"><script language="VBScript">
<![CDATA[Rem htaInPipe2.wsf Unicodeで保存
Set objShell = WScript.CreateObject("Wscript.Shell")
objShell.Run "cmd.exe /c dir c:\ | " & "mshta.exe " & _
"""" & "javascript:" & "objShell=new ActiveXObject('Wscript.Shell');" & _
"objDOM=new ActiveXObject('MSXML2.DOMDocument');" & _
"objDOM.load('" & replace(Wscript.ScriptFullName, "\", "\\") & "');" & _
"document.write(objDOM.childNodes(1).childNodes(1).childNodes(0).nodeValue)" & _
"""" & " | " & "sort /r && pause"]]></script></job>
<job id="HTA"><![CDATA[<HTA:APPLICATION navigable='yes'>
<script language='JScript'>function InOut(){
FSO = new ActiveXObject('Scripting.FilesystemObject');
In = FSO.getStandardStream(0);Out = FSO.getStandardStream(1);
while (!In.atEndOfStream){Out.writeLine(In.readLine());};
Out.writeLine(window.document.getElementById('inputbox').value);
Out.writeLine(window.document.getElementById('inputbox').value);
window.close();Out.writeLine('HTA called.');};
</script><body>mshta.exe (か cmd.exe) の引数としては TooLong な HTA
<form action='#' onsubmit='InOut()'><input type='text' id='inputbox'/>
<input type='submit'/></form></body>]]></job></package>

369:デフォルトの名無しさん
10/04/11 20:13:55
document.write(objDOM.selectSingleNode('/package/job[@id=""HTA""]').childNodes(0).nodeValue);

370:デフォルトの名無しさん
10/04/14 21:27:47
複数の *.hta を開くと Win7 のタスクバーで一つでまとまるのではなく、複数になってしまいます。
ほかのアプリのように一つのアイコンにまとめることはできないでしょうか?

Win7のところで聞くべきなのかもしれませんがよろしくお願い致します。

371:デフォルトの名無しさん
10/04/14 21:50:01
htaはmainwindowがないから無理

372:デフォルトの名無しさん
10/04/15 21:23:33
HTAの質問とは言えないかもしれないんですが
<input type="file" id="idHoge">
でファイルオープンダイアログを開いた場合に
そのダイアログで何かが選択されたか、キャンセルされたかを判別したいんですが
何か良い方法は無いでしょうか。

idHoge の値を、ダイアログを開く前と後で比較していたんですが
これだと前回と同じファイルを選択した場合にキャンセルと区別が付かないです。
idHoge に onChange で動作を書けばいいかと思ったんですが、
同じファイルが選択された場合はonChangeも動作しませんでした。

373:372
10/04/15 21:33:37
すいません、解決しました。

374:デフォルトの名無しさん
10/04/16 09:30:00
解決したら解答かけよw

375:372
10/04/16 12:23:20
入力されてる値をクリアするだけでも良かったんで
window.location.reload() で全体をリロードしてリセットする事にしました。

376:デフォルトの名無しさん
10/04/16 20:07:25
FORM.reset()

377:372
10/04/16 20:53:10
>>376
おお、こっちの方が良さそうですね。
ありがとうございます!

378:デフォルトの名無しさん
10/04/19 22:47:16
<?xml version="1.0"?><package><job id="a"><script language="VBScript"><![CDATA[
Rem なんちゃってLibrary.wsf Unicode で保存
Set objDOM = CreateObject("MSXML2.DOMDocument")
objDOM.load(Wscript.ScriptFullName)
Execute objDOM.selectSingleNode("/package/job[@id=""VBLib""]").childNodes(0).childNodes(0).nodeValue
]]></script><script language="Jscript"><![CDATA[
eval(objDOM.selectSingleNode("/package/job[@id='JLib']").childNodes(0).childNodes(0).nodeValue);
]]></script><script language="VBScript"><![CDATA[
CreateObject("Wscript.Shell").Run "mshta.exe ""about:"&s("a","b","c")&J(Array("d","e"))&""""
]]></script></job><job id="JLib"><script language="Jscript"><![CDATA[
function s(){var result = "";
for(var i=0; i<arguments.length; i++){
result += arguments[i];}return result;}
]]></script></job><job id="VBLib"><script language="VBScript"><![CDATA[
Function J(arrArg)
J = Join(arrArg, "")
End Function]]></script></job></package>

379:デフォルトの名無しさん
10/04/19 22:53:16
× eval は使っちゃいけません
○ でも objIE に Put&GetProperty するより簡単です

380:デフォルトの名無しさん
10/04/22 16:03:44
>>378
いみふ
>>368
javascript:document.write(f())のdocument.write()はいらんよ
javascript:f()で値がHTMLとして評価されるよ

381:デフォルトの名無しさん
10/04/22 23:53:49
job が複数あるときに job ごとに
function s(){...} と書くのは
大変なのでこうしようという提案です

write なしで動きました

382:デフォルトの名無しさん
10/04/23 23:41:21
vista でイケて
xp でダメだったのは
c:\users と c:\documents and settings の違いかもと
ようやく思い至りました

383:デフォルトの名無しさん
10/04/24 18:54:12
>>382
ジャンクションがあるから関係ないんじゃ?

384:デフォルトの名無しさん
10/04/25 08:30:29
すいませんジャンクションてなんどすか

cmd.exe 以下の dir やら | やら && pause やらの
文字数の合計がリミットを超えたのかと想像しましたが

385:デフォルトの名無しさん
10/04/25 11:21:21
XPだと8191文字までだな。
Vistaは知らん。

コマンド プロンプト (Cmd.exe) のコマンド ライン文字列の制限
URLリンク(support.microsoft.com)

386:デフォルトの名無しさん
10/04/25 15:44:20
>>383 は関係ないだろ
>>385 も関係ないだろ
>>364 の話が分ってないんだろ

387:デフォルトの名無しさん
10/04/25 18:24:01
長い文字列は環境変数で渡せば?

388:デフォルトの名無しさん
10/04/26 19:50:01
もうちょっと読みやすく書けないものか

389:デフォルトの名無しさん
10/04/30 02:44:46
ieから<a href=hoge.hta>をクリックするとhtaがieの後ろに回るんだけどなんでだろう?

390:デフォルトの名無しさん
10/04/30 23:17:09
hoge.htaをieで開くんでねーの?

391:デフォルトの名無しさん
10/05/01 00:12:36
ねーよ

392:デフォルトの名無しさん
10/05/01 10:45:56
>>388
いちレスにおさめるため
でたらめにケズってます

393:デフォルトの名無しさん
10/05/01 10:49:06
<?xml version="1.0"?><package><job id="a"><script language="VBScript"><![CDATA[
Rem Pipe を分ける.wsf Unicodeで保存
Set objShell = CreateObject("Wscript.Shell")
Set objPipe = objShell.Exec("cmd.exe /c (for /L %i IN (1, 1, 123) DO @dir c:\) | find "":"" ")
Set objPipe2 = objShell.Exec("cmd.exe /c sort /r | mshta.exe " & _
"""" & "javascript:" & "objDOM=new ActiveXObject('MSXML2.DOMDocument');" & _
"objDOM.load('" & replace(Wscript.ScriptFullName, "\", "\\") & "');" & _
"objDOM.selectSingleNode(""/package/job[@id='HTA']"").childNodes(0).nodeValue" & """")

Do Until(objPipe.StdOut.AtEndOfStream)
objPipe2.StdIn.WriteLine objPipe.StdOut.ReadLine
Loop]]></script></job><job id="HTA"><![CDATA[<head><script language = "VBScript">
Sub DisplayStdIn() : Set objFso = CreateObject("scripting.FilesystemObject")
Set objStdIn = objFso.GetStandardStream(0) : str=""
document.getElementById("atextarea").value=""
Do Until objStdIn.AtEndOfStream : str = str & objStdIn.ReadLine & vbcrlf
Loop : document.getElementById("atextarea").value = str: End Sub
</script><style type="text/css">.texttype { height:100%; width:100%; }
</style></head><body onload="DisplayStdIn()">
<p class="texttype"><TEXTAREA id="atextarea" wrap="off" class="texttype">
</TEXTAREA></p></body>]]></job></package>

394:デフォルトの名無しさん
10/05/01 10:57:30
文字数制限にそなえパイプを分けようとしたら
objShell.Exec を使うという普通の話になりました
Exec でも縦棒使えたのかー あるいは cmd.exe単品を起動して
後ろの引数は(Exec曰く)知ったことではない
と予想

objShell.Run も味があって捨てがたいな
一万文字流し込めないかな

395:デフォルトの名無しさん
10/05/01 18:28:05
なにがいいのか

396:デフォルトの名無しさん
10/05/01 22:26:35
If all you have is a hammer, everything looks like a nail.

397:デフォルトの名無しさん
10/05/04 15:12:00
URLリンク(www1.u-netsurf.ne.jp)  のページの
下のサンプルがIE8で動かないんですが何ででしょうか?




■ HTML版Hello World(hello.html)

<script language="VBScript">
<!--
Sub HelloWorld
Document.Write "Hello World!"
End Sub
-->
</script>

<html>
<body>
<input type="button" name="InputBtn" onmoune="HelloWorld" value="Go!">
</body>
</html>


398:デフォルトの名無しさん
10/05/04 20:22:24
>>397
・onmouneをonclockに変える。
・script要素をhtml要素の中に入れる。

399:デフォルトの名無しさん
10/05/04 22:49:51
作者に聞けば?

400:398
10/05/04 23:56:31
onclockじゃねえや、onclickだったorz

401:デフォルトの名無しさん
10/05/05 14:03:55
作者と同レベル

402:デフォルトの名無しさん
10/05/05 19:30:57
>>399
本人だろ

403:デフォルトの名無しさん
10/05/07 16:38:04
>>398
onmoune→onclickだけで動いた
script要素はhtml要素の外でもいいみたい

404:デフォルトの名無しさん
10/05/07 22:01:17
なんか見ないほうが良さそうなサンプルだにゃあ

405:デフォルトの名無しさん
10/05/08 00:25:33
>>397,403
script要素をhtml要素の外に書いてるコードなんて初めて見た。
こんなクソコード真似しちゃ駄目だよ。

406:デフォルトの名無しさん
10/05/08 15:40:50
それほどおかしくないよ
<html>
<body>
あいうえお
</body>
</html>
<html>
<body>
かきくけこ
</body>
</html>
をひらいてみ

407:デフォルトの名無しさん
10/05/08 16:57:01
いいえ、おかしいです

408:デフォルトの名無しさん
10/05/08 17:13:21
>>406
仕様上正当なのか、たまたま動いてるだけなのかは区別しような。

409:デフォルトの名無しさん
10/05/08 17:22:49
たまたまじゃないだろ

410:デフォルトの名無しさん
10/05/08 23:15:02
たまたまだよ。

「html要素はHTML文書中に一つだけ」と規格で決まってる。
IEは規格からかなり外れたHTMLも無理矢理表示する傾向があるから
表示されてしまうけど、HTML文書としては完全に間違い。

規格を読むなり
URLリンク(validator.w3.org)
URLリンク(openlab.ring.gr.jp)
チェックするなりした方がいい。

411:デフォルトの名無しさん
10/05/08 23:26:36
確率論において、2つの事象が独立であるというのは、ある事象と別の事象の両方が成立する確率が、
それぞれの確率の積で表わされることを言う。2つの確率変数が独立であるというのは、「ある確率変数
の値が一定範囲に入る事象」と「別の確率変数の値が別の一定範囲に入る事象」が、考えられるどのよ
うな「一定範囲」(「考えられる」とは通常ボレル集合族を指す)を定めても、事象として独立であることを言う。
二つの事象が独立といった場合は、片方の事象が起きたことが分かっても、もう片方の事象の起きる確率
が変化しないことを意味する。二つの確率変数が独立といった場合は、片方の変数の値が分かっても、
もう片方の変数の分布が変化しないことを意味する。

412:デフォルトの名無しさん
10/05/09 02:41:26
すれ違い

413:デフォルトの名無しさん
10/05/21 17:01:03
>>393
exec("cmd")はコンソール開くから使いたくねぇな

414:デフォルトの名無しさん
10/05/22 17:53:12
run("cmd",0)だな

415:デフォルトの名無しさん
10/05/26 14:13:24
exec("cmd",0)

416:デフォルトの名無しさん
10/06/10 17:12:50
特定のウェブページを、Chromeスタイルで表示してくれる、Internet Explorerの拡張機能「Google Chrome Frame」がnew ActiveXObjectに対応してくれれば
html5のhtaが作れるのに・・・

417:デフォルトの名無しさん
10/06/30 15:11:59
HTA?なんぞそれ?と思って調べてみたらいいねこれ 
VBSctipr JavaScript HTML Perlも使えるとは

と 最初はよかったんだ 最初は・・・


HTA入門のページを見て 簡単なHTAを作ってみようと思って 
少し前作っていたWSHのソースをHTAのソースにコピペして ボタンクリックで実行したらエラー連発

ググってみたらWSHは一部の機能が使えないとか
Wscript.sleepだの Wscript.echoが使えないとか・・・orz

418:デフォルトの名無しさん
10/06/30 15:17:51
>>417
Wscript.echo は alertで代用できるからいいけどsleepが代用できないという

var WScript;
WScript = WScript.CreateObject("WScript.Shell");

も動かないとかもうね・・・
HTAはWSHを使う人にはとっつきにくいのかもね

419:デフォルトの名無しさん
10/06/30 16:50:55
DOSのバッチでSleepはPingで代用できるけどそういうことできない?

420:デフォルトの名無しさん
10/06/30 17:20:30
>>418
それ、wshの .js でも動かないだろw
---------------------------
エラー: 'WScript' は Null またはオブジェクトではありません。
---------------------------


<script language="JScript">
var WScript;
WScript = new ActiveXObject("WScript.Shell");
</script>

<script language="VBScript">
Dim WScript
Set WScript = CreateObject("WScript.Shejll")
</script>

sleepはフリーズするから嫌われるぞ。
window.setTimeoutでごまかすか、時間のかかる処理は外部プロセス起動するといい。


421:デフォルトの名無しさん
10/07/01 02:51:03
>ググってみたらWSHは一部の機能が使えないとか
その一部以外の機能は何?

422:デフォルトの名無しさん
10/07/01 03:06:13
えっ?

423:デフォルトの名無しさん
10/07/01 03:17:46
>>429
Win32_PingStatus

424:デフォルトの名無しさん
10/07/01 17:14:57
' これは単に短い遅延を作成するためのスリープ関数です。
Sub Sleep(tmpSeconds)
Dim dtmOne,dtmTwo
dtmOne = Now()
While DateDiff("s",dtmOne,dtmTwo) < tmpSeconds
dtmTwo = Now()
Wend
End Sub


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch