生成——桌面快捷方式,用IshellLink接口时需要 调用什么*.dcu 单元文件?还有一个问题,和上面的差不多,怎么样才能知道,程序需要哪个*.dcu 文件。
解决方案 »
- 界面设计的时候在窗口里面怎么画一根直线啊?
- delphi 用MsComm控制手机发送短信,可以发送但是得不到“ok”或者“Error”的返回值的问题,急
- 如何动态设置quickreport的横打竖打?
- 高手们请进来帮忙,TcpClient,Tcpserver怎样实现多客户端(在线等)
- SQL SERVER用Backup命令备份时怎么获得备份进度
- 关于QuickReport的保存到文件如何实现?
- 怎样通过程序执行一个外部文件 .exe
- 如何設置delphi 的用戶的默認路徑,就像word ,excel一樣!!!
- 我用ADO都取数据库,想做一个打印功能,不知能否用TquickRep控件调用TADOQuery查询的结果,如果不能,应该怎么做打印程序?
- 求购Excel东东
- 怎样编程判断button的单击是否发生
- 我的感情问题,请大家帮帮忙。
第二个问题,怎么才能知道程序需要调用哪个 *.dcu文件,也就是API封装问题。
难道只能经验积累吗?!!
如果是SHELL或是COM的话,则用COMOBJ,SHLOBJ
其它的VCL的话,在DELPHI的帮助中是有说明的,它属于哪个DCU文件
tmpObject : IUnknown;
tmpSLink : IShellLink;
tmpPFile : IPersistFile;
PIDL : PItemIDList;
StartupDirectory : array[0..MAX_PATH] of Char;
StartupFilename : String;
LinkFilename : WideString;
begin
StartupFilename := 'c:\windows\notepad.exe';
tmpObject := CreateComObject(CLSID_ShellLink);//创建建立快捷方式的外壳扩展
tmpSLink := tmpObject as IShellLink;//取得接口
tmpPFile := tmpObject as IPersistFile;//用来储存*.lnk文件的接口
tmpSLink.SetPath(pChar(StartupFilename));//设定notepad.exe所在路径
tmpSLink.SetWorkingDirectory(pChar(ExtractFilePath(StartupFilename)));//设定工作目录
SHGetSpecialFolderLocation(0,
CSIDL_DESKTOPDIRECTORY,
PIDL);//获得桌面的Itemidlist
SHGetPathFromIDList(PIDL,
StartupDirectory);//获得桌面路径
LinkFilename := StartupDirectory + '\zw.lnk';
tmpPFile.Save(pWChar(LinkFilename),FALSE);//保存*.lnk文件
end;end.
谢谢了!我也有这段代码,可是编译时好像需要*。dcu文件,你编译通过了吗?
错误好像出在这里!!真弄不懂你怎么通过的!!
把全部都帖出来
没有加入activex。
USES shlobj,comobj,activex, StdCtrls;
是需要加的!!给份了!!谢谢大家!