全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:3777
推到 Plurk!
推到 Facebook!

如何建立捷徑???

 
jojoboy
初階會員


發表:65
回覆:108
積分:34
註冊:2002-03-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-05-17 15:17:07 IP:61.220.xxx.xxx 未訂閱
請教各位前輩先進: 我想要利用Delphi 5.0為我所開發的程式執行檔, 在安裝時可以動態的建立捷徑... 現在有一個問題~~~~ 要如何去設定或修改捷徑內的參數呢? 像是目標及開始位置這兩個參數要如何設定或修改~~~ 望各位前輩能不吝指教.... ~Thanks~
mihopaul
一般會員


發表:25
回覆:59
積分:16
註冊:2002-03-17

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-05-17 19:49:36 IP:211.74.xxx.xxx 未訂閱
引言: ?諒跪弇ゴ?珂筳: 扂砑猁瞳蚚Delphi 5.0橁皊╞_追腔最宒昐n, 婓假娊r褫眕B腔膘蕾豎... 政婓衄珨??觳~~~~ 猁⺼睡偞隅麼党蜊豎腔? 砉岆醴佷圈_宎弇离稛?菸糾蝥拏O隅麼党蜊~~~ 咡跪弇ゴ?夔祥醞硌諒.... ~Thanks~ 扂艘賸珨狟扂袤醱奻腔豎穀r 追政斕褫眕硌隅醴佽鰓閥臘臗芓~ ⺼"C:\Program Files\KKman\KKMAN.exe" 饒坻腔嶱宎弇离憩岆C:\Program Files\KKmanㄛ稛褫眕祥猁 狟醱岆跪?菸獍慫枯r ﹛忁nstallShield假婓D攫ㄛWindows炵緙假婓C BATCH_INSTALL 0* COMMONFILES C:\Program Files\Common Files\ ERRORFILENAME -- FOLDER_DESKTOP C:\WINDOWS\Desktop\ FOLDER_PROGRAMS C:\WINDOWS\Start Menu\Programs\ FOLDER_STARTMENU C:\WINDOWS\Start Menu\ FOLDER_STARTUP C:\WINDOWS\Start Menu\Programs\ぎ雄\ HINST_INSTALL 0* INFOFILENAME -- ISRES C:\WINDOWS\TEMP\_ISTMP0.DIR\B3F9AB.DLL* ISUSER C:\WINDOWS\TEMP\_ISTMP0.DIR\_ISUSER.DLL* ISVERSION 5.50.136.0 LAST_RESULT 0* LOGHANDLE 0* MEDIA DATA PROGRAMFILES C:\Program Files\ SELECTED_LANGUAGE 9 SRCDIR C:\My Installations\Blank Setup\Media\Default\DiskImages\disk1\ SRCDISK C: SUPPORTDIR C:\WINDOWS\TEMP\_ISTMP0.DIR\* TARGETDIR C:\WINDOWS\* TARGETDISK C:* UNINST C:\WINDOWS\ISUNINST.EXE WINDIR C:\WINDOWS\ WINDISK C: WINSYSDIR C:\WINDOWS\SYSTEM\ WINSYSDISK C: 稛?鋒?衄竭俇淕腔挲隴ㄛ岆c 唳掛腔 http://www.yesky.com/20010128/154960.shtml 祥陝稷華珩衄?挲隴 http://home.kimo.com.tw/cthing95/uses/install-06.htm
pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-09-06 10:44:16 IP:210.69.xxx.xxx 未訂閱
引言: FOLDER_STARTMENU C:\WINDOWS\Start MenuFOLDER_STARTUP C:\WINDOWS\Start Menu\Programs\?雄
不同 OS 此值應該不一樣吧, 如果要同時可以安裝到不同 OS 呢 ? PS: 使用 Delphi 7 Enterprise
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-09-30 11:50:48 IP:210.69.xxx.xxx 未訂閱
    unit Unit1; 
     
    interface 
     
    uses 
     Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, 
     Dialogs, StdCtrls; 
     
    type 
     TForm1 = class(TForm) 
     Button1: TButton; 
     procedure Button1Click(Sender: TObject); 
     private 
     { Private declarations } 
     public 
     { Public declarations } 
     end; 
     
    var 
     Form1: TForm1; 
     
    implementation 
     
    {$R *.DFM} 
     
    uses 
     ShlObj, ActiveX, ComObj, Registry; 
     
    procedure TForm1.Button1Click(Sender: TObject); 
    var 
     MyObject : IUnknown; 
     MySLink : IShellLink; 
     MyPFile : IPersistFile; 
     FileName : String; 
     Directory : String; 
     WFileName : WideString; 
     MyReg : TRegIniFile; 
    begin 
     MyObject := CreateComObject(CLSID_ShellLink); 
     MySLink := MyObject as IShellLink; 
     MyPFile := MyObject as IPersistFile; 
     FileName := 'NOTEPAD.EXE'; 
     with MySLink do begin 
     SetArguments('C:\AUTOEXEC.BAT'); 
     SetPath(PChar(FileName)); 
     SetWorkingDirectory(PChar(ExtractFilePath(FileName))); 
     end; 
     MyReg := TRegIniFile.Create( 
     'Software\MicroSoft\Windows\CurrentVersion\Explorer'); 
     
    // Use the next line of code to put the shortcut on your desktop 
     Directory := MyReg.ReadString('Shell Folders','Desktop','');     // Desktop 為桌面    //  Startup 為啟動    // Start Menu 為開始功能表
     
    // Use the next three lines to put the shortcut on your start menu 
    // Directory := MyReg.ReadString('Shell Folders','Start Menu','')  
    // '\Whoa!'; 
    // CreateDir(Directory); 
     
     WFileName := Directory '\FooBar.lnk'; 
     MyPFile.Save(PWChar(WFileName),False); 
     MyReg.Free; 
    end; 
     
    end.     
-------------------------------------------------------------------------------- 如果要得到快捷檔的屬性,則先應調用IPersistFile物件的Load,然後調用IShellLink的GetPath等函數以獲得各種屬性(詳見Win32 API Help)。如:

     // Load .lnk file 
     WFileName := ExpandFileName(Sr.Name); 
     MyPFile.Load(PWChar(WFileName), STGM_DIRECT); 
     
     // Retrieve the hotkey. 
     MySLink.GetHotKey(wHotKey); 
     
     // Retrieve the icon. 
     MySLink.GetIconLocation(Filename, 255, nIndex); 
     if strLen(Filename) <> 0 then 
     begin 
     MyIcon := TIcon.Create; 
     MyIcon.Handle := ExtractIcon(hInstance, Filename, nIndex); 
     ListItem.ImageIndex := frmMain.ImageList1.AddIcon(MyIcon); 
     MyIcon.Free; 
     end 
     else 
     begin 
     MySLink.GetPath(Filename, 255, fd, SLGP_UNCPRIORITY); 
     MyIcon := TIcon.Create; 
     nIndex2 := 0; 
     MyIcon.Handle := ExtractAssociatedIcon(hInstance, Filename, nIndex2); 
     ListItem.ImageIndex := frmMain.ImageList1.AddIcon(MyIcon); 
     MyIcon.Free; 
     end;     
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-09-30 15:00:15 IP:210.69.xxx.xxx 未訂閱
讀取捷徑資訊完整範例    

unit Unit1;    interface    uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;    type
  TForm1 = class(TForm)
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;    var
  Form1: TForm1;    implementation    {$R *.dfm}    uses
  ShlObj,
  ComObj,
  ActiveX,
  CommCtrl;
type
  PShellLinkInfoStruct = ^TShellLinkInfoStruct;
  TShellLinkInfoStruct = record
    FullPathAndNameOfLinkFile : array[0..MAX_PATH] of Char;
    FullPathAndNameOfFileToExecute: array[0..MAX_PATH] of Char;
    ParamStringsOfFileToExecute: array[0..MAX_PATH] of Char;
    FullPathAndNameOfWorkingDirectroy: array[0..MAX_PATH] of Char;
    Description: array[0..MAX_PATH] of Char;
    FullPathAndNameOfFileContiningIcon: array[0..MAX_PATH] of Char;
    IconIndex : Integer;
    HotKey: Word;
    ShowCommand: Integer;
    FindData: _WIN32_FIND_DATA;
  end;    procedure GetLinkInfo(lpShellLinkInfoStruct: PShellLinkInfoStruct);
var
  ShellLink: IShellLink;
  PersistFile: IPersistFile;
  AnObj: IUnknown;
begin
  AnObj := CreateComObject(CLSID_ShellLink);
  ShellLink := AnObj as IShellLink;
  PersistFile := AnObj as IPersistFile;      PersistFile.Load(PWChar(WideString(lpShellLinkInfoStruct^.FullPathAndNameOfLinkFile)),0);
  with ShellLink do
  begin
    GetPath(lpShellLinkInfoStruct^.FullPathAndNameOfFileToExecute,
      SizeOf(lpShellLinkInfoStruct^.FullPathAndNameOfLinkFile),
      lpShellLinkInfoStruct^.FindData,
      SLGP_UNCPRIORITY);        GetDescription(lpShellLinkInfoStruct^.Description,
      SizeOf(lpShellLinkInfoStruct^.Description));        GetArguments(lpShellLinkInfoStruct^.ParamStringsOfFileToExecute,
      SizeOf(lpShellLinkInfoStruct^.ParamStringsOfFileToExecute));        GetWorkingDirectory(lpShellLinkInfoStruct^.FullPathAndNameOfWorkingDirectroy,
      SizeOf(lpShellLinkInfoStruct^.FullPathAndNameOfWorkingDirectroy));        GetIconLocation(lpShellLinkInfoStruct^.FullPathAndNameOfFileContiningIcon,
      SizeOf(lpShellLinkInfoStruct^.FullPathAndNameOfFileContiningIcon),
      lpShellLinkInfoStruct^.IconIndex);        GetHotKey(lpShellLinkInfoStruct^.HotKey);        GetShowCmd(lpShellLinkInfoStruct^.ShowCommand);
  end;
end;    procedure TForm1.FormCreate(Sender: TObject);
const
  br= #13#10;
var
  LinkInfo: TShellLinkInfoStruct;
  s:string;
begin
  FillChar(LinkInfo, SizeOf(LinkInfo),0);
  LinkInfo.FullPathAndNameOfLinkFile:='C:\A.BAT.LNK';
  GetLinkInfo(@LinkInfo);
  with  LinkInfo  do
    s:= 'FullPathAndNameOfLinkFile : '   FullPathAndNameOfLinkFile   br  
    'FullPathAndNameOfFileToExecute : '   FullPathAndNameOfFileToExecute   br  
    'ParamStringsOfFileToExecute : '   ParamStringsOfFileToExecute   br  
    'FullPathAndNameOfWorkingDirectroy : '  FullPathAndNameOfWorkingDirectroy   br  
    'Description : ' Description   br  
    'FullPathAndNameOfFileContiningIcon : '   FullPathAndNameOfFileContiningIcon   br  
    'IconIndex : '  IntToStr(IconIndex)   br  
    'LoByte(HotKey) : '  IntToStr(LoByte(HotKey))  br  
    'HiByte(HotKey) : '  IntToStr(HiByte(HotKey))  br  
    'ShowCommand : ' IntToStr(ShowCommand)  br  
    'FindData.cFileName : ' FindData.cFileName  br   
    'FindData.cAlternateFileName : ' FindData.cAlternateFileName;      Memo1.Clear;
  Memo1.Lines.Add(s);
end;    end.
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
系統時間:2024-06-26 8:08:59
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!