1,在Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\下取得SendTo的路径,然后在该路径下生成你的.lnk文件,BOOL CMainFrame::CreateLink(LPSTR szPath, LPSTR szLink)
{
HRESULT hres ;
IShellLink *psl ;
IPersistFile *ppf ;
WORD wsz[MAX_PATH] ; //创建一个IShellLink实例
hres = CoCreateInstance(
CLSID_ShellLink,
NULL,
CLSCTX_INPROC_SERVER,
IID_IShellLink,
(void **)&psl
);
if(FAILED(hres))
return FALSE; //设置目标应用程序
psl->SetPath(szPath); //设置快捷键(此处设为Shift+Ctrl+'R')
psl->SetHotkey(MAKEWORD('R', HOTKEYF_SHIFT | HOTKEYF_CONTROL)); //从IShellLink获取其IPersistFile接口
//用于保存快捷方式的数据文件 (*.lnk)
hres = psl->QueryInterface(IID_IPersistFile, (void**)&ppf); if(FAILED(hres))
return FALSE ; // 确保数据文件名为ANSI格式
MultiByteToWideChar(
CP_ACP,
0,
szLink,
-1,
wsz,
MAX_PATH) ;
//调用IPersistFile::Save
//保存快捷方式的数据文件 (*.lnk)
hres = ppf->Save(wsz, STGM_READWRITE); //释放IPersistFile和IShellLink接口
ppf->Release();
psl->Release(); return TRUE;
}2,StrCopy(VarPChar, PChar(Edit1.Caption));3,拦截TWMSysCommand即可。
{
HRESULT hres ;
IShellLink *psl ;
IPersistFile *ppf ;
WORD wsz[MAX_PATH] ; //创建一个IShellLink实例
hres = CoCreateInstance(
CLSID_ShellLink,
NULL,
CLSCTX_INPROC_SERVER,
IID_IShellLink,
(void **)&psl
);
if(FAILED(hres))
return FALSE; //设置目标应用程序
psl->SetPath(szPath); //设置快捷键(此处设为Shift+Ctrl+'R')
psl->SetHotkey(MAKEWORD('R', HOTKEYF_SHIFT | HOTKEYF_CONTROL)); //从IShellLink获取其IPersistFile接口
//用于保存快捷方式的数据文件 (*.lnk)
hres = psl->QueryInterface(IID_IPersistFile, (void**)&ppf); if(FAILED(hres))
return FALSE ; // 确保数据文件名为ANSI格式
MultiByteToWideChar(
CP_ACP,
0,
szLink,
-1,
wsz,
MAX_PATH) ;
//调用IPersistFile::Save
//保存快捷方式的数据文件 (*.lnk)
hres = ppf->Save(wsz, STGM_READWRITE); //释放IPersistFile和IShellLink接口
ppf->Release();
psl->Release(); return TRUE;
}2,StrCopy(VarPChar, PChar(Edit1.Caption));3,拦截TWMSysCommand即可。
var
p:pchar;
caption:strng;
p:=pchar(caption);
3,在form.onclosequery
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose:=false;
end;