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

StackOverflow https://stackoverflow.com/questions/18505

  •  09-06-2019
  •  | 
  •  

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?

È stato utile?

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:

http://www.codeproject.com/

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;

Libreria globale di mouse e tastiere

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:

  1. Controlla se IsIconic (ridotto a icona)
  2. Se il n. 1 si traduce in vero, chiama ShowWindow che passa SW_RESTORE
  3. Quindi chiama SetForegroundWindow

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top