2017-03-23 126 views
0

我想將自定義操作添加到每個窗口的標題欄上下文菜單。目標是在任務視圖中添加一個選項,您可以將窗口移動到不同的虛擬桌面。我可以使用C#中的GlobalHotKey和WindowsDesktop軟件包通過熱鍵完成此操作。但是我想在用戶界面中執行它,類似於某些Linux桌面環境。自定義標題欄上下文菜單操作

我知道像您可以與其他上下文菜單無法正常做到這一點與註冊表。在創建您自己的應用程序時,我知道您可以使用GetSystemMenu,AppendMenu等,並覆蓋WndProc來處理它。但這顯然不符合我的意圖。

應用Moo0窗口菜單加上達到預期的效果,但我不知道他們是如何做到這一點。

我有一種感覺,解決方案可能是有點哈克,但我仍想知道如何可以做到。我願意使用任何語言來實現這一點。

回答

1

你需要注入的過程,即是增加一個菜單項的唯一途徑。

一個外殼hook將在創建相應的窗口時通知您HSHELL_WINDOWCREATED。然後您可以注入進程(使用另一個鉤子類型或CreateRemoteThread)。一旦你在你的.DLL過程中,你可以繼承窗口並更改系統菜單。

您需要同時創建32位和64位注射.DLL,我會建議你把它寫在本機代碼,而不是C#。