V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
jason52
V2EX  ›  问与答

有什么方法可以向gui程序发送cli命令(windows)

  •  
  •   jason52 · 2013-09-04 09:30:59 +08:00 · 2790 次点击
    这是一个创建于 4097 天前的主题,其中的信息可能已经有所发展或是发生改变。
    举个例子,比如迅雷,他的全部暂停,全部开始都是gui控件实现的,但是我这里需要定时全部暂停,再重新开始一下,如果有cli命令的话我就可以写crontab定时控制,不需要人工完成了。

    还有土豆的下载客户端,只能一个一个加链接,都不能批量导入链接。没有一种办法向一个程序批量发送一些命令导入链接吗?

    如果是网络程序,到是可以抓包,看成一个黑箱模型,然后用python模拟实现api。但要是本地程序呢?

    我以前研究ahk的时候接触到post message。可以用这种方法实现吗?还有python有个库可以自动化windows操作,适合测试用的。

    听听大家的思路参考参考。
    7 条回复    1970-01-01 08:00:00 +08:00
    for4
        1
    for4  
       2013-09-04 09:40:00 +08:00
    不确认有没有看懂你说什么.

    用AutoItX3+ ctypes/comtypes 或许能做到你要做的事情.
    不过, 模拟按键发送消息控制外部程序一点也不好玩. 基本上是不得已才用的方法
    jason52
        2
    jason52  
    OP
       2013-09-04 09:43:34 +08:00
    @for4 模拟按键不确定性太多了,而且计划任务也不好写,最好是能命令行调用的。我会跟autoit差不多的autohotkey。
    200
        3
    200  
       2013-09-04 09:44:24 +08:00   ❤️ 1
    LZ的问题主要是自动操作 其实和CLI关系不大 CLI只是你这个中转程序的接口 土豆的我不了解 迅雷的话比较麻烦 因为他的控件全部是自己绘制的 所以找不到句柄 我当时和别人共享会员的时候 为了防止被踢 写了个自动登陆的程序 方法就是找登陆窗口句柄 然后发送一个鼠标点击消息 偏移是登陆按钮的偏移 呃 比较弱的就是这个偏移地址是写死的 不是算出来的 还好迅雷升级的时候没有修改登陆窗口布局....
    lll9p
        4
    lll9p  
       2013-09-04 09:58:56 +08:00
    同LS,用pywin32写个很方便
    jason52
        5
    jason52  
    OP
       2013-09-04 10:00:37 +08:00
    @200 恩 土豆也是自己写的,不是用windows标准控件,也不是qt。而且我觉得迅雷不用windows标准控件是他们家程序开起来卡卡的根源。

    硬是要hack本地程序,是不是要涉及到进程线程注入之类的。外部post message进去可行吗?
    200
        6
    200  
       2013-09-04 10:27:35 +08:00   ❤️ 1
    当然可以了 UI之所以能响应 就是靠消息队列不断地循环 不过你这个操作都是一个序列的 最好还是用SendMessage来控制 不要用PostMessage
    本地Hack的话工作量太大了 因为这种东西都是程序内部调用 外部肯定都没有接口 分析起来太麻烦了 而且即使你搞定了一个版本 下次升级很有可能就失效了
    mocodo
        7
    mocodo  
       2013-09-04 14:53:56 +08:00
    记得以前学写win32程序时,要想gui程序接受命令行参数,需要在WinMain中处理传入的字符串,如果没做这个处理,它是不能接受命令行的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1402 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 17:26 · PVG 01:26 · LAX 09:26 · JFK 12:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.