使用 C# 将鼠标单击发送到任务栏中的按钮

Posted

技术标签:

【中文标题】使用 C# 将鼠标单击发送到任务栏中的按钮【英文标题】:Sending a mouse click to a button in the taskbar using C# 【发布时间】:2010-09-06 07:39:43 【问题描述】:

在我目前正在处理的应用程序中,要求是将外部应用程序的窗口置于前台。进行 Win32 API 调用(例如 BringWindowToTop 和 SetForeground 窗口)并非始终有效。这是由于 Windows XP 中的一些限制。我想做的是发送模拟鼠标单击任务栏上的窗口按钮,我希望它将窗口带到前面。有谁知道这怎么可能?

【问题讨论】:

【参考方案1】:

查看http://www.codeproject.com/KB/dialog/dlgboxtricks.aspx 上的“如何将注意力转移到 2K/XP”部分,因为这正是您所需要的。我不会走任务栏路线,因为任务栏可能被隐藏或根本不存在。

【讨论】:

【参考方案2】:

这是可能的。但它非常粗略。您的应用程序也可能与下一版本的 Windows 中断,因为它没有记录。你需要做的是找到任务栏的窗口句柄,然后找到代表按钮的子窗口的窗口句柄,然后给它发送一个WM_MOUSEDOWN(我认为)消息。

这里有一点关于找到任务栏的窗口句柄:

http://www.codeproject.com/

FWIW,BringWindowToTop/SetForeground 的限制是存在的,因为当窗口窃取焦点时会很烦人。如果您在公司环境中工作,这可能无关紧要。请记住它。 :)

【讨论】:

【参考方案3】:

我在一个需要模拟点击和鼠标移动的程序中使用了它;

Global Mouse and Keyboard Library

【讨论】:

【参考方案4】:

说实话,我从来没有遇到过在 XP/Vista/2003/2000 上将窗口置于前台的问题。

您需要确保执行以下操作:

    检查 IsIconic 是否(最小化) 如果 #1 结果为真,则调用 ShowWindow 传递 SW_RESTORE 然后调用SetForegroundWindow

我从来没有遇到过我能想到的问题。

【讨论】:

以上是关于使用 C# 将鼠标单击发送到任务栏中的按钮的主要内容,如果未能解决你的问题,请参考以下文章

将鼠标点击发送到 WebEngineView Qt C++

求助:怎么实现css中—鼠标单击按钮后按钮换图片的效果

通过 Chrome 开发工具控制台将点击发送到“生成的源/计算的 html”按钮

C# 从其他应用程序中获取鼠标按钮交互

如何将参数从通知点击发送到活动?

prism怎么做显著性分析