4

拡張機能のFindWindow使用に問題があります。pywin32単純なCコード:

int main()
{
  HWND h = FindWindow(NULL, TEXT("SomeApp"));
  if (h != INVALID_HANDLE_VALUE)
      SetForegroundWindow(h);
  return 0;
}

うまく機能します。Pythonと同じ:

import win32gui

h = win32gui.FindWindow(None, "SomeApp")
if h:
    win32gui.SetForegroundWindow(h)
else:
    print "SomeApp not found"

失敗します。SomeAppが見つかりません。ここではテキストエンコーディングが問題を引き起こす可能性があることをお勧めしますが、テキストを指定する方法についての情報はドキュメントに見つかりませんでした。

更新: 他のマシンでコードをテストしましたが、問題はありません。したがって、最初のマシンの構成は正しくないはずです。問題が見つかった場合は、調査結果を更新しました。

4

1 に答える 1

1

h != INVALID_HANDLE_VALUEC コードでは、Python でをチェックしていますh != None。/ /INVALID_HANDLE_VALUEではありません。0nullNone

Python はインポートwin32file.INVALID_HANDLE_VALUEを介して定義します。win32file

また、「SomeApp not found」と出力する代わりに、次のようなこともできます。

gle = win32api.GetLastError()
err = win32api.FormatMessage(gle)[:-2]
print 'SomeApp not found: LastError=%d - %s' % (gle, err)

これによりFindWindow、何らかの理由で正当に失敗した場合 (または、機能した場合は「成功」) の詳細が表示されます。

于 2012-10-13T12:21:41.797 に答える