简体   繁体   中英

Sending a mouse click to a button in the taskbar using C#

In an application that I am currently working on, a requirement is to bring a window of an external application to the foreground. Making Win32 API calls such as BringWindowToTop and SetForeground window do not work all the time. This is due to some restrictions within Windows XP. What I would like to do instead is send simulate a mouse click the window's button on the taskbar which I am hoping will bring the window to the front. Does anyone know how this is possible?

Check out the section "How to steal focus on 2K/XP" at http://www.codeproject.com/KB/dialog/dlgboxtricks.aspx , as this is exactly what you need. I wouldn't go the taskbar route as the taskbar could be hidden or simply not there.

It's possible. But it's extremely sketchy. Your application may also break with the next version of Windows, since it's undocumented. What you need to do is find the window handle of the taskbar, then find the window handle of the child window representing the button, then send it a WM_MOUSEDOWN (I think) message.

Here's a bit on finding the window handle of the taskbar:

http://www.codeproject.com/

FWIW, the restrictions on BringWindowToTop/SetForeground are there because it's irritating when a window steals focus. That may not matter if you're working on a corporate environment. Just keep it in mind. :)

I used this in a program where I needed to simulate clicks and mouse movements;

Global Mouse and Keyboard Library

To be honest I've never had an issue bringing a window to the foreground on XP/Vista/2003/2000.

You need to make sure you do the following:

  1. Check if IsIconic (minimized)
  2. If #1 results in true then call ShowWindow passing SW_RESTORE
  3. Then call SetForegroundWindow

I've never had problems that I can think of doing it with those steps.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM