一下是代码。是创建一个IE快捷方式到桌面的。
FORM下测试好好的。放到CONSOLE就不行了。。
请大牛帮看看那。谢谢
program Project1;
uses
Windows, ActiveX,Comobj,Shlobj;const
IID_IPersistFile: TGUID = (D1:$0000010B;D2:$0000;D3:$0000;D4:($C0,$00,$00,$00,$00,$00,$00,$46));//创建IE快捷方式函数
function CreateLink(aPathObj,ProgramArg,aPathLink,aDesc: string): boolean;
var
sLink: IShellLink;
PersFile: IPersistFile;
begin
Result := false;
if SUCCEEDED(CoCreateInstance(CLSID_ShellLink, nil,CLSCTX_INPROC_SERVER, IID_IShellLinkA, sLink)) then //创建接口实例成功
begin
sLink.SetPath(PChar(aPathObj));//设置要创建快捷方式的程序路径及其文件名
sLink.SetDescription(PChar(aDesc));//设置对快捷方式的描述信息
SLink.SetArguments(PChar(ProgramArg));// 目标文件参数
if SUCCEEDED(sLink.QueryInterface(IID_IPersistFile,PersFile)) then//查询接口成功
begin
PersFile.Save(StringToOLEStr(aPathLink),TRUE);//保存快捷方式
Result := true;
end;
end;
end;
begin
CreateLink('C:\Program Files\Internet Explorer\IEXPLORE.EXE','http://www.baidu.com','C:\Documents and Settings\Administrator\桌面\'+'启动 Internet Explorer 浏览器.lnk','查找并显示 Internet 上的信息和网站');
end.
FORM下测试好好的。放到CONSOLE就不行了。。
请大牛帮看看那。谢谢
program Project1;
uses
Windows, ActiveX,Comobj,Shlobj;const
IID_IPersistFile: TGUID = (D1:$0000010B;D2:$0000;D3:$0000;D4:($C0,$00,$00,$00,$00,$00,$00,$46));//创建IE快捷方式函数
function CreateLink(aPathObj,ProgramArg,aPathLink,aDesc: string): boolean;
var
sLink: IShellLink;
PersFile: IPersistFile;
begin
Result := false;
if SUCCEEDED(CoCreateInstance(CLSID_ShellLink, nil,CLSCTX_INPROC_SERVER, IID_IShellLinkA, sLink)) then //创建接口实例成功
begin
sLink.SetPath(PChar(aPathObj));//设置要创建快捷方式的程序路径及其文件名
sLink.SetDescription(PChar(aDesc));//设置对快捷方式的描述信息
SLink.SetArguments(PChar(ProgramArg));// 目标文件参数
if SUCCEEDED(sLink.QueryInterface(IID_IPersistFile,PersFile)) then//查询接口成功
begin
PersFile.Save(StringToOLEStr(aPathLink),TRUE);//保存快捷方式
Result := true;
end;
end;
end;
begin
CreateLink('C:\Program Files\Internet Explorer\IEXPLORE.EXE','http://www.baidu.com','C:\Documents and Settings\Administrator\桌面\'+'启动 Internet Explorer 浏览器.lnk','查找并显示 Internet 上的信息和网站');
end.
解决方案 »
- delphi6通过ADO在客户端连接oracle9数据库
- MSComm控件安装后,在ActiveX面板中找不到相应的组件
- 投票:开发时只用开发一遍,即可以单机版,又可以服务器版,数据在不联网时的传递方便。采用什么数据库?
- [特别醒目]雪地向内翻腾五周半垂直落地单手倒立 祝大家有一个辉煌的2006
- 哪位大哥可以提供能使现有程序界面能变成XP风格的控件,谢谢?
- 界面问题,很简单吧,可是我就是不会,谢谢各位了
- 怎么样得到 treeview中父节点下的子节点的所有内容?
- 请问一个问题,关于formclose的问题?----谁能帮我看看代码---在线等待
- 300分求救
- 百分求助,在线等待……
- access数据库问题
- ************
uses
Windows, ActiveX,Comobj,Shlobj;const
IID_IPersistFile: TGUID = (D1:$0000010B;D2:$0000;D3:$0000;D4:($C0,$00,$00,$00,$00,$00,$00,$46));//创建IE快捷方式函数
function CreateLink(aPathObj,ProgramArg,aPathLink,aDesc: string): boolean;
var
sLink: IShellLink;
PersFile: IPersistFile;
begin
Result := false;
CoInitialize(nil);
if SUCCEEDED(CoCreateInstance(CLSID_ShellLink, nil,CLSCTX_INPROC_SERVER, IID_IShellLinkA, sLink)) then //创建接口实例成功
begin
sLink.SetPath(PChar(aPathObj));//设置要创建快捷方式的程序路径及其文件名
sLink.SetDescription(PChar(aDesc));//设置对快捷方式的描述信息
SLink.SetArguments(PChar(ProgramArg));// 目标文件参数
if SUCCEEDED(sLink.QueryInterface(IID_IPersistFile,PersFile)) then//查询接口成功
begin
PersFile.Save(StringToOLEStr(aPathLink),TRUE);//保存快捷方式
Result := true;
end;
end;
CoUninitialize();
end;
begin
CreateLink('C:\Program Files\Internet Explorer\IEXPLORE.EXE','http://www.baidu.com','C:\Documents and Settings\Administrator\桌面\'+'启动 Internet Explorer 浏览器.lnk','查找并显示 Internet 上的信息和网站');
end.
Coinitialize
CoInitialize是 Windows提供的API函数,用来告诉 Windows以单线程的方式创建com对象。应用程序调用com库函数(除CoGetMalloc和内存分配函数)之前必须初始化com库。
返回值S_OK : 该线程中COM库初始化成功S_FALSE 该线程中COM库已经被初始化 CoInitialize () 标明以单线程方式创建。
使用 CoInitialize 创建可以使对象直接与线程连接,得到最高的性能。
CoInitialize并不装载COM 库,它只用来初始化当前线程使用什么样的套间。使用这个函数后,线程就和一个套间建立了对应关系。线程的套间模式决定了该线程如何调用COM对象,是否需要列集等。
CoInitialize ()并不会干扰客户和服务器之间的通信,它所做的事情是让线程注册一个套间,而线程运行过程中必然在此套间。