2015-04-17 21 views
5

Bir pencerenin içerik menüsünü (bir pencerenin başlık çubuğunda Sağ Tıklatıldığında görüntülendiğinde görünen normal Windows bağlamı) nasıl açarsınız. Ben (Düğme tıklamasında) denedimHerhangi bir pencerenin içerik menüsü nasıl açılır?

şeyler

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

Ve bu:

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

Bağlam menüsünü hangi pencerede açmak istersiniz? Her zaman senin mi yoksa başka süreçlerde mi? Ayrıca, kendi pencereniz varsa, açılabilen bir içerik menüsü tanımladınız mı? Bağlam menüsünü açmak istediğiniz yerde bu denetim yoksa, bir tane açamazsınız. –

+0

GetSystemMenu -> TrackPopupMenu belki de –

+1

Pencereye odaklanın ve ALT + Boşluğuna yollayın. Winforms ile SendKeys.Send ("%") – Ralf

cevap

4

Eğer Alt + Space tuşlarına basabilirsiniz bir pencere sistem bağlam menüsünü açın. Bu durumda, bu anahtarları, sizin için içerik menüsünü açması gereken pencereye gönderebilirsiniz.

SendMessage ile yaptığınız bölüm, yalnızca sağ tıklamaları simüle eden belirtilen pencereye bir bildirim gönderir. Ancak farenin bulunduğu yer hala önemlidir.

Ayrıca önemli: "SendKeys.Send" (windows formları için) kullanırsanız, bu yalnızca şu anda etkin olan pencereyi etkiler.

İlgili konular