python切换消息窗_用Python切换窗口
The way that user had defined find_window only allows you to choose by the classname of the window
用戶定義它的方式是將這兩個參數(shù)class_name和window_name傳遞給^{}(后者反過來只調(diào)用Win32 API函數(shù)^{})。所以,就這樣做:windowmgr.find_window(None, 'My Window Name')
但即使這不是真的,也不需要使用他的find_window函數(shù);很明顯,如何調(diào)用win32gui.FindWindow自己:hwnd = win32gui.FindWindow(None, 'My Window Name')
如果你想對FindWindow/EnumWindows/etc.語法有一個很好的解釋,你有沒有試著查看它們的文檔?有什么你不明白的嗎?
同時:… the classname of the window, which I don't know and haven't been able to find since it is just a game running in Java
它在Java中運行有什么區(qū)別?你可以枚舉窗口并打印出他們的類名,無論它們是用C++、java、.net、python或其他東西編寫的。或者使用Visual Studio/VS Express附帶的工具,或者任何你可以在網(wǎng)上找到的免費改進版本,比如MS Spy++,它可以讓你指向一個窗口并給出標題和類名。I don't want to enumerate the windows to find it as I'm not sure how that would work.
只要用正則表達式調(diào)用windowmgr.find_window_wildcard(wildcard),它就會枚舉窗口并將它們的標題與該正則表達式進行比較。
如果要編寫自己的代碼來完成此任務,只需編寫如下函數(shù):def my_callback(hwnd, cookie):
現(xiàn)在,當你這樣做時:win32gui.EnumWindows(my_callback, some_cookie)
…它將在每個窗口調(diào)用一次您的my_callback函數(shù),其中hwnd是窗口(您可以傳遞給win32gui函數(shù),例如GetWindowText),而cookie是您傳入的some_cookie值。(如果不需要傳入任何內(nèi)容,只需傳入None,并且不使用回調(diào)函數(shù)中的值。但您可以看到另一個應答器是如何使用它來傳遞正則表達式的。)
同時:using find_window_wildcard as it's written in that script has managed to bring the window to the foreground a few times, but only if the window was already open, and it only works intermittently.
首先,如果窗口不存在,就不能將其帶到前臺。你認為這會怎樣?
就間歇工作而言,我的猜測是有很多窗口與您的通配符匹配,程序?qū)⑷我膺x擇其中一個窗口。可能不是你想要的那個。(它甚至可能是一個隱藏的窗口或其他東西,所以你根本看不到任何事情發(fā)生。)
無論如何,您不需要使用find_window_wildcard;如果您知道確切的名稱,請使用該名稱。當然,它可能仍然不是唯一的(無論游戲的名稱是什么,沒有什么可以阻止你打開一封電子郵件或一個記事本窗口的相同標題…順便說一句,這就是為什么你想先嘗試類名),但至少它比一些未指定的通配符更有可能是唯一的。
那么,如果類名不是唯一的(或者,更糟的是,它是一個特殊的“number”類,比如32770用于一般的對話框窗口),而窗口名也不是唯一的呢?您可以通過查看所屬進程或模塊(exe/dll)或父窗口或其他任何內(nèi)容來更好地縮小范圍。您必須查看win32gui和/或MSDN文檔(鏈接在上面)以查找可能要嘗試的內(nèi)容,并通過反復嘗試(也要記住Spy工具),直到找到某種唯一指定窗口的方法。然后編碼。
總結(jié)
以上是生活随笔為你收集整理的python切换消息窗_用Python切换窗口的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iPhone 14未开启专注模式通知被静
- 下一篇: python中可变参数怎么传递的呢_在p