我有一个打开 *.postfix 文件的 c# 程序。
如果用户运行指向我的文件类型的 (.lnk) 快捷方式,我的程序将打开目标。
那么,我的程序怎么知道它是由 (.lnk) 快捷方式启动的(并获取它的文件路径)?
在某些情况下,我需要替换.lnk 文件。
谢谢!
已编辑 首先,感谢回答我问题的人。
通过关注@Anders 的回答,我发现我的问题出在这里。
我对 Windows 注册表进行了一些更改,因此浏览器知道将自定义协议(protocol)字符串抛给特定程序。
像这样的事情..
[互联网快捷方式] URL=myProtocol://abcdefg.....
这也许就是我丢失 lpTitle 的原因。 :(
我打算这样尝试: 每当我的程序调用时,当然是输入 %1,程序会检查当前打开的资源管理器(窗口),并尝试使用 IWebBrowserApp 获取它的当前路径。当然有了那个路径和桌面,扫描和分析 *.lnk 以确定替换哪个。
我认为这可能会奏效,但不确定。我会尝试。 续
最佳答案
在 native 代码中,您可以调用 GetStartupInfo ,如果在 STARTUPINFO.dwFlags
中设置了 STARTF_TITLEISLINKNAME
位,则 .lnk 的路径在 STARTUPINFO.lpTitle
中。我不知道是否有 .NET 方法来获取此信息,您可能必须 P/Invoke...
关于c# - 如何在由快捷方式启动的程序中获取(.lnk)快捷方式文件路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8627879/