2010-07-28 4 views
0

Je veux simuler un clic de souris sur une fenêtre, mais je veux publier l'événement click directement dans la fenêtre (pas en simulant un clic de souris général en utilisant win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0)). Quelle est la bonne façon de le faire? J'ai essayé ce qui suit, mais il ne semble pas avoir un effet:python/win32: publier un événement click dans une fenêtre?

def MAKELONG(low, high): 
    return low | (high << 16) 
win32gui.PostMessage(window, 
        win32con.WM_LBUTTONDOWN, 
        win32con.MK_LBUTTON, 
        MAKELONG(21,42)) 
time.sleep(0.05) 
win32gui.PostMessage(window, 
        win32con.WM_LBUTTONUP, 
        0, 
        MAKELONG(21,42)) 

window est la poignée correcte pour la fenêtre. Dans ce cas, j'essayais d'activer le menu fichier.

Répondre

0

Si window est la fenêtre qui possède le menu, cela ne fonctionnera pas car WM_LBUTTONDOWN est pour la zone client de la fenêtre, et la zone de menu est non-client. Je n'ai pas testé cela, mais vous pourriez essayer de poster WM_NCLBUTTONDOWN à la place, avec un wParam de HTMENU, et la position de la souris dans les coordonnées de l'écran. Une autre alternative consisterait à utiliser GetSubMenu et TrackPopupMenu. Le seul problème avec ceci est si vous voulez que l'utilisateur puisse alors naviguer aux autres sous-menus.

Questions connexes