12

次のようにアクティブなウィンドウを取得します。

window = win32gui.GetForegroundWindow()

これは Int で、たとえば 1053634 です。その後、フォアグラウンド ウィンドウを指定されたウィンドウに戻そうとします。

win32gui.SetForegroundWindow(window)

そして、次のエラーが発生します: win32gui.SetForegroundWindow(window) エラー: (127, 'SetForegroundWindow', '指定されたプロシージャが見つかりませんでした.')

インタープリターでこれを行うと、次のエラーが発生することがあります。

win32gui.SetForegroundWindow(1053634)
error: (0, 'SetForegroundWindow', 'No error message is available')

何が問題だと思いますか?

ありがとう!

4

3 に答える 3

28

私のプログラムは Windows 7 のデスクトップでは正常に動作しますが、Windows Vista でラップトップを使用すると (UAC をオフにしても)、次のエラーが表示されます。

pywintypes.error: (0, 'SetForegroundWindow', 'No error message is available')

プログラムはタスクバーで点滅しますが、文字は送信されません。

「メモ帳」の SetForegroundWindow を送信しようとしても、同じエラーが発生しました。

スレッドを組み合わせてコンピューターにそれらが一緒に動作すると思わせる回避策のリンクを次に示します。

この記事には、問題の詳細が記載されています。

更新: リンクが C プログラムに移動して申し訳ありません。さらに調査したところ、最初に alt キーを送信すると、SetForegroundWindow が可能になることがわかりました。

例えば:

import win32gui, win32com.client
shell = win32com.client.Dispatch("WScript.Shell")
shell.SendKeys('%')
win32gui.SetForegroundWindow(window)
于 2013-03-19T15:29:42.127 に答える