通过句柄控制显示托盘图标的窗口

dir541541 2009-08-18 09:29:48
原本发在http://topic.csdn.net/u/20090816/16/886b5975-3655-43eb-ad91-56881f326f16.html这的。回复太少,沉了。再开一贴。
我想通过我的程序来控制飞鸽传书界面的显示。
先通过进程名找到飞鸽的进程PID,然后由PID得到主窗口句柄。然后用了常用的几种显示窗口的方法来将主窗口显示出来,结果都不行。
可能这些方法都是针对已有窗体的窗口。但飞鸽当前的状态是就一个托盘图标,不知道大家对这种托盘图标主窗体的显示有什么好办法。
...全文
171 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanjingwei 2009-08-19
  • 打赏
  • 举报
回复
顶下吧
dir541541 2009-08-19
  • 打赏
  • 举报
回复
帮顶都有分~嘿嘿
xmrforever 2009-08-18
  • 打赏
  • 举报
回复
帮你顶一下
dir541541 2009-08-18
  • 打赏
  • 举报
回复
没人来~
问题点数加到50分
dir541541 2009-08-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 stjay 的回复:]
先通过进程名找到飞鸽的进程PID,然后由PID得到主窗口句柄。
得到主窗口句柄是否有效?
[/Quote]
忘了说了,句柄是有效的
我输出的句柄和用spy++查看得到的是一样的
dir541541 2009-08-18
  • 打赏
  • 举报
回复
每次发送文件的时候都要把飞鸽点开,然后把文件或文件夹拖到飞鸽里面去。感觉有点麻烦
想在右键单击文件或文件夹的时候增加一个菜单项“发送到飞鸽”
点击后直接把文件发送到飞鸽里面
我的思路是先显示飞鸽主窗口,然后再向其发送一个WM_DROPFILES的消息

通过向Shell_TrayWnd发送鼠标双击消息应该也有办法,只不过是有点麻烦
好像托盘图标有个结构体好像是和名称有关的,到时候枚举所有托盘图标名称
再在里面查找含有飞鸽传书的关键字。得到是第几个图标位置
然后根据位置算出大概坐标,然后PostMessage鼠标双击
只是大概思路,还没具体做,不知道可行性

主要是想问下大家有没有什么方便的办法!
stjay 2009-08-18
  • 打赏
  • 举报
回复
先通过进程名找到飞鸽的进程PID,然后由PID得到主窗口句柄。
得到主窗口句柄是否有效?

飞鸽启动后,只有托盘
双击托盘图标后,才创建并显示主窗口
关闭主窗口后,窗口是销毁了而不是隐藏了

1.飞鸽开源的,可以自行修改。推荐。
2.基本上不能通过托盘窗口句柄来控制主窗口
托盘图标是由系统栏来管理的(窗口类名:Shell_TrayWnd)
用spy++监视双击托盘后,窗口Shell_TrayWnd产生的消息,然后PostMessage模拟发送
因为托盘在系统栏的位置可能会变,所以很难控制。
3.Hook Shell_NotifyIcon
获取参数NOTIFYICONDATA 的hWnd和uCallbackMessage值
再PostMessage(hWnd,uCallbackMessage,0,WM_LBUTTONDBLCLK);

LZ为什么要这样做呢?

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧