2010-06-01 103 views
0

我有一個用vb.net編寫的.exe應用程序。當我對應用程序進行快捷操作時,在桌面(或其他任何地方)說,然後點擊它們,我想以編程方式獲得該快捷方式的路徑,即。 C:/Users/xxx/Desktop/shortcut.lnk。如何在.net中獲取快捷方式(不是目標路徑)的路徑?

我想這個,所以我可以存儲雙快捷鍵:(程序+不同的cmd參數)。

+0

你見過這個其他問題:http://stackoverflow.com/questions/1125958/how-do-i-discover-how-my-process-was-started? – 2010-06-01 10:05:37

+0

現在我有,但仍然不知道如何得到我想要的。 昏暗PC作爲的PerformanceCounter =新的PerformanceCounter( 「過程」, 「創建進程ID」,Process.GetCurrentProcess.ProcessName) 昏暗SDIC作爲Specialized.StringDictionary = Process.GetProcessById(CTYPE(pc.NextValue,整數))。StartInfo的.EnvironmentVariables 我試過這個,在sDic中沒有包含「Desktop」的值(我把一個快捷方式放到了我的桌面上)。 – okkko 2010-06-01 13:16:09

+0

從http://msdn.microsoft.com/zh-cn/netframework/aa569609.aspx#Question5: System.WMI Win32_Process有一個字段CommandLine。有關此類的詳細信息,請參閱MSDN文檔。 我看了一下,但它似乎很複雜/不知道該怎麼做.. – okkko 2010-06-01 13:36:34

回答

1

你的桌面不會是父進程,因爲它不是一個進程,我假設資源管理器或其他東西是從快捷方式開始的。

獲取所需內容的最簡單方法是更改​​快捷方式,以便在啓動應用程序時將某些參數發送給您的應用程序。例如,桌面上的快捷方式可以通過字符串「桌面」發送。然後你可以把它作爲一個普通的命令行參數。

如果你已經宣佈Main功能:

Public Shared Sub Main(ByVal args As String()) 

然後,它會顯示爲args參數的字符串之一。

+0

簡單得多,那麼當你添加一個新的快捷方式到系統時,你不必改變你的exe文件。 – 2010-06-02 08:11:09

相關問題