上司が「君はファンキー・モンキー・ウッキー イカレてるよ」と、唄っていました。
猿ってか。失礼な。(怒・怒・怒)
標題にHTA間と、書きましたがサンプルは単純にしたかったので
VBS->HTA へ一方的に送る仕様です。
HTAウィンドウ表示中にデータをやり取りする方法はないかと調べてみたら
"sendKeys"がありました。
2重起動を許可しないタイプのHTAを想定して作成しています。
(2重起動が可ならコマンドラインからデータをとれますね)
ポイント
・受信側の内部アプリケーション名を指定しておく
・受信側は2重起動を許可しない設定にしておく
送信側
既に"rcvMsg.hta"を起動済みでも送信できます。
ユーザーのキー入力と区別するためにデータの先頭と終りに記号を付けています。
受信側:
内部名は"sampleA"です。
注意:
いじめテストしていません。
ウィンド内の入力と受信が重なるとバグがでるかも。
"SendKeys"実行後、すぐにオブジェクトを破棄しているので長文を送ったときに全文字列
を保障してくれるのかは未テストです。
猿ってか。失礼な。(怒・怒・怒)
標題にHTA間と、書きましたがサンプルは単純にしたかったので
VBS->HTA へ一方的に送る仕様です。
HTAウィンドウ表示中にデータをやり取りする方法はないかと調べてみたら
"sendKeys"がありました。
2重起動を許可しないタイプのHTAを想定して作成しています。
(2重起動が可ならコマンドラインからデータをとれますね)
ポイント
・受信側の内部アプリケーション名を指定しておく
・受信側は2重起動を許可しない設定にしておく
<code> --送信側(VBS)-- Option Explicit Dim objShell Set objShell = CreateObject("WScript.Shell") objShell.Run "rcvMsg.hta" Wscript.Sleep 1000 objShell.AppActivate "sampleA" objShell.SendKeys chr(&H2) & "Hello" & chr(&H3) Set objShell=Nothing Wscript.Quit --受信側(rcvMsg.hta)-- <html> <head> <HTA:APPLICATION APPLICATIONNAME="sampleA" SINGLEINSTANCE="yes" /> <script language="vbscript"> Option Explicit Dim Flg,Msg Flg=False Sub getMsg()'受信 Dim s s=chr(window.event.keyCode) Select Case s Case chr(&H2)'メッセージの先頭 window.focus 'TEXTBOXに受信した文字が入らないようにウィンドにフォーカスを移しておく Msg="" Flg=True Case chr(&H3) 'メッセージの最後 If Flg=True Then MsgBox Msg 'メッセージを表示する Flg=False Case Else 'データ部 If Flg=True Then Msg=Msg & s End Select End Sub </script> </head> <body onKeyPress="getMsg"> <input type="text" value="aaa"> </body> </html> </code>
送信側
既に"rcvMsg.hta"を起動済みでも送信できます。
ユーザーのキー入力と区別するためにデータの先頭と終りに記号を付けています。
受信側:
内部名は"sampleA"です。
注意:
いじめテストしていません。
ウィンド内の入力と受信が重なるとバグがでるかも。
"SendKeys"実行後、すぐにオブジェクトを破棄しているので長文を送ったときに全文字列
を保障してくれるのかは未テストです。