首页 新闻 会员 周边 捐助

【求助】c# 模拟托盘单击事件

0
悬赏园豆:200 [待解决问题]

想实现一个功能,
通过外部程序A发送鼠标单击事件给另外一个程序B的托盘图标,通过此方法来代开B程序

有没有大神能给些提示

问题补充:

第一,托盘中的程序抓不到句柄,托盘是一个统一句柄(个人理解的)

第二,我用SendMessage在托盘中图标所在位置可以实现鼠标的单击,但是这个单击对图标不起作用

第三,B程序可以同时打开多个,如果通过Process枚举进程的方式去查找无法定位到每一个B的具体信息。但是在托盘里能读到B的具体信息。

TNTZWC的主页 TNTZWC | 初学一级 | 园豆:2
提问于:2015-01-16 10:12
< >
分享
所有回答(5)
0

你搜索一下“按键精灵”,打过网页游戏的应该知道这东西,可以编写脚本,全自动帮你打游戏。

爱编程的大叔 | 园豆:30844 (高人七级) | 2015-01-16 10:15
0

1. 找坐标。

2. 找该程序的句柄

问天何必 | 园豆:3311 (老鸟四级) | 2015-01-16 11:42
0

你直接找到B程序的句柄,然后打开就可以了,不用去托盘点击坐标这么麻烦,Process就能实现你的想要的功能了

刘宏玺 | 园豆:14020 (专家六级) | 2015-01-16 14:22

Process可以查到B程序的打开路径,通过路径应该可以实现你想要的功能吧,我遇到过类似的问题,就是通过Process解决的

支持(0) 反对(0) 刘宏玺 | 园豆:14020 (专家六级) | 2015-01-16 14:36

前提是多个B程序肯定不在一个目录下的

支持(0) 反对(0) 刘宏玺 | 园豆:14020 (专家六级) | 2015-01-16 14:38
0

不明白,帮顶吧。

“通过外部程序A发送鼠标单击事件给另外一个程序B的托盘图标,通过此方法来代开B程序”,如果隐藏掉了没有显示在右下角的托盘上呢,还能用sendmessage方式实现吗。

Set sail | 园豆:540 (小虾三级) | 2015-01-16 16:14
0

看看Windows API,了解一下这个函数,应该可以解决你的问题:

[DllImport("user32.dll", EntryPoint = "mouse_event")]
        public static extern void mouse_event(
            int dwFlags,
            int dx,
            int dy,
            int cButtons,
            int dwExtraInfo
        );
I,Robot | 园豆:9783 (大侠五级) | 2015-01-16 21:49
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册