Invio di un clic del mouse a un pulsante nella barra delle applicazioni utilizzando C#
Domanda
In un'applicazione su cui sto attualmente lavorando, un requisito è portare in primo piano una finestra di un'applicazione esterna.Le chiamate API Win32 come BringWindowToTop e la finestra SetForeground non funzionano sempre.Ciò è dovuto ad alcune restrizioni all'interno di Windows XP.Quello che vorrei fare invece è inviare la simulazione di un clic del mouse sul pulsante della finestra sulla barra delle applicazioni che spero porti la finestra in primo piano.Qualcuno sa come ciò sia possibile?
Soluzione
Consulta la sezione "Come rubare la messa a fuoco su 2K/XP" su http://www.codeproject.com/KB/dialog/dlgboxtricks.aspx, poiché questo è esattamente ciò di cui hai bisogno.Non seguirei il percorso della barra delle applicazioni poiché la barra delle applicazioni potrebbe essere nascosta o semplicemente non presente.
Altri suggerimenti
È possibile.Ma è estremamente lacunoso.La tua applicazione potrebbe anche non funzionare con la prossima versione di Windows, poiché non è documentata.Quello che devi fare è trovare l'handle della finestra della barra delle applicazioni, quindi trovare l'handle della finestra della finestra figlia che rappresenta il pulsante, quindi inviargli un messaggio WM_MOUSEDOWN (credo).
Ecco alcune informazioni su come trovare l'handle della finestra della barra delle applicazioni:
Per tua informazione, le restrizioni su BringWindowToTop/SetForeground esistono perché è irritante quando una finestra ruba il focus.Ciò potrebbe non avere importanza se lavori in un ambiente aziendale.Tienilo a mente.:)
L'ho usato in un programma in cui avevo bisogno di simulare clic e movimenti del mouse;
Ad essere onesti, non ho mai avuto problemi a portare una finestra in primo piano su XP/Vista/2003/2000.
Devi assicurarti di fare quanto segue:
- Controlla se IsIconic (ridotto a icona)
- Se il n. 1 si traduce in vero, chiama ShowWindow che passa SW_RESTORE
- Quindi chiama SetForegroundWindow
Non ho mai avuto problemi a pensare di farlo con quei passaggi.