2015-04-17 14 views
5

Come si apre il menu di scelta rapida di una finestra (il normale contesto di Windows che appare quando si fa clic con il tasto destro del mouse su nella barra del titolo di una finestra).Come si apre il menu di scelta rapida di una finestra?

Le cose che ho provato (su un pulsante di scatto)

ReleaseCapture(); 
SendMessage(this.Handle, WM_NCRBUTTONDOWN, 0, 0); 
SendMessage(this.Handle, WM_RBUTTONUP, 0, 0); 
SendMessage(this.Handle, WM_CONTEXTMENU, 0, 0); 

E questo:

ReleaseCapture(); 
SendMessage(this.Handle, WM_NCRBUTTONDOWN, HT_CAPTION, 0); 
SendMessage(this.Handle, WM_RBUTTONUP, HT_CAPTION, 0); 
SendMessage(this.Handle, WM_CONTEXTMENU, HT_CAPTION, 0); 
+1

Su quale finestra si desidera aprire il menu di scelta rapida? È sempre tuo o anche in altri processi? Inoltre, hai effettivamente definito un menu di scelta rapida che può essere aperto, se è la tua finestra? Se quel controllo in cui si desidera aprire il menu di scelta rapida non ne ha uno, non è possibile aprirne uno. –

+0

GetSystemMenu -> TrackPopupMenu forse –

+1

Imposta Focus sulla finestra e invia ALT + Spazio ad esso. Con Winforms SendKeys.Send ("%") – Ralf

risposta

4

per aprire il menu contestuale del sistema su una finestra è possibile premere Alt + Spazio. Quindi nel tuo caso potresti inviare quelle chiavi a quella finestra, che dovrebbe aprire il menu contestuale per te.

La parte che hai fatto con SendMessage invia solo una notifica alla finestra specificata che simula il clic destro. Ma è ancora importante dove si trova il mouse.

Importante: se si utilizza "SendKeys.Send" (per i moduli di Windows), ciò avrà effetto solo sulla finestra attualmente attiva.

Problemi correlati