Python win32api SendMesage
versuchen zu klären, win32api für mich. Und nur ein einfaches Beispiel. Holen Sie sich das Editor-Fenster, bewegen Sie die Maus auf die position klicken und schreiben, string. Aber es funktioniert nicht. Was ist das problem? Und wird jemand so klären könnte mir lParam-parameter? Was tut es? Welche Art ist es ? Wie schaut es aus ? 🙂
Vielen Dank im Voraus.
import win32api, win32con, win32gui, win32ui, win32service, os, time
def f_click(pycwnd):
x=300
y=300
lParam = y <<15 | x
pycwnd.SendMessage(win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, lParam);
pycwnd.SendMessage(win32con.WM_LBUTTONUP, 0, lParam);
def get_whndl():
whndl = win32gui.FindWindowEx(0, 0, None, 'NB.txt - Notepad')
return whndl
def make_pycwnd(hwnd):
PyCWnd = win32ui.CreateWindowFromHandle(hwnd)
return PyCWnd
def send_input_hax(pycwnd, msg):
f_click(pycwnd)
for c in msg:
if c == "\n":
pycwnd.SendMessage(win32con.WM_KEYDOWN, win32con.VK_RETURN, 0)
pycwnd.SendMessage(win32con.WM_KEYUP, win32con.VK_RETURN, 0)
else:
pycwnd.SendMessage(win32con.WM_CHAR, ord(c), 0)
pycwnd.UpdateWindow()
whndl = get_whndl()
pycwnd = make_pycwnd(whndl)
msg = "It works !\n"
send_input_hax(pycwnd,msg)
InformationsquelleAutor user2046488 | 2013-02-09
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist ein weiteres Fenster in einen Editor, der Hauptgrund, Sie müssen Ihre Nachrichten zu senden. Können Sie sehen, dieses "versteckte" Fenster mit Microsoft Spy++ - tool, oder Sie können alle child-windows in etwa so:
Fenster wir suchen, hat 'Bearbeiten' class name und er ist nur aktiv und sichtbar, Kind-Fenster für den Editor. Also dein code funktioniert auf diese Weise:
lParam ist " int " und " was Sie hier sehen ist ein trick, der Sie zum pass, mehr als einen Wert durch ein einziges argument. Lassen Sie uns sagen, dass wir brauchen, um passieren Sie zwei Ziffern, um eine Funktion, die nur ein argument. Wir senden Ihnen als zweistellige Zahl und teilen Sie es innerhalb der Funktion. Gleiche Weise bitweise shift (<<) und das bitweise oder (|) Operationen sind auch umkehrbar ist, in Ihrem Fall:
Lesen Sie mehr über bitweise Operationen in Wikipedia und Python Wiki.
Durfte es nicht sein
lParam = y << 16 | x
?Gerade überprüft win-api-docs, ich glaube, du hast Recht, die docs sagen, es ist low-word und high-word, das Wort mit 16 bit. Nur funktioniert in diesem Fall, da 300 ist auch (hat eine 0 am Ende). 15 war in der ursprünglichen Frage, und ich glaube nicht zu viel davon
ja, ich habe mit 15 und die Koordinaten waren aus. Mit 16 festen
InformationsquelleAutor Igonato