J'essaye d'envoyer une frappe à une fenêtre TeraTerm inactive en utilisant Pywin32.win32gui.FindWindow Fenêtre ne trouvant pas
This réponse m'a amené à écrire ce code:
import win32gui
import win32con
import win32api
hwndMain = win32gui.FindWindow("Tera Term VT", None)
print hwndMain
hwndChild = win32gui.GetWindow(hwndMain, win32con.GW_CHILD)
win32api.PostMessage(hwndChild, win32con.WM_CHAR, 0x5b, 0)
mais:
hwndMain = win32gui.FindWindow("Tera Term VT", None)
retours 0
, il ne trouve pas la fenêtre.
Si je change "Tera Term VT"
en "Notepad"
, je peux envoyer des séquences de touches à une fenêtre de bloc-notes active toute la journée. Alors, pourquoi ne puis-je pas obtenir la fenêtre TeraTerm?
Selon le ActiveState documentation:
PyHANDLE = FindWindow (ClassName, NomFenêtre)
ClassName: PyResourceId Nom ou atome de classe de fenêtre pour trouver, peut être Aucun
NomFenêtre: string Titre de fenêtre pour trouver, peut être Aucun
Alors, comment puis-je obtenir le bon ClassName? e?
J'ai essayé à peu près toutes les variantes de Tera Term VT
, en échappant aux espaces: "Tera\ Term\ VT"
, en entourant le tout en guillemets simples: "'Tera Term VT'"
, mais rien ne fonctionne. J'ai même essayé d'utiliser le nom du processus: "ttermpro.exe"
, et inclus le nom de l'enfant dans la chaîne "COM11:115200baud - Tera Term VT"
dans mon désespoir, mais rien ne fonctionne.
Fait intéressant, ceci:
import win32com.client
shell = win32com.client.Dispatch("WScript.Shell")
shell.AppActivate("Tera Term VT")
shell.SendKeys("\%i", 0)
fonctionne très bien, mais apporte la fenêtre au premier plan, que je ne wan't. La chaîne Tera Term VT
fonctionne bien dans ce cas cependant.
Hélas, l'échange des arguments n'aide pas. Je vais étudier l'outil Finder. bien que. Merci. – SiHa
Ensuite, le titre ne correspondait pas exactement à "Tera Term VT" à ce moment-là je suppose - peut-être que vous pouvez fournir une capture d'écran de la fenêtre. Néanmoins, une solution basée sur le nom de classe de la fenêtre est préférable, car l'application peut changer le titre à tout moment. – DAXaholic
Merci, j'ai appris quelque chose aujourd'hui; Les classes de fenêtres sont nouvelles pour moi! Téléchargé [WinSpy ++] (http://www.pendriveapps.com/winspy-find-window-properties/), et trouvé que la classe est, en fait 'VTWin32', et cela fonctionne parfaitement. – SiHa