怎样用iShellLink生成快捷方式? 我用VB制作了一个串口通信的程序,但打不上包。所以自己用DELPHI制作了一个安装程序,但是不知道怎样创建快捷方式,请各位高手指教。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 uses Registry,ShlObj,ActiveX,ComObj;//定义快捷方式存放位置桌面,发送,开始菜单type ShortcutType=(_DESKTOP,_QUICKLAUNCH,_SENDTO,_STARTMENU);procedure CreateShortcut( FileName: string;//执行文件名,全路径 description: string;/快捷方式描述 arguments: string;//参数 Location: ShortcutType //存放位置);varMyObject:IUnknown;MySLink:IShellLink;MyPFile:IPersistFile;Directory,LinkName:string;WFileName:WideString;MyReg,QuickLaunchReg:TRegIniFile;begin MyObject:=CreateComObject(CLSID_ShellLink);//创建com对象 MySLink:=MyObject as IShellLink;//转化为IShellLink接口 MyPFile:=MyObject as IPersistFile;//转化为IPersistFile接口 MySLink.SetPath(PChar(FileName));//设置执行文件名 MySLink.SetArguments(PChar(arguments));//设置执行参数 MySLink.SetDescription(PChar(Description));//设置描述 MySLink.SetWorkingDirectory(PChar(ExtractFilePath(application.exename)));//设置工作路径为执行程序所在目录 //取存放位置的实际目录 MyReg:=TRegIniFile.Create('Software\MicroSoft\Windows\CurrentVersion\Explorer'); try LinkName:=ChangeFileExt(FileName,'.lnk');//生成快捷方式文件名 LinkName:=ExtractFileName(LinkName);//取文件主名 Case Location of _DESKTOP :Directory:=MyReg.ReadString('Shell Folders','Desktop',''); _STARTMENU :Directory:=MyReg.ReadString('Shell Folders','Start Menu',''); _SENDTO :Directory:=MyReg.ReadString('Shell Folders','SendTo',''); _QUICKLAUNCH: begin QuickLaunchReg:=TRegIniFile.Create('Software\MicroSoft\Windows\CurrentVersion\GrpConv'); try Directory:=QuickLaunchReg.ReadString('MapGroups','Quick Launch',''); finally QuickLaunchReg.Free; end; end; end; if Directory<>'' then begin WFileName:=Directory+'\'+LinkName;//合成存放快捷方式文件全路径名 MyPFile.Save(PWChar(WFileName),False);//保存快捷文件 end; finally MyReg.Free; end;end; 再给你一个例子:unit ShCutF;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Button1: TButton; EditName: TEdit; Label1: TLabel; Button2: TButton; GroupBox1: TGroupBox; cbDir: TCheckBox; cbDesktop: TCheckBox; cbStartMenu: TCheckBox; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.DFM}uses ComObj, ActiveX, ShlObj, Registry;procedure TForm1.Button1Click(Sender: TObject);var AnObj: IUnknown; ShLink: IShellLink; PFile: IPersistFile; FileName: string; WFileName: WideString; Reg: TRegIniFile;begin 的两个接口 AnObj := CreateComObject (CLSID_ShellLink); ShLink := AnObj as IShellLink; PFile := AnObj as IPersistFile; FileName := ParamStr (0); ShLink.SetPath (PChar (FileName)); ShLink.SetWorkingDirectory (PChar ( ExtractFilePath (FileName))); //将文件保存在当前目录里 if cbDir.Checked then begin WFileName := ExtractFilePath (FileName) + EditName.Text + '.lnk'; PFile.Save (PWChar (WFileName), False); end; // 保存在桌面 if cbDesktop.Checked then begin Reg := TRegIniFile.Create( 'Software\MicroSoft\Windows\CurrentVersion\Explorer'); WFileName := Reg.ReadString ('Shell Folders', 'Desktop', '') + '\' + EditName.Text + '.lnk'; Reg.Free; PFile.Save (PWChar (WFileName), False); end; // 保存在开始菜单里 if cbStartMenu.Checked then begin Reg := TRegIniFile.Create( 'Software\MicroSoft\Windows\CurrentVersion\Explorer'); WFileName := Reg.ReadString ('Shell Folders', 'Start Menu', '') + '\' + EditName.Text + '.lnk'; Reg.Free; PFile.Save (PWChar (WFileName), False); end;end;procedure TForm1.Button2Click(Sender: TObject);var ProjectFile: string;begin ProjectFile := ChangeFileExt (ParamStr (0), '.dpr'); SHAddToRecentDocs (SHARD_PATH, PChar(ProjectFile));end;end. 关于使用DLL实现窗体重用 画类CAD那相提并样的线,请教 在线等,QuickRep中要输出竖列的文字怎么做? 怎样将数据库内的数据导入EXECEL 或 WORD 中动态生成表格 请 maoke000 进来拿分!!! 高分求解一个怪问题:执行完query.open 之后就没法打开数据库文件 有什么控件可以把按钮增加颜色设置吗? 开发三层的用Asta好吗?它是免费的吗? 关于DELPHI版本,6,7,8哪个好? 关于sql字段的问题!!!!! 如何用sql语句或存储过程执行dts?谢谢! 关于ord函数的问题
type
ShortcutType=(_DESKTOP,_QUICKLAUNCH,_SENDTO,_STARTMENU);procedure CreateShortcut(
FileName: string;//执行文件名,全路径
description: string;/快捷方式描述
arguments: string;//参数
Location: ShortcutType //存放位置
);
var
MyObject:IUnknown;
MySLink:IShellLink;
MyPFile:IPersistFile;
Directory,LinkName:string;
WFileName:WideString;
MyReg,
QuickLaunchReg:TRegIniFile;
begin
MyObject:=CreateComObject(CLSID_ShellLink);//创建com对象
MySLink:=MyObject as IShellLink;//转化为IShellLink接口
MyPFile:=MyObject as IPersistFile;//转化为IPersistFile接口
MySLink.SetPath(PChar(FileName));//设置执行文件名
MySLink.SetArguments(PChar(arguments));//设置执行参数
MySLink.SetDescription(PChar(Description));//设置描述
MySLink.SetWorkingDirectory(PChar(ExtractFilePath(application.exename)));//设置工作路径为执行程序所在目录
//取存放位置的实际目录
MyReg:=TRegIniFile.Create('Software\MicroSoft\Windows\CurrentVersion\Explorer');
try
LinkName:=ChangeFileExt(FileName,'.lnk');//生成快捷方式文件名
LinkName:=ExtractFileName(LinkName);//取文件主名
Case Location of
_DESKTOP :Directory:=MyReg.ReadString('Shell Folders','Desktop','');
_STARTMENU :Directory:=MyReg.ReadString('Shell Folders','Start Menu','');
_SENDTO :Directory:=MyReg.ReadString('Shell Folders','SendTo','');
_QUICKLAUNCH:
begin
QuickLaunchReg:=TRegIniFile.Create('Software\MicroSoft\Windows\CurrentVersion\GrpConv');
try
Directory:=QuickLaunchReg.ReadString('MapGroups','Quick Launch','');
finally
QuickLaunchReg.Free;
end;
end;
end;
if Directory<>'' then begin
WFileName:=Directory+'\'+LinkName;//合成存放快捷方式文件全路径名
MyPFile.Save(PWChar(WFileName),False);//保存快捷文件
end;
finally
MyReg.Free;
end;
end;
unit ShCutF;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
EditName: TEdit;
Label1: TLabel;
Button2: TButton;
GroupBox1: TGroupBox;
cbDir: TCheckBox;
cbDesktop: TCheckBox;
cbStartMenu: TCheckBox;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}uses
ComObj, ActiveX, ShlObj, Registry;procedure TForm1.Button1Click(Sender: TObject);
var
AnObj: IUnknown;
ShLink: IShellLink;
PFile: IPersistFile;
FileName: string;
WFileName: WideString;
Reg: TRegIniFile;
begin
的两个接口
AnObj := CreateComObject (CLSID_ShellLink);
ShLink := AnObj as IShellLink;
PFile := AnObj as IPersistFile;
FileName := ParamStr (0); ShLink.SetPath (PChar (FileName));
ShLink.SetWorkingDirectory (PChar (
ExtractFilePath (FileName))); //将文件保存在当前目录里
if cbDir.Checked then
begin
WFileName := ExtractFilePath (FileName) +
EditName.Text + '.lnk';
PFile.Save (PWChar (WFileName), False);
end; // 保存在桌面
if cbDesktop.Checked then
begin
Reg := TRegIniFile.Create(
'Software\MicroSoft\Windows\CurrentVersion\Explorer');
WFileName := Reg.ReadString ('Shell Folders', 'Desktop', '') +
'\' + EditName.Text + '.lnk';
Reg.Free;
PFile.Save (PWChar (WFileName), False);
end; // 保存在开始菜单里
if cbStartMenu.Checked then
begin
Reg := TRegIniFile.Create(
'Software\MicroSoft\Windows\CurrentVersion\Explorer');
WFileName := Reg.ReadString ('Shell Folders', 'Start Menu', '') +
'\' + EditName.Text + '.lnk';
Reg.Free;
PFile.Save (PWChar (WFileName), False);
end;
end;procedure TForm1.Button2Click(Sender: TObject);
var
ProjectFile: string;
begin
ProjectFile := ChangeFileExt (ParamStr (0), '.dpr');
SHAddToRecentDocs (SHARD_PATH, PChar(ProjectFile));
end;end.