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

在 C 代码中,您正在检查h != INVALID_HANDLE_VALUE, 在 Python 中h != NoneINVALID_HANDLE_VALUE不是0// 。null_None

Pythonwin32file.INVALID_HANDLE_VALUE通过win32file导入定义。

此外,您可以执行以下操作,而不是打印“SomeApp not found”:

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

This should give you more details on the failure if FindWindow has legitimately failed for some reason (or "Success" if it worked).

于 2012-10-13T12:21:41.797 回答