L
lig
Unregistered / Unconfirmed
GUEST, unregistred user!
各位大虾好:
前几天在大富翁论坛上查资料时找到了这份代码,具体是用来建立桌面快捷方式的。如下所示。
//在桌面上建立快捷方式
procedure TForm1.Button1Click(Sender: TObject);
var
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=(IShellLink*)tmpObject;
tmpPFile=(IPersistFile*)tmpObject;
如果按以上两行代码进行移植,那么程序执行到下一行时会了错。}
tmpSLink.SetPath(pChar(StartupFilename));//设定notepad.exe所在路径
tmpSLink.SetWorkingDirectory(pChar(ExtractFilePath(StartupFilename)));//设定工作目录
SHGetSpecialFolderLocation(0,CSIDL_DESKTOPDIRECTORY,PIDL);//获得桌面的Itemidlist
SHGetPathFromIDList(PIDL,StartupDirectory);//获得桌面路径
LinkFilename := StartupDirectory + '/MyNotepad.lnk';
tmpPFile.Save(pWChar(LinkFilename),FALSE);//保存*.lnk文件
end;
虽然这段代码并不复杂,但是我在把它移植向BCB的过程中依然是出现了很多的问题,出于某种原因,我并不想拿出我移植的代码来让您来改错,而是想看到您所移植具体代码。
给所剩下的分不多了,给30分还算过得去吧?
前几天在大富翁论坛上查资料时找到了这份代码,具体是用来建立桌面快捷方式的。如下所示。
//在桌面上建立快捷方式
procedure TForm1.Button1Click(Sender: TObject);
var
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=(IShellLink*)tmpObject;
tmpPFile=(IPersistFile*)tmpObject;
如果按以上两行代码进行移植,那么程序执行到下一行时会了错。}
tmpSLink.SetPath(pChar(StartupFilename));//设定notepad.exe所在路径
tmpSLink.SetWorkingDirectory(pChar(ExtractFilePath(StartupFilename)));//设定工作目录
SHGetSpecialFolderLocation(0,CSIDL_DESKTOPDIRECTORY,PIDL);//获得桌面的Itemidlist
SHGetPathFromIDList(PIDL,StartupDirectory);//获得桌面路径
LinkFilename := StartupDirectory + '/MyNotepad.lnk';
tmpPFile.Save(pWChar(LinkFilename),FALSE);//保存*.lnk文件
end;
虽然这段代码并不复杂,但是我在把它移植向BCB的过程中依然是出现了很多的问题,出于某种原因,我并不想拿出我移植的代码来让您来改错,而是想看到您所移植具体代码。
给所剩下的分不多了,给30分还算过得去吧?