其实很简单,使用 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,说明执行成功。

当路径不存在或者该快捷方式已经锁定到任务栏时,会执行失败。

05-22 07:24