2015-04-17 23 views
5

Làm cách nào để mở menu ngữ cảnh của cửa sổ (ngữ cảnh Windows bình thường xuất hiện khi bạn Nhấp chuột phải thanh tiêu đề của cửa sổ).Làm cách nào để mở menu ngữ cảnh của bất kỳ cửa sổ nào?

Những điều tôi đã cố gắng (trên một nút bấm)

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

Và đây:

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

Bạn muốn mở menu ngữ cảnh nào trên cửa sổ nào? Nó luôn luôn là của bạn hay cũng trong các quá trình khác? Ngoài ra, bạn có thực sự xác định một menu ngữ cảnh có thể mở được không, nếu đó là cửa sổ của riêng bạn? Nếu điều khiển đó mà bạn muốn mở menu ngữ cảnh không có, thì bạn không thể mở nó. –

+0

GetSystemMenu -> TrackPopupMenu có lẽ –

+1

Đặt Tập trung vào cửa sổ và gửi ALT + Dấu cách đến đó. Với Winforms SendKeys.Send ("%") – Ralf

Trả lời

4

Để mở menu ngữ cảnh hệ thống trên một cửa sổ, bạn có thể nhấn Alt + Space. Vì vậy, trong trường hợp của bạn, bạn có thể gửi các phím đó đến cửa sổ đó, sẽ mở menu ngữ cảnh cho bạn.

Phần bạn đã thực hiện với SendMessage thực sự chỉ gửi thông báo rằng cửa sổ được chỉ định mô phỏng nhấp chuột phải. Nhưng nó vẫn quan trọng nơi con chuột.

Cũng quan trọng: Nếu bạn sử dụng "SendKeys.Send" (đối với biểu mẫu cửa sổ), điều này sẽ chỉ ảnh hưởng đến cửa sổ hiện đang hoạt động.

Các vấn đề liên quan