私は非常に簡単な方法でアプリケーションを制御するPerlスクリプトを開発しようとしています(いくつかのボックスを埋める、いくつかのキーを押します)。 私はWin32 :: GuiTestを使ってすべてを実装しました。 目標は、トレイで最小化されたアプリで動作させることです。同時にPCを使用することができます。アプリケーションと連携して動作するPerl GUIスクリプト。どのようにそれをそのままにしますか?フォーカスに関連する問題
私はWMSetText、SelComboItem、SendMessage、PushChildButtonのような関数を使用しています。
PushChildButtonを除いて、すべて正常に動作します。この関数が呼び出されるたびに、私がやっていることからフォーカスが失われています(制御されたアプリケーションが最小限に抑えられていても)。
PushChildButtonを呼び出す前に使用しているアプリケーション:http:// i。 imgur.com/7B5kj.png
PushChildButtonを呼び出して使用しているアプリケーション:http:// i。
imgur.com/VCskW.png私はこのようなフォーカスを殺害しようとしましたが、それはうまくいきませんでした:
my $msg_id=0x08;
SendMessage(@_[ 0 ], $msg_id, @_[ 1 ], undef);
@_[ 0 ] - handle to the application
@_[ 1 ] -handle to the "Edit Control" that I think* that takes the focus after pressing the button
は*私はこのビットを詳しく説明しましょう。アプリケーションはまだ最小化されたままですが、「コントロールの編集」リソースにフォーカスを失ったときに押したキーと連結された文字列が含まれることがあります。
PS:私はPerlとWinAPIの初心者です(実際これは私の最初のプロジェクトです)。だから は少し不明なことを説明しているかもしれません。あなたは私が を精巧にすべきだと感じるものすべてを私に尋ねてください。
私はアプリケーションのソースコードを確認しましたが、GetFocus()とSetFocus()が使用されているようです。私は同様に、フォーカスを元に戻すためにスクリプト内の関数にそれらの関数を実装しようとすることもできますが、疑問があります。キーボードのリークがないように、このフォーカススイッチは十分に速いでしょうか? LE:はい、私はアプリケーションソースコード(オープンソースのアプリケーションです)を持っていますが、新しいバージョンはしばらくの間に起動されるため、変更して再コンパイルしたくありません。 – Nick