其实很简单,使用 API 函数 ShellExecute,就可以解决这个问题。
首先添加引用 using System.Runtime.InteropServices;
代码如下:
using System;
using System.Runtime.InteropServices; namespace WINLOCK
{
public class APIHelper
{
[DllImport("shell32.dll")]
public static extern IntPtr ShellExecute(
IntPtr hwnd,
string lpOperation,
string lpFile,
string lpParameters,
string lpDirectory,
ShowCommands nShowCmd);
} public enum ShowCommands : int
{
SW_HIDE = ,
SW_SHOWNORMAL = ,
SW_NORMAL = ,
SW_SHOWMINIMIZED = ,
SW_SHOWMAXIMIZED = ,
SW_MAXIMIZE = ,
SW_SHOWNOACTIVATE = ,
SW_SHOW = ,
SW_MINIMIZE = ,
SW_SHOWMINNOACTIVE = ,
SW_SHOWNA = ,
SW_RESTORE = ,
SW_SHOWDEFAULT = ,
SW_FORCEMINIMIZE = ,
SW_MAX =
}
}
调用方法:
ShellExecute(IntPtr.Zero, "TaskbarPin", FileName, null, null, ShowCommands.SW_SHOW);
其中,参数 "TaskbarPin" 为锁定,如果需要解锁,使用 "TaskbarunPin";
FileName 为 *.lnk 的绝对路径(注:一定要是快捷方式);
返回值为 IntPtr 句柄类型,大于32,说明执行成功。
当路径不存在或者该快捷方式已经锁定到任务栏时,会执行失败。