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

请教关于 Windows 桌面开发有关 SendMessage/PostMessaage 的问题.

  •  
  •   qianqian888 · 94 天前 · 1162 次点击
    这是一个创建于 94 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大佬们好,我是新手小白. 我的目标是给别的窗口发送后台鼠标点击事件. 我尝试了 SendMessage/PostMessaage,但发现了一系列的情况都被限制了:

    1. 窗口最小化不行;
    2. 窗口在后台但被其他全屏/最大化窗口遮挡也不行,比如浏览器;
    3. 系统级应用也不行(gpt 告诉我说如资源管理器/计算器等都不可以)

    感觉限制好多啊...有啥办法么? 我正在尝试写一个办公自动化脚本,就是指定不同窗口进行不同的后台自动化工作,而不影响用户在前台的窗口上工作.

    8 条回复    2025-04-26 14:41:39 +08:00
    qianqian888
        1
    qianqian888  
    OP
       94 天前
    如果是前台控制鼠标键盘的话,同时就只能干一件事...
    dandycheung
        2
    dandycheung  
       94 天前 via Android
    你用错 API 了,你去看看 SendInput 。
    qianqian888
        3
    qianqian888  
    OP
       94 天前
    @dandycheung SendInput 是前台控制,用户的鼠标和键盘直接被接管和控制. 这样就没办法多窗口同时操作了. 是我对 API 的理解有问题么?
    qianqian888
        4
    qianqian888  
    OP
       94 天前
    @dandycheung 我再去看了一下文档,确实 SendInput 是全局影响的.不是后台点击和输入...
    asde111
        5
    asde111  
       93 天前
    试下把目标窗口隐藏到托盘(SW_HIDE),就是像 qq 那样只剩下一个图标,然后再发送消息;或者
    如果只是要点击按钮,获得该按钮的句柄后,给按钮发送 BN_CLICKED 消息;或者
    如果目标窗口是浏览器,那么在你的程序里面嵌入个 cef 来打开网页,然后就可以用消息模拟鼠标点击了
    passive
        6
    passive  
       93 天前 via Android
    现在都是自画的控件,SendMessage/PostMessaage 发个 WM_COMMAND 给母窗口大概都没效果。WM_MOUSE 也不一定会被处理。那个年代过去了。
    SWALLOWW
        7
    SWALLOWW  
       93 天前
    看一下游戏脚本怎么写吧。
    涉及到几个问题:
    1 应该只有窗口最小化不行这个问题是成立的,之前的办法是只露出一下程序窗口,其他的部分移除屏幕外。
    2 关于消息响应方式,通过消息的方式你这种,额,有几率行,还有一种直接走驱动的,不会走消息,所以你发送消息是无用的。
    qianqian888
        8
    qianqian888  
    OP
       92 天前
    @SWALLOWW
    @passive
    @asde111 谢谢你们.
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   963 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 19:06 · PVG 03:06 · LAX 12:06 · JFK 15:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.