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

我需要弄清楚如何以编程方式从一个单独的应用程序的系统托盘图标中find并select一个上下文菜单项。 我想象得到的唯一方法是使用mouse_event()和一些硬编码的x / y值,并将图标设置为始终显示。 除了一般硬编码的黑客使用,这里的问题是假设图标将保留它的位置(这可能会破坏任何其他应用程序加载/卸载)。 我想知道有没有人知道还有什么其他的办法呢?

Solutions Collecting From Web of "查找并模拟系统托盘图标上的点击?"

根据应用程序的写法,从上下文菜单中选择项目将导致WM_COMMAND消息被发送到属于该应用程序的窗口。 你可以使用像Spy ++这样的工具来检查这个。 如果是这种情况,那么你所要做的(理论上)就是模拟这个信息。

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

请参阅此MSDN论坛文章 ,其中讨论如何查找systemTray的句柄。 文章然后引用一个CodeProject文章如何找到您正在寻找的应用程序的句柄。 我没有尝试过,但看起来这可能是一个可行的起点。