请问怎样创建快捷方式(内详)?(150分)

  • 主题发起人 主题发起人 Iveny
  • 开始时间 开始时间
I

Iveny

Unregistered / Unconfirmed
GUEST, unregistred user!
我需要为一个Dos的程序在桌面(使用Windows API得到桌面路径)创建快捷方式,<br>需要实现:为这个快捷方式指定名字、说明、命令行、工作目录、图标、运行<br>方式(最小化)、退出时关闭等。请帮忙写个简单的例子好吗(尽量使<br>用Windows API简化程序)?!可以的话想请你用中文说明一下IShellLink的<br>方法和参数。还请在例子中,用中文讲述一下每一句的意思,十分感谢!
 
1. Delphi中如何创建新快捷方式<br>&nbsp; &nbsp; Visual Studio 5.0光盘中VFP5.0子目录下带一个STKIT432.DLL,其中有一个函数<br>&nbsp; &nbsp; 的API如下(Object Pascal 定义):<br> fucntion fCreateShellLink(DestPath, LinkName, LinkAppPath, LinkArgs: Pchar)<br> : Integer; stdcall; external 'STKIT432.DLL';<br> (但是,我试验过却不能用,不知道是否使用不当)<br>&nbsp; &nbsp; 另一种通过COM自动化的方法创建快捷方式如下:<br> uses … , ShlObj, ActiveX, ComObj;<br> procedure CreateShellLink(const DestPath, LinkName, LinkAppPath,<br> &nbsp; LinkArgs, Description: String);<br> Var<br> &nbsp;aObj: IUnknown;<br> &nbsp;WFileName: WideString;<br> Begin<br> &nbsp;aObj := CreateComObject(CLSID_ShellLink);<br> &nbsp;With aObj as IShellLink do begin<br> &nbsp; &nbsp;{对MS-DOS程序,一般建议使用SetShowCmd(SW_SHOWMAXIMIZED);}<br> &nbsp; &nbsp;SetShowCmd(SW_NORMAL);<br> &nbsp; &nbsp;SetArguments(Pchar(LinkArgs));<br> &nbsp; &nbsp;SetDescription(Pchar(Description));<br> &nbsp; &nbsp;SetPath(Pchar(LinkAppPath));<br> &nbsp; &nbsp;SetWorkingDirectory(Pchar(ExtractFilePath(LinkAppPath)));<br> &nbsp;End;<br> &nbsp;{将一个String赋给WideString,转换过程由Delphi自动完成}<br>&nbsp; &nbsp;WFileName := DestPath + '/' + LinkName;<br> &nbsp;(aObj as IPersistFile).Save(PWChar(WFileName), False);<br> End;<br>&nbsp; &nbsp; &nbsp;使用CreateShellLink过程要保证路径文件名参数正确,如下:<br> CreateShellLink('C:/Pwin98/Desktop', '快捷方式名', 'C:/Command.com',<br> &nbsp;'', '简短描述');<br> CreateShellLink('C:/Pwin98/Desktop', 'Win32程序.Lnk', 'D:/Setup.exe', '', '');<br>
 
agree with z_cd
 
var<br>&nbsp; Lu: Pchar;<br>&nbsp; uSize: DWORD= MAX_PATH + 1;<br>……<br>GetWindowsDirectory(Lu,uSize);<br>CreateShellLink(Lu+'/Desktop', Edit4.Text+'.Lnk', ……);<br>编译时没有出错,但Lu没有返回C:/windows(Windows路径),请问为什么?<br><br>
 
建立快捷方式<br>Private Declare Function fCreateShellLink Lib "vb5stkit.DLL" (ByVal _<br>lpstrFolderName As String, ByVal lpstrLinkName As String, ByVal _<br>lpstrLinkPath As String, ByVal lpstrLinkArgs As String) As Long<br><br>Private Sub MakeShortCuts()<br><br>Dim lReturn As Long<br>Dim MyPath As String<br>Dim MyName As String<br>MyPath = App.Path<br>MyName = App.EXEName<br>'增加到桌面<br>lReturn = fCreateShellLink("../../Desktop", _<br>"Shortcut to Net Timer", MyPath &amp; "/" &amp; MyName, "")<br>'增加到启动组<br>lReturn = fCreateShellLink("/启动", "Shortcut to Net Timer", _<br>MyPath &amp; "/" &amp; MyName, "")<br><br>End Sub<br><br>
 
补充一个问题:<br>请教GetWindowsDirectory的用法(参数),和调用方法?
 
多人接受答案了。
 
后退
顶部