0

Pythonを使用して、WindowsのexeファイルにF3(0x72)として入力する必要があります。Popen コマンドを使用してコマンドを発行します。誰でも私を案内できますか?

ここでプログラムの詳細を確認できます: サブプロセスと Popen を使用して .exe からすべての出力を取得するにはどうすればよいですか?

4

1 に答える 1

0

答えは、「exe ファイル」が Win32 GUI アプリケーションかコンソール アプリケーションかによって異なります。

GUI アプリの場合は、「実行中に F3 と F10 を exe ファイルに入力する」だけでなく、アクティブなときにアプリケーションのメイン ウィンドウに入力する必要があります。コンソール アプリの場合は、さまざまな方法でキーボードを読み取り、適切な処理を行う必要があります。または、アクティブな状態でコンソール ウィンドウに入力するだけでもかまいません。

適切なウィンドウがアクティブであると仮定できる場合は、SendKeysを見てください。これは、フォアグラウンドにあるウィンドウにキーストロークの組み合わせを送信する以外は何もしないように設計された低レベルのモジュールです。

SendKeys('{F3}')

さらに制御が必要な場合 (アプリがフォアグラウンドになくても作業する必要がある場合など) には、Python 用の "ウィンドウ自動化ライブラリ" が半ダースほどあります。それらのどれも AutoIt のようなものほど優れたものはありませんが、Python を使用する必要がある場合、それらは悪くありません。たとえば、pywinautoの場合、やりたいことの擬似コードは次のようになります。

app = application.find("foo.exe")
wnd = app.TheAppWindow # assuming the app's main window has a title similar to "The App Window"
wnd.TypeKeys('{F3}')

もちろん、GUI を操作する必要がない限り、このようなライブラリから多くの利点を得ることはできません — 「編集 | 検索」という名前のメニュー項目を開き、「検索」ウィンドウの最初の編集ボックスに「foo」と入力します。 、「次へ」というラベルの付いたボタンをクリックし、メインウィンドウで選択したテキストを取得します。

最後に、いつでも低レベルにドロップダウンして、 PyWin32 経由で Wi​​n32API 呼び出しを行うことができます。擬似コードは次のとおりです。

hwnd = win32gui.FindWindowEx(0, 0, 'TheAppClass', 'The App Window')
win32gui.PostMessage(hwnd, WM_KEYDOWN, VK_F3, 0)
win32gui.PostMessage(hwnd, WM_KEYUP, VK_F3, 0)

正確なウィンドウ名とウィンドウ クラスが必要になることを除けば、それほど複雑ではありません。(それを見つけるには、無料の「ウィンドウ エクスプローラー」ツールを使用します。Visual C++ Express にはまだ付属していると思います。)

ここでの利点は、何が起こっているかを正確に把握できることです。これにより、問題のデバッグが容易になります。また、MSDN の詳細なドキュメントを利用できることも意味します (ただし、PyWin32 自体にはかなり適切なドキュメントが付属しているため、多くの場合、.する必要はありません)。

于 2012-09-28T18:40:47.630 に答える