yangbinxp
2020-08-28 02:32
采纳率: 81.8%
浏览 76

Python 或者 C# 怎么获取这个 命令id 呢?

图片说明

就是这个橘黄的部分,这个是命令id ,这里保存是 1 , 取消是 2 , 这个是我一个个试出来的,请问有什么函数能直接 获取这个保存的ID呢?

提供一下思路和关键词也行,我自己去搜一下。谢谢了

hwnd = win32gui.FindWindow(None,'另存为')

print( hwnd )

另存为_menu_hwnd = menu_hwnd = win32gui.GetMenu( hwnd )

print( 另存为_menu_hwnd )

win32api.SendMessage( hwnd , win32con.WM_COMMAND , 2 , 0 )  

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • threenewbee 2020-08-28 09:19
    已采纳

    FindWindow,根据按钮文字找到handle
    再调用 GetDlgCtrlID 得到 ID

    问题解决的话,请点下采纳

    打赏 评论
  • jingluan666 2020-08-28 09:38

    装个autoit

    https://www.autoitscript.com/site/autoit/downloads/

    然后使用autoit window info工具,将Finder Tool图标拖拽到控件上,就可以看到ID

    图片说明

    此外,autoit也可以通过脚本完成上面的自动化功能,可以了解下,比如创建一个au3文件,内容如下,右键文件,选择"Run Script"就可执行了

    #include <MsgBoxConstants.au3>
    
    $filePath="d:\\test.txt"   ;文件路径
    
    Run("Notepad.exe " & $filePath) ;用记事本打开文件
    
    $title=$filePath & " - 记事本" ;记事本窗体标题
    
    if WinWait($title,"",2) then
     WinWaitActive($title)
    endif
    
    Send("!f") ;选中“文件”菜单
    Send("a") ;选中“另存为”菜单
    
    Sleep(500) ;停顿500毫秒
    
    ControlSend("另存为", "", "ComboBox3", "UTF-8") ; 另存为编码
    
    Sleep(200) ;停顿200毫秒
    
    Send("!s") ;选中“保存”按钮
    Send("!y") ;选中“确定”进行覆盖
    Send("!f") ;选中“文件”菜单
    Send("x")  ;选中“退出”菜单项
    
    
    打赏 评论

相关推荐 更多相似问题