C# 检测应用程序是否固定到任务栏
我有一个C#/WPF应用程序,我想根据它是否是从windows任务栏上的固定链接启动的,给出不同的行为C# 检测应用程序是否固定到任务栏,c#,wpf,windows,taskbar,C#,Wpf,Windows,Taskbar,我有一个C#/WPF应用程序,我想根据它是否是从windows任务栏上的固定链接启动的,给出不同的行为 有没有办法检测我的应用程序是否被固定到任务栏上 有没有办法检测我的应用程序是否已从任务栏上的固定项目启动 您可以通过检查文件夹%appdata%\Microsoft\internetexplorer\Quick Launch\user pinted\task来检测当前用户的应用程序是否被固定到任务栏,所有固定应用程序的快捷方式都存储在该文件夹中。例如(需要向Windows脚本主机对象模型添加C
您可以通过检查文件夹
%appdata%\Microsoft\internetexplorer\Quick Launch\user pinted\task
来检测当前用户的应用程序是否被固定到任务栏,所有固定应用程序的快捷方式都存储在该文件夹中。例如(需要向Windows脚本主机对象模型添加COM引用):
还有一种方法可以检测应用程序是否从固定的项目启动。为此,您需要GetStartupInfo
WinAPI函数。在其他信息中,它将为您提供当前进程启动时使用的快捷方式(或仅文件)的完整路径。例如:
[DllImport("kernel32.dll", SetLastError = true, EntryPoint = "GetStartupInfoA")]
public static extern void GetStartupInfo(out STARTUPINFO lpStartupInfo);
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct STARTUPINFO
{
public uint cb;
public string lpReserved;
public string lpDesktop;
public string lpTitle;
public uint dwX;
public uint dwY;
public uint dwXSize;
public uint dwYSize;
public uint dwXCountChars;
public uint dwYCountChars;
public uint dwFillAttribute;
public uint dwFlags;
public ushort wShowWindow;
public ushort cbReserved2;
public IntPtr lpReserved2;
public IntPtr hStdInput;
public IntPtr hStdOutput;
public IntPtr hStdError;
}
用法:
STARTUPINFO startInfo;
GetStartupInfo(out startInfo);
var startupPath = startInfo.lpTitle;
现在,如果您已经从任务栏启动了应用程序,startupPath
将指向%appdata%\Microsoft\internetexplorer\Quick Launch\User pinted\taskbar
的快捷方式,因此有了所有这些信息,就可以轻松检查应用程序是否从任务栏启动
STARTUPINFO startInfo;
GetStartupInfo(out startInfo);
var startupPath = startInfo.lpTitle;