c# - 如何在由快捷方式启动的程序中获取(.lnk)快捷方式文件路径?

标签 c# windows winapi

我有一个打开 *.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/

相关文章:

c# - Wix 安装程序 : Error when tring to run a custom action from a button click - A DLL required for this install to complete could not be run

c# - Unity + Leap Motion : error CS0246 (namespace) issue

c# - ASP.NET Web 应用程序中的身份验证遇到问题

java - 我可以在崩溃的 OS API 周围放置 try/catch 吗?

c# - ASP.NET MVC : Hidden field value does not get rendered using HtmlHelper. 隐藏

c# - 拒绝访问!?我无法从 C 驱动器上的安装文件夹中打开文件

c++ - 如何声明库和应用程序之间共享的类

windows - 安装 Visual Studio Community 2013 时无法将当前用户添加到 Hyper-V 管理员组错误

delphi - 在 Delphi/Win32 中将图像放入组合框(右侧边缘)内

c++ - 发现用户是否具有管理员权限