我需要弄清楚如何以编程方式查找并选择从一个单独的应用程序的系统托盘图标右键菜单项。 我能想象到的唯一途径实现,这是使用mouse_event(),还有一些硬编码的x / y值,并设置图标总是显示。 除了一般哈克使用硬编码的,这里的问题是,假设该图标将保留它的位置(这很可能打破任何时间的另一个应用程序加载/卸载)。 我想知道是否有人知道任何其他方式来进行此事?
Answer 1:
根据如何应用已写入,从上下文菜单中选择项目时将导致一个WM_COMMAND
消息被张贴到属于该应用程序的窗口。 您可以像使用间谍工具++来检查这一点。 如果是这种情况,那么所有你需要做的(理论上)是模拟该消息。
如果应用程序不使用WM_COMMAND
从上下文菜单中选择接受,你的工作更难。 目前发现的位置上没有任何记载的方法和系统托盘项目的确定,所以你的硬编码的x / y值可能是你最好的选择方法。
Answer 2:
看到这个MSDN论坛文章 ,其中讨论了如何找到的SystemTray的句柄。 然后,文章引用了CodeProject上的文章如何找到您正在搜索的应用程序的句柄。 我还没有试过,但它看起来像它可能是一个可行的起点。
文章来源: Finding and simulating a click on a system tray icon?