我在网上找到了 在桌面建立 应用程序A 的快捷方式的代码,但现在还要给 A传递一个string参数。
A有一个主form,根据得到的参数显示不同的页面。可能标题的表述不太准确,就是 想建立快捷方式的时候把参数传进去,然后双击快捷方式,启动A,同时A得到参数。这该怎样实现,或者还有其它变通的方法。
请各位指点

解决方案 »

  1.   

    变通的办法不用我给代码,
    你把快捷方式指向一个.Bat文件
      

  2.   

    建立快捷方式的代码如下。怎样修改才能传递一个参数呢?
    var
      tmpObject : IUnknown;
      tmpSLink : IShellLink;
      tmpPFile : IPersistFile;
      PIDL : PItemIDList;
      StartupDirectory : array[0..MAX_PATH] of Char;
      StartupFilename : String;
      LinkFilename : WideString;
    begin
      StartupFilename :='D:\A.exe';
      tmpObject := CreateComObject(CLSID_ShellLink);  //创建建立快捷方式的外壳扩展
      tmpSLink := tmpObject as IShellLink;          //取得接口
      tmpPFile := tmpObject as IPersistFile;     //用来储存*.lnk文件的接口
      tmpSLink.SetPath(pChar(StartupFilename));//设定.exe所在路径
      tmpSLink.SetWorkingDirectory(pChar(ExtractFilePath(StartupFilename)));//设定工作目录
      SHGetSpecialFolderLocation(0,CSIDL_DESKTOPDIRECTORY,PIDL);//获得桌面的Itemidlist
      SHGetPathFromIDList(PIDL,StartupDirectory);//获得桌面路径
      LinkFilename := StartupDirectory + 'zq.lnk';
      tmpPFile.Save(pWChar(LinkFilename),FALSE);//保存*.lnk文件
    end;
      

  3.   

    那么.bat文件应该怎样写呢?
    比如快捷方式要指向d:\A.exe,还要传递一个参数给A。