2011-07-13 47 views
2

我知道如何爲我的應用程序構建JumpList。但是現在我想爲JumpList顯示特定的「.exe」文件。我有一個'.exe'文件的路徑,我需要爲這個應用程序顯示JumpList。當用戶在任務欄上的應用程序圖標上單擊鼠標右鍵時會顯示JumpList窗口,但我需要以編程方式顯示此窗口。如何以編程方式打開特定「.exe」文件的JumpList窗口?

+3

我不相信你可以。但是,您可以獲取MRU文件(也可能是任務或自定義目標),並以您自己的UI顯示給用戶。 –

回答

2

從小事研究,我做到了,它可以可以通過打開並讀取%AppData%\ Microsoft \ Windows \ Recent \ Automatic目的文件的內容來完成。

那裏的文件包含跳轉列表文件的擴展名,通過閱讀這些文件,您可以找到文件通過檢查重複出現的文件擴展名包含您想要的應用程序的跳轉列表。通過知道您想要檢索的應用程序的文件擴展名,您可以找到它的跳轉列表文件。當然,您可以使用註冊表查找應用程序的文件擴展名。

編輯:第二次閱讀您的文章:原諒我,教你寫一個應用程序來取代windows任務欄。那麼,你的問題似乎很艱難。這些步驟可能工作:

  1. 就拿桌面的截圖,發現你正在尋找應用程序(這是檢索 編程)
  2. 減的圖標 相匹配的部分或圖像匹配從屏幕截圖中獲取屏幕上的位置
  3. 調用鼠標右鍵單擊屏幕上的該位置。

ps:用於Windows 7的api code pack也可能證明是有用的。

0

跳轉列表是可以添加的選項列表中的安全用戶界面的一部分,但顯示本身必須被用戶啓動列表很像上下文菜單做的,鼠標點擊

2

你也許可以用Window Messages來做到這一點。您可以使用像Spy++這樣的工具來了解任務欄如何構建其子窗口等。一旦瞭解它的工作原理,您很可能需要登錄SetFocus併發送如WM_MOUSECLICK這樣的消息。

如果每個按鈕是不是一個真正的按鈕(只是畫「虛擬」按鈕),你將需要使用一些數學計算出的座標爲WM_MOUSECLICK(您可能需要使用WM_MOUSEDOWNWM_MOUSEUP實驗)。請記住,任務欄可以錨定到桌面的不同邊緣,並且可以調整爲16px按鈕。

如果聽起來像是黑客攻擊,我記得微軟明確表示他們不會爲開發人員提供新的任務欄控制級別。

您可能會發現PInvoke Wiki對獲得DllImport定義有用。

我在XP(自定義開始菜單)前的任務欄砍死,所以這應該是可能的Windows 7

+0

'WM_MOUSECLICK'不存在,因此我們必須使用'WM_LBUTTONDOWN'和'WM_LBUTTONUP'。 –

1

您可以使用庫「Teststack.White」(簡單的NuGet),然後使用這個

var desktop = Desktop.Instance; 
var taskList = desktop.Get<ToolStrip>(SearchCriteria.ByClassName("MSTaskListWClass")); 
var button = taskList.Get<Button>(SearchCriteria.ByText(Text)); 
button.RightClick(); 
相關問題