获取快捷方式里面的参数(BCB)

来源:互联网 发布:17年网络流行词 编辑:程序博客网 时间:2024/05/23 11:52

 

写之前搜出了n多结果,不是delphi代码就是只有创建和删除的,没有获取参数的,而且不是很好,只好自己研究了……

例子是用WCHAR传入的,未做文件名检查,默认为传入的一定是lnk文件,比如”d:/rungame.lnk”

头文件需要包含#include <shlobj.h>,并在cpp文件的顶部加上#define NO_WIN32_LEAN_AND_MEAN
void __fastcall GetLnkInfo(const WCHAR* FileName)
{
   CoInitialize( 
0 );

   IShellLinkW
* psl;
   IPersistFile
* ppf;

   WCHAR Arg[INFOTIPSIZE];
   WCHAR AppPath[
1024];

   CoCreateInstance( CLSID_ShellLink, 
0, CLSCTX_INPROC_SERVER, IID_IShellLinkW, (void **)&psl );
   psl
->QueryInterface( IID_IPersistFile, (void**)&ppf );
   ppf
->Load( FileName, STGM_READ );
   psl
->GetPath( AppPath, 10240, SLGP_UNCPRIORITY );//得到参数
   psl
->GetArguments( Arg, INFOTIPSIZE );//得到全路径
   //把下面改成自己的就可以了
   AppNameEdit
->Text = AppPath;
   ArgEdit
->Text = Arg;

   ppf
->Release();
   psl
->Release();

   CoUninitialize();
}
原创粉丝点击