Invio di un clic del mouse su un pulsante nella barra delle applicazioni utilizzando C#


7

In un'applicazione a cui sto attualmente lavorando, è necessario portare in primo piano una finestra di un'applicazione esterna. Le chiamate API Win32 come la finestra BringWindowToTop e SetForeground non funzionano sempre. Ciò è dovuto ad alcune restrizioni all'interno di Windows XP. Quello che vorrei fare invece è inviare simulare un clic del mouse sul pulsante della finestra sulla barra delle applicazioni che spero porti la finestra in primo piano. Qualcuno sa come è possibile?

5

Controlla la sezione "Come rubare lo stato attivo su 2K/XP" a http://www.codeproject.com/KB/dialog/dlgboxtricks.aspx, poiché questo è esattamente ciò di cui hai bisogno. Non andrei sulla barra delle applicazioni perché la barra delle applicazioni potrebbe essere nascosta o semplicemente non lì.


2

È possibile. Ma è estremamente abbozzato. La tua applicazione potrebbe anche rompersi con la prossima versione di Windows, poiché non è documentata. Quello che devi fare è trovare l'handle di finestra della barra delle applicazioni, quindi trovare l'handle della finestra figlio che rappresenta il pulsante, quindi inviarlo un messaggio WM_MOUSEDOWN (credo).

Ecco un po 'per trovare l'handle della finestra della barra delle applicazioni:

http://www.codeproject.com/

FWIW, le restrizioni BringWindowToTop/setForeground ci sono perché è irritante quando una finestra si concentrano ruba. Questo potrebbe non avere importanza se stai lavorando in un ambiente aziendale. Tienilo a mente. :)


1

L'ho usato in un programma in cui avevo bisogno di simulare clic e movimenti del mouse;

Global Mouse and Keyboard Library


1

Per essere onesti non ho mai avuto un problema portare una finestra in primo piano su XP/Vista/2003/2000.

È necessario assicurarsi di fare il seguente:

  1. Controllare se IsIconic (ridotto al minimo)
  2. Se # 1 risultati in vero allora chiamano ShowWindow passando SW_RESTORE
  3. quindi chiamare SetForegroundWindow

Non ho mai avuto problemi a cui possa pensare di farlo con quei passaggi.