我試着發送一些密鑰到非活動窗口/進程/程序(win32/64)使用python。已經閱讀了pywinauto和SendKeys,但是它們都在發送密鑰之前激活了窗口。發送一些密鑰到非活動窗口與python
有沒有任何方式使用不活動窗口而不激活它?
如果有人發佈簡單的示例/代碼片段,那將會很棒。
謝謝。
我試着發送一些密鑰到非活動窗口/進程/程序(win32/64)使用python。已經閱讀了pywinauto和SendKeys,但是它們都在發送密鑰之前激活了窗口。發送一些密鑰到非活動窗口與python
有沒有任何方式使用不活動窗口而不激活它?
如果有人發佈簡單的示例/代碼片段,那將會很棒。
謝謝。
這是一個很老的文章,但還沒有在這裏的答案,我一直在尋找這樣的東西,而我花了6個小時才通過Stackoverflow,最後只讀了所有的C文檔,因爲它更有用。
<python>
#you will need the win32 libraries for this snippet of code to work, Links below
import win32gui
import win32con
import win32api
from time import sleep
#[hwnd] No matter what people tell you, this is the handle meaning unique ID,
#["Notepad"] This is the application main/parent name, an easy way to check for examples is in Task Manager
#["test - Notepad"] This is the application sub/child name, an easy way to check for examples is in Task Manager clicking dropdown arrow
#hwndMain = win32gui.FindWindow("Notepad", "test - Notepad") this returns the main/parent Unique ID
hwndMain = win32gui.FindWindow("Notepad", "test - Notepad")
#["hwndMain"] this is the main/parent Unique ID used to get the sub/child Unique ID
#[win32con.GW_CHILD] I havent tested it full, but this DOES get a sub/child Unique ID, if there are multiple you'd have too loop through it, or look for other documention, or i may edit this at some point ;)
#hwndChild = win32gui.GetWindow(hwndMain, win32con.GW_CHILD) this returns the sub/child Unique ID
hwndChild = win32gui.GetWindow(hwndMain, win32con.GW_CHILD)
#print(hwndMain) #you can use this to see main/parent Unique ID
#print(hwndChild) #you can use this to see sub/child Unique ID
#While(True) Will always run and continue to run indefinitely
while(True):
#[hwndChild] this is the Unique ID of the sub/child application/proccess
#[win32con.WM_CHAR] This sets what PostMessage Expects for input theres KeyDown and KeyUp as well
#[0x44] hex code for D
#[0]No clue, good luck!
#temp = win32api.PostMessage(hwndChild, win32con.WM_CHAR, 0x44, 0) returns key sent
temp = win32api.PostMessage(hwndChild, win32con.WM_CHAR, 0x44, 0)
#print(temp) prints the returned value of temp, into the console
print(temp)
#sleep(1) this waits 1 second before looping through again
sleep(1)
</python>
我見過的帖子遍佈使用
hwndEdit = win32gui.FindWindowEx(hwndMain, hwndChild, "Edit", "test - Notepad");
,但我永遠無法弄清楚。除此之外,微軟網站上的所有文檔都有不同的含義,因此我添加了自己的理解。
這應該讓你開始,應該對別人有幫助。如果其他人有修改讓我知道。
你是救星!謝謝! –
這可能幫助:http://stackoverflow.com/q/5080777/1129194 –
哇,我在這裏RLY錯過任何評論=)你的例子看起來像幹活,將搜索有關win32api.SendMessage更多信息方法。謝謝! – killradio