发送一个鼠标点击任务栏中的一个button使用C#

在我目前正在开发的应用程序中,需要将外部应用程序的窗口放在前台。 使Win32 API调用(如BringWindowToTop和SetForeground窗口)不会一直工作。 这是由于Windows XP中的一些限制。 我想要做的是发送模拟鼠标点击任务栏上的窗口button,我希望将窗口的前面。 有谁知道这是可能的?

Solutions Collecting From Web of "发送一个鼠标点击任务栏中的一个button使用C#"

查看http://www.codeproject.com/KB/dialog/dlgboxtricks.aspx中的 “如何偷窥2K / XP”一节,因为这正是您所需要的。 我不会去任务栏路线,因为任务栏可以隐藏或根本不存在。

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

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

http://www.codeproject.com/

FWIW,BringWindowToTop / SetForeground的限制在那里,因为当一个窗口窃取焦点时,它是令人讨厌的。 如果你在一个企业环境下工作,这可能并不重要。 只要牢记在心。 🙂

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

全局鼠标和键盘库

说实话,我从来没有把问题带到XP / Vista / 2003/2000的前景。

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

  1. 检查IsIconic(最小化)
  2. 如果#1结果为true,则调用ShowWindow传递SW_RESTORE
  3. 然后调用SetForegroundWindow

我从来没有遇到过这样的问题。