|
VMware Workstation 12 Proで起動した仮想マシンに対して、MOUSEORG関数を利用してバックグラウンド操作を行いたいのですが、うまくいきません。
環境 Windows10 Pro x64 VMware Workstation 10 Pro 12.5.7 UWSC Pro 5.3.0.2 ゲストマシン:Windows8.1 x64
現在、 wid=getid("仮想マシン名") mouseorg(wid,2,morg_back) で、バックグラウンド入力をしようとしたのですが、CHKIMGはおろかKBD,BTNも動作しません。 どなたか、対応方法をご存知のかたがいらっしゃれば、ご教示ください。
|
No.4666 2017/11/04(Sat) 16:15:03
|
☆ Re: VMwareのバックグラウンド操作 / satocha |
|
|
wid=getid("仮想マシン名")でウインドウIDがきちんと取れていないのでは? VMwareを持っていないのでどんなウインドウタイトルになるか分からないため、こうすればいいとはお知らせできませんが。
強引にやるなら、全ウインドウを取得して、そのタイトルに仮想マシン名が含まれていればそれがウインドウIDだと見做す手もあります。 VMachineName="仮想マシン名" wid=-1 for id in GetAllWin() if pos(VMachineName,status(id,st_title)) wid=id break endif next //このあとwidを使って操作
|
No.4668 2017/11/04(Sat) 22:22:18
|
|
☆ Re: VMwareのバックグラウンド操作 / Noir |
|
|
返信ありがとうございます。
後だしで申し訳ありませんが、 acw関数でウィンドウIDが取れていることは確認しました。 アイテム名からハンドル取得も試しましたが、把握可能なアイテム名でもうまくいきませんでした。
|
No.4669 2017/11/04(Sat) 23:16:25
|
|
☆ Re: VMwareのバックグラウンド操作 / PAC |
|
No.4670 2017/11/05(Sun) 11:10:10
|
|
☆ Re: VMwareのバックグラウンド操作 / Noir |
|
|
返信ありがとうございます。
Hostでuwscを使用している理由は主に2点あり、 VM内で動かしているソフトウェアが仮想キー入力を受け付けない仕様のようなのでVM外から動かしたい、ということと、 多数(現在12台)からの同時アクセスに対する負荷試験も兼ねており、10~100ms程度の同時性を持った制御をVM内で(ネットワーク経由で)行う術を持ち合わせていないことが理由です。
この2点が解消されればVM内で実行するのですが、特に後者のほうは、当方がネットワーク関連に特に無知であるため、困難です。
|
No.4672 2017/11/06(Mon) 17:32:39
|
|
☆ Re: VMwareのバックグラウンド操作 / stuncloud |
|
|
vw = getid(" - VMWare WorkStation") id = -1 hVMUIView = getctlhnd(vw, "VMUIView") hAtlAxWin90 = getctlhnd(hndtoid(hVMUIView), "AtlAxWin90") for _id in getallwin(hndtoid(hAtlAxWin90)) if pos("ATL:", status(_id, ST_CLASS)) then id = _id break endif next
これで変数idに今開いているタブのコンソール部分のidが入ります (-1だったら失敗です) このあとだいたい画面の真ん中あたりをbtn()でクリックしてからsckey()によるキー送信を行う、ということをしています 真ん中あたりをクリック、は操作を仮想マシン側に移すためです (なのでCtrl+GでもOK ログオン画面などコピペができない箇所で任意の文字列を送るというような使い方がメインです ので、マウス操作やmouseorgeでのバックグラウンド操作に関してはできるかどうかわかりません 上記のコードでidが取れたら試してみてください
|
No.4681 2017/11/08(Wed) 10:41:25
|
|