2011-02-28 1313 views
1

我有一個啓動另一個應用程序的啓動程序。對於其他應用可以很好地與Windows 7的任務欄配合使用,我必須設置Application User Model ID設置應用程序其他進程的用戶模型ID

通常一個進程必須通過調用SetCurrentProcessExplicitAppUserModelID()來設置它自己的id,但在這種特殊情況下我沒有控制其他應用程序的啓動代碼,所以我必須在外部設置它,最好是通過使用某種ShellExecute將ID傳遞給應用程序。

這可能嗎?

+0

爲什麼這個其他應用程序需要一個明確的ID? – Anders 2011-02-28 14:26:55

回答

2

如果Windows沒有調用SetCurrentProcessExplicitAppUserModelID,它將自動爲進程生成一個id,這對於最近的文件jumplist部分應該足夠了。

如果出於某種原因真的要爲第三方應用程序的特定ID,我會嘗試的其中之一(我還沒有嘗試過任何這些建議)

  • 使用SHGetPropertyStoreForWindow的應用程序窗口(我從來沒有試圖設置這樣的ID,但我知道你可以通過這種方式讀取另一個進程的ID)
  • 創建一個臨時快捷方式,啓動具有特定ID的應用程序
  • 注入進程並調用SetCurrentProcessExplicitAppUserModelID
+0

第二個選項聽起來很合理! – Daniel 2011-02-28 14:46:18

+0

@Daniel:我還是不明白你爲什麼要這麼做... – Anders 2011-02-28 15:03:18

+0

Okey,剛剛嘗試過,第二個選項也有缺點。問題是:我有一個從啓動器啓動的Java應用程序,它檢查更新。 Java應用程序使用Exe4J進行編譯,該程序本身顯示一個閃屏,這會在任務欄中顯示一個圖標。在顯示啓動屏幕時,我在任務欄中有兩個圖標,因爲Java應用程序不會從父進程繼承應用程序ID,並且來自Java應用程序本身的應用程序ID太晚,因爲啓動屏幕顯示有意在jvm加載之前。 – Daniel 2011-02-28 16:21:52

相關問題