Windows 7 64 비트 컴퓨터에서 파이썬 2.7 (32 비트)을 사용하고 있습니다. 일부 Windows 작업을 자동화하기 위해 win32 Api을 사용하고 있습니다. 또한 파이썬과 win32 API에 익숙하지 않습니다. 파이썬에서와 비슷한 질문을 보았지만 코드를 이해하는 데 어려움을 겪었습니다. 슬프게도 여기에 새로 왔기 때문에 내 담당자가 50 세 이하이므로 질문을하고 코멘트를 할 수 없으므로 직접 질문해야했습니다.팝업 메뉴에서 항목 선택 win32 api Python
최근에는 시스템 트레이 (알림 영역) 으로 작업했습니다. 트레이의 아이콘 중 하나를 클릭하여 (왼쪽 또는 오른쪽) 이름을 알 수 있습니다.
이제 도움이 필요한 것은 마우스 오른쪽 버튼을 클릭 한 후 문맥 메뉴 항목 에 액세스하는 것입니다.
그래서 오른쪽 클릭을하면 팝업 메뉴이 나타납니다. 그 항목이나 내용을 클릭 할 수 있도록 핸들을 얻으려고 시도하고 잘못된 메뉴 핸들이라는 오류가 발생합니다. win32gui.GetSubMenu가 실패하면 win32gui.GetMenu가 실패합니다. win32gui.GetMenuItemCount가 -1을 반환하는 것처럼 간단합니다.이 메뉴에 액세스하는 방법에 대한 도움이 필요합니다. 탐색 한 후 항목을 클릭하십시오.
코드의 조각 나는 노력했습니다 :
# retrieves a handle to the notification area toolbar
tb = getNotificationAreaToolbar()
# clicks on an icon in the system tray say I'm right clicking the sound icon
#(in my case AMD HDMI Output)
clickSystemTrayIcon('right', 'AMD HDMI Output', tb)
#now the context popup menu comes up.
# According to MSDN the class name for such menu is #32768
hPopupmenu = win32gui.FindWindow("#32768", "")
# An example of a try to access the menu items
# Getting the count: this is returning -1 saying the handle is not a menu handle
count = win32gui.GetMenuItemCount(hPopupMenu)
#send a command, doesn't do anything
win32gui.PostMessage(tb, win32con.WM_COMMAND, win32gui.GetMenuItemId(hPopupmenu,1) , 0)
# the thing that makes me sure that I'm getting the right window of the popup is
# win32gui.GetWindowRect(hPopmenu) it's returning the right position of the menu
어떤 도움을 크게 감사는 감사합니다!
감사합니다. manuell 나는 항상 여기에서 나를 도와주는 사실에 감사드립니다. FindWindow를 사용하여 MN_GETHMENU를 호출하면 솔루션이 작동합니다. 원하는 팝업 메뉴를 처리 할 수 있습니다. 잘 작동하는 창 rect에 관해서는, 내 실제 코드에서 사이에 잠을 호출합니다. 다시 나는이 물건에 대해 아직 익숙하지 않고 가끔은 충분한 문서를 찾지 못한다. 그러나 나는 많은 것을 확실히 배우고있다! 또한 답변을 평가할 수 있고 여기에 더 많은 것들을 할 수있게되어서 기쁩니다. 감사합니다. :) – TheCodingGent
@yasman 감사합니다. 환영합니다. – manuell