lnk

王朝百科·作者佚名  2010-01-22  
宽屏版  字体: |||超大  

lnk

lnk 文件是用于指向其他文件(如,程序)的一种文件。 这些文件通常称为快捷方式文件.通常它以快捷方式放在桌面上.以方便使用者快速的调用

其扩展名为.lnk

windows的很多lnk文件(也就是快捷方式)都是带有参数的,但是自己并不真正了解,不知道有谁知道?自己通过实践摸索出一些,希望能给大家带来帮助:

/play—在打开连接后自动运行媒体文件

"%1" —打开连接后自动出现文件选取框选择文件

/Play "%L" —打开winamp后自动出现List选择框选择文件播放列表

“.lnk”是WINDOWS系统默认的快捷方式的扩展名,如果“文件夹选项”下设置为“隐藏已知文件类型的扩展名”,正常情况下“.lnk”是不显示的。你的快捷方式的扩展名显现出来,证明WINDOWS设置被中断,快捷方式为不可识别信息。

修复的方法:

(1)点击“开始”→“运行”,键入“cmd”,进入命令提示符状态,用键盘敲入assoc.lnk=lnkfile(中间无空格),按回车即可。

(2)点击“开始”→“运行”,键入“regedit”,进入注册表,搜索“HKEY_LOCAL_MACHINESOFTWARECLASSES”下的“.lnk”键,修改其值为“lnkfile”,保存即可。

两种办法本质一样,如果你不懂注册表建议采用第一种方法

______________________________________

如何通过lnk文件获取该文件的执行路径和程序

function LinkFileInfo(const lnkFileName:string;var info:LINK_FILE_INFO;const bSet:boolean):boolean;

var

hr:hresult;

psl:IShelllink;

wfd:win32_find_data;

ppf:IPersistFile;

lpw:pwidechar;

buf:pwidechar;

begin

result:=false;

getmem(buf,MAX_PATH);

try

if SUCCEEDED(CoInitialize(nil)) then

if (succeeded(cocreateinstance(clsid_shelllink,nil,clsctx_inproc_server,IID_IShellLinkA,psl))) then

begin

hr:=psl.QueryInterface(iPersistFile,ppf);

if succeeded(hr) then

begin

lpw:=stringtowidechar(lnkfilename,buf,MAX_PATH);

hr := ppf.Load(lpw, STGM_READ);

if succeeded(hr) then

begin

hr := psl.Resolve(0, SLR_NO_UI);

if succeeded(hr) then

begin

if bSet then

begin

psl.SetArguments(info.Arguments);

psl.SetDescription(info.Description);

psl.SetHotkey(info.HotKey);

psl.SetIconLocation(info.IconLocation,info.IconIndex);

psl.SetIDList(info.ItemIDList);

psl.SetPath(info.FileName);

psl.SetShowCmd(info.ShowState);

psl.SetRelativePath(info.RelativePath,0);

psl.SetWorkingDirectory(info.WorkDirectory);

if succeeded(psl.Resolve(0,SLR_UPDATE)) then

result:=true;

end

else

begin

psl.GetPath(info.FileName,MAX_PATH, wfd,SLGP_SHORTPATH );

psl.GetIconLocation(info.IconLocation,MAX_PATH,info.IconIndex);

psl.GetWorkingDirectory(info.WorkDirectory,MAX_PATH);

psl.GetDescription(info.Description,CCH_MAXNAME);

psl.GetArguments(info.Arguments,MAX_PATH);

psl.GetHotkey(info.HotKey);

psl.GetIDList(info.ItemIDList);

psl.GetShowCmd(info.ShowState);

result:=true;

end;

end;

end;

end;

end;

finally

freemem(buf);

end;

end;

//*******************调用*****************

showmessage('FileName:'+info.filename+#13+'Description:'+info.Description+#13+'IconFilename:'+info.IconLocation+','+inttostr(info.IconIndex)+

#13+'WordDir:'+info.WorkDirectory+#13+'Arguments:'+info.Arguments+#13+'ShorCuts:'+shortcuttotext(s));

info.WorkDirectory:='D:\Borland\Delphi5\projects';

linkfileinfo(opendialog1.filename,info,true);

end;

end;

==============================================

function GetLinkFileName(sLinkFileName: string; var sTargetFileName: string): boolean;

var

psl: IShellLink;

ppf: IPersistFile;

hres, nLen: integer;

pfd: TWin32FindData;

pTargetFile: PChar;

pwLinkFileName: PWideChar;

begin

Result := false;

if SUCCEEDED(CoInitialize(nil)) then

begin

CoCreateInstance(CLSID_ShellLink, nil, CLSCTX_INPROC_SERVER, IID_IShellLinkA, psl);

if (SUCCEEDED(hres)) then

begin

hres := psl.QueryInterface(IID_IPersistFile, ppf);

if (SUCCEEDED(hres)) then

begin

nLen := MultiByteToWideChar(CP_ACP, 0, PChar(sLinkFileName), -1, pwLinkFileName, 0);

GetMem(pwLinkFileName, nLen);

ZeroMemory(pwLinkFileName, nLen);

MultiByteToWideChar(CP_ACP, 0, PChar(sLinkFileName), -1, pwLinkFileName, nLen);

ppf.Load(pwLinkFileName, STGM_READ);

GetMem(pTargetFile, MAX_PATH);

ZeroMemory(pTargetFile, MAX_PATH);

hres := psl.GetPath(pTargetFile, MAX_PATH, pfd, SLGP_UNCPRIORITY );

if (SUCCEEDED(hres)) then

begin

sTargetFileName := StrPas(pTargetFile);

Result := true;

end;

FreeMem(pTargetFile);

FreeMem(pwLinkFileName);

end;

end;

end;

end;

 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝百科 版权所有