查找并模拟系统托盘图标上的单击?

时间:2013-01-10 03:24:54

标签: windows winapi click contextmenu system-tray

我需要弄清楚如何以编程方式从单独的应用程序的系统托盘图标中查找并选择上下文菜单项。我能想象实现这一目标的唯一方法是使用带有一些硬编码x / y值的mouse_event(),并将图标设置为始终显示。除了一般硬编码的hacky使用之外,这里的问题是假设图标将保持其位置(在其他应用程序加载/卸载时可能会中断)。我想知道是否有人知道其他方法可以解决这个问题?

2 个答案:

答案 0 :(得分:3)

根据应用程序的编写方式,从上下文菜单中选择项目将导致WM_COMMAND消息发布到属于应用程序的窗口。您可以使用Spy ++之类的工具来检查这一点。如果是这种情况,那么您(理论上)所要做的就是模拟该消息。

如果应用程序没有使用WM_COMMAND从上下文菜单中接收选择,那么您的工作就会困难得多。没有记录的方法来发现系统托盘项目的位置和标识,因此您对x / y值进行硬编码的方法可能是您的最佳选择。

答案 1 :(得分:2)

请参阅此MSDN Forum article,其中讨论了如何查找systemTray的句柄。然后,本文引用CodeProject Article来了解如何查找要搜索的应用程序的句柄。我没试过这个,但看起来它可能是一个可行的起点。