findwindowPython
『壹』 python根據句柄如何自動點擊按鈕
用python的sendkeys直接模擬鍵盤,用ctype擴展來點滑鼠。你需要做的就是用python打開瀏覽器,然後輸入網站,在找到按鈕的坐標(固定到程序里),然後點擊就行了。不過簡單的可以,復雜點的就要考慮很多問題了。
『貳』 如何用python激活指定窗口的輸入框,方便下一步模擬輸出
首先,要明確你的需求,「模擬鍵盤輸入」這個需求有些籠統了,因為Win32上模擬輸入的方法實在太多,各有不同的效果。
其次,把焦點移動到文本框並不是必需的。如果你只是想往文本框里輸入字元串,你甚至都不需要知道怎麼模擬鍵盤動作,因為Win32提供了更高層次的抽象WM_CHAR。另外一些情況下,你可能希望手動模擬鍵盤的擊鍵動作WM_KEYDOWN和WM_KEYUP,例如你想展現用輸入法打字的效果,或者你想調用某個組合鍵。
關於窗口句柄的獲取,Win32裡面把控制項之類的也稱作Window,但是FindWindow()只能查找頂層窗口(也就是狹義的「窗口」),如果需要查找子窗口(也就是通常所說的「控制項」),需要用FindWindowEx()。
還是以記事本為例:
from ctypes import windll as win32
WM_CHAR = 0x0102
try:
hWnd = win32.user32.FindWindowW('Notepad', None)
assert hWnd
hEdit = win32.user32.FindWindowExW(hWnd, None, 'Edit', None)
assert hEdit
except AssertionError:
print('Notepad not found')
else:
for char in 'Hello, 世界':
win32.user32.SendMessageW(hEdit, WM_CHAR, ord(char), None)
示常式序運行的效果是:記事本自始至終都沒有獲得焦點,但是游標處插入了字元串。
在這個應用場景下,模擬鍵盤敲擊並不是一個好的選擇——輸入的結果完全取決於你的鍵盤布局/輸入法。雖然我國通行US QWERTY鍵盤,鍵碼和英文字元基本對應,但直接把字元通過窗口消息傳遞過去,能輕松的保證輸入的結果和要求完全一致,何樂而不為呢。
有關Win32的學習,我沒有系統的學習過,個人的習慣是看別人做的示例代碼,不懂的查MSDN…
國內有很多講MFC開發的書,一般會講解有關Win32的基礎知識。然而書名里通常不會提到MFC和Win32,而是冠以Visual C++的名號,也是醉了…
無論是什麼資料,通常都是面向C/C++環境的,Win32是面向C/C++的,Python只是封裝了一下。建議在C/C++平台上學習,會方便許多。
VB/.NET/Delphi的相關資料也比Python多很多,作為一個源於社區的跨平台環境,Win32開發並不是Python的主要戰場。
『叄』 python語言怎麼操作正在運行的Windows程序 比方說,我的QQ 正在運行
有兩種方法,一種是用pywin32包,調用api findwindow 然後sendmessage關閉
另外就是調用系統命令 tskill
『肆』 python獲取打開的應用窗口輸入字元
用win32模塊(第三方模塊需要下載安裝)
方法win32gui.FindWindow()#獲取每個應用程序的窗口
win32gui.FindWindowEx()#獲取上面窗口下的控制項 獲取控制項可以用spy++這款軟體
win32gui.SendMessage()#輸入『字元』
win32gui.PostMessage()#按下發送按鈕,具體參數網上找找 有問題可以問下
『伍』 python pywin32 裡面操作窗體,獲取窗體裡面的數據,在函數GetDlgItem函數中,怎麼獲取第二個參數的值
1.如何利用句柄操作windows窗體
首先,獲得窗體的句柄 win32api.FindWindows()
第二,獲得窗體中控制項的id號,spy++
第三,根據控制項的ID獲得控制項的句柄(hwnd) GetDlgItem(hwnd,loginID)
最後,利用控制項句柄進行操作
python可以通過win32api輕松獲取控制項的屬性值
通過標簽找到主窗口句柄,然後通過主句柄獲取下屬控制項句柄
#-*- coding: utf-8 -*- ##設置編碼方式
import win32api,win32gui,win32con
label = 'tt' #此處假設主窗口名為tt
hld = win32gui.FindWindow(None, label)
if hld > 0:
dlg = win32api.FindWindowEx(hld, None, 'Edit', None)#獲取hld下第一個為edit控制項的句柄
buffer = '0' *50
len = win32gui.SendMessage(dlg, win32con.WM_GETTEXTLENGTH)+1 #獲取edit控制項文本長度
win32gui.SendMessage(dlg, win32con.WM_GETTEXT, len, buffer) #讀取文本
print buffer[:len-1]
#虛擬滑鼠點擊按鈕(或者回車)
btnhld = win32api.FindWindowEx(hld, None,'Button', None)
# win32gui.PostMessage(btnhld, win32con.WM_KEYDOWN, win32con.VK_RETURN, 0)
# win32gui.PostMessage(btnhld, win32con.WM_KEYUP, win32con.VK_RETURN, 0)
win32gui.PostMessage(btnhld, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, 0)
win32gui.PostMessage(btnhld, win32con.WM_LBUTTONUP, win32con.MK_LBUTTON, 0)
#獲取顯示器屏幕大小
width = win32api.GetSystemMetrics(win32con.SM_CXSCREEN)
height = win32api.GetSystemMetrics(win32con.SM_CYSCREEN)
#點擊窗口button
w=win32ui.FindWindow(clsname,windowtitle)
b=w.GetDlgItem(窗口id)
b.postMessage(win32con.BM_CLICK)
#關閉窗體
import win32ui
import win32con
wnd=win32ui.FindWindow(classname,None)
wnd.SendMessage(win32con.WM_CLOSE) 成功!
import win32ui
w=win32ui.FindWindow(classname,窗體title)
print w.GetDlgItemText(0xFFFF) # 獲得彈窗里的消息文字
最小化窗體
w=win32gui.FindWindow()
win32gui.CloseWindow(w)
『陸』 python怎麼實現在指定窗口輸入文字呢
//根據窗口標題找到對應窗口的句柄
[cpp]
view
plain
hwnd
hq
=
findwindow(null,
title);
if
(hq
!=
null)
{
cout
<<
"找到對應窗口";
}
else
{
cout
<<
"沒找到對應窗口";
}
//通過句柄向指定窗口發送模擬鍵盤按鍵消息
[cpp]
view
plain
sendmessage(hq,
wm_keydown,
'l',
0);
『柒』 python怎麼定位到windows窗口
前段時間使用了一下google的博客空間,感覺也很一般,所以現在把那裡的幾篇文章轉過來。執行python腳本只需要對python文件做如下操作即可:在python文件里第一行加上#! /usr/bin/python,即你的python解釋器所在的目錄。另外還有一種寫法是#! /
『捌』 Python 如何獲得一個Windows程序窗口,並在窗口裡的當前
你好,
1、讀取windows窗口,應該要用系統編程的知識實現介面,然後python調用
python 沒有直接能實現該功能的模塊
2、或者,你需要調用win32 api了已經不是python的標准范圍
你可以看看 Pywin32 這個擴展庫
『玖』 Python的win32gui模塊里的FindWindow怎麼和re連用
不太記得了,但除了找固定名稱的窗口外,還有遍歷窗口的函數(可能是enum開頭吧)
把全部窗口找出來再對比一下就知道了
『拾』 python win32 同標題同class窗口怎麼區分
Windows API 中有一個函數 EnumWindows 可以枚舉屏幕上的窗口,然後再獲取窗口標題或 class 進行判斷一下就可以了。