線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1388
推到 Plurk!
推到 Facebook!

[問題]由EMAIL的文字連結,執行某執行檔

尚未結案
catvboy
一般會員


發表:3
回覆:9
積分:2
註冊:2005-04-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-06-20 22:55:32 IP:220.228.xxx.xxx 未訂閱
請問各位大大: 小弟發了一封HTML格式的MAIL,在mail中設定了一個連結字串,希望User從Mail 的HyperLink直接執行『帶有變數的執行檔』 例如: 我在dos命令視窗下 c:\project1.exe st006 則project1的程式中會利用ParamStr(1)指令取得st006的值, 並由資料表中取出st006的相關資料欄位印出來秀在表單中 以下是我的email中的連結code < a h r e f ="c:\Project1.exe?A1=80025&B1=jjj " > 請按我 < / a > 結果,就跳出一個視窗問是要下載還是執行 我選執行,那Project1的ParamStr(1)取不到值 請各位大大幫幫忙,要如何修正呢??還有能不能不出現詢問是否下載的對話窗?? 謝謝啦!
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-06-21 06:47:24 IP:220.131.xxx.xxx 未訂閱
如果要用ParamStr就只好改這樣 < a h r e f ="\\192.168.1.1\c\Project1.exe st006" > 請按我 < / a > 要不就改寫一個網頁(java)去處理它 努力會更接近成功
------
努力會更接近成功
catvboy
一般會員


發表:3
回覆:9
積分:2
註冊:2005-04-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-06-21 08:50:17 IP:210.243.xxx.xxx 未訂閱
引言: 如果要用ParamStr就只好改這樣 < a h r e f ="\\192.168.1.1\c\Project1.exe st006" > 請按我 < / a > 要不就改寫一個網頁(java)去處理它 努力會更接近成功
剛剛試過了 若是直接在ie的網址列下\\192.168.1.1\c\Project1.exe st006 可以執行出結果 但把這一段包在< a h r e f ="\\192.168.1.1\c\Project1.exe st006" > 請按我 < / a > 這樣就不行(這一段是寫在mail裡的一段連結tag) 而且原先的規劃是使用者自己開啟自己本機的執行檔 不要到網芳中找執行檔 請問還有別的方法嗎 使用java,使用者環境要安裝jvm,這樣會不會更複雜
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-06-21 12:58:38 IP:220.131.xxx.xxx 未訂閱
方法A 1.將exe產生成捷徑檔, 並將參數加入其中 2. file:///C:/project1.exe.lnk 方法B 改用ActiveX Form 我之前在d3,d4曾寫過,和寫win32程式差不多 用關鍵字"activexform"找找看, 很多 方法c 自訂一個附加檔名(projcet.babeq), 然後使用者一按下去, 就會執行你的程式 用關鍵字"執行指定的程式"找找看 努力會更接近成功
------
努力會更接近成功
catvboy
一般會員


發表:3
回覆:9
積分:2
註冊:2005-04-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-06-21 17:33:03 IP:210.243.xxx.xxx 未訂閱
引言: 方法A 1.將exe產生成捷徑檔, 並將參數加入其中 2. file:///C:/project1.exe.lnk 方法B 改用ActiveX Form 我之前在d3,d4曾寫過,和寫win32程式差不多 用關鍵字"activexform"找找看, 很多 方法c 自訂一個附加檔名(projcet.babeq), 然後使用者一按下去, 就會執行你的程式 用關鍵字"執行指定的程式"找找看 努力會更接近成功
第一種方法,看不懂大大所說的意思,因為後面的st006是會動態產生的,有時 我要看st007、st008....等資料,inf可以這樣改來改去嗎?? 第二種方法,我試做了一下,ActiveX.OCX是產生了,可是HTML內出現的是一個XX,在DELPHI中跑,是正常的,不知道哪裡做錯,ocx沒working 第三種方法,附加檔名後面能加st006的參數嗎??主樣還是st006這個值會變
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-06-21 19:15:30 IP:220.131.xxx.xxx 未訂閱
透過Browser(如IE6)來執行, Delphi寫好的應用程式 http://delphi.ktop.com.tw/topic.php?topic_id=54932 HTML與ActiveForm間的參數傳遞 http://delphi.ktop.com.tw/topic.php?topic_id=22699 努力會更接近成功
------
努力會更接近成功
catvboy
一般會員


發表:3
回覆:9
積分:2
註冊:2005-04-12

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-06-21 22:56:21 IP:220.228.xxx.xxx 未訂閱
引言: 透過Browser(如IE6)來執行, Delphi寫好的應用程式 http://delphi.ktop.com.tw/topic.php?topic_id=54932 HTML與ActiveForm間的參數傳遞 http://delphi.ktop.com.tw/topic.php?topic_id=22699 努力會更接近成功
大大: 首先先謝謝您的指導,我使用捷徑檔*.lnk的方式來處理這個問題 因為看完activeX物件後,覺得這種方法,我還必須架一個WEB SERVER USER端還要註冊物件,會造成很大的震撼 所以我就參考您的方法,用delphi寫好的程式,將Project1.exe st006路徑 包成lnk,再夾檔email給user,這樣就能開啟了
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-06-22 00:16:13 IP:220.131.xxx.xxx 未訂閱
這是取自 http://www.torry.net/產生lnk的方法
 uses
  Registry,
  ActiveX,
  ComObj,
  ShlObj;    type
  ShortcutType = (_DESKTOP, _QUICKLAUNCH, _SENDTO, _STARTMENU, _OTHERFOLDER);    function CreateShortcut(SourceFileName: string; // the file the shortcut points to
                        Location: ShortcutType; // shortcut location
                        SubFolder,  // subfolder of location
                        WorkingDir, // working directory property of the shortcut
                        Parameters,
                        Description: string): //  description property of the shortcut
                        string;
const
  SHELL_FOLDERS_ROOT = 'Software\MicroSoft\Windows\CurrentVersion\Explorer';
  QUICK_LAUNCH_ROOT = 'Software\MicroSoft\Windows\CurrentVersion\GrpConv';
var
  MyObject: IUnknown;
  MySLink: IShellLink;
  MyPFile: IPersistFile;
  Directory, LinkName: string;
  WFileName: WideString;
  Reg: TRegIniFile;
begin      MyObject := CreateComObject(CLSID_ShellLink);
  MySLink := MyObject as IShellLink;
  MyPFile := MyObject as IPersistFile;      MySLink.SetPath(PChar(SourceFileName));
  MySLink.SetArguments(PChar(Parameters));
  MySLink.SetDescription(PChar(Description));      LinkName := ChangeFileExt(SourceFileName, '.lnk');
  LinkName := ExtractFileName(LinkName);      // Quicklauch
  if Location = _QUICKLAUNCH then
  begin
    Reg := TRegIniFile.Create(QUICK_LAUNCH_ROOT);
    try
      Directory := Reg.ReadString('MapGroups', 'Quick Launch', '');
    finally
      Reg.Free;
    end;
  end
  else
  // Other locations
  begin
    Reg := TRegIniFile.Create(SHELL_FOLDERS_ROOT);
    try
    case Location of
      _OTHERFOLDER : Directory := SubFolder;
      _DESKTOP     : Directory := Reg.ReadString('Shell Folders', 'Desktop', '');
      _STARTMENU   : Directory := Reg.ReadString('Shell Folders', 'Start Menu', '');
      _SENDTO      : Directory := Reg.ReadString('Shell Folders', 'SendTo', '');
    end;
    finally
      Reg.Free;
    end;
  end;      if Directory <> '' then
  begin
    if (SubFolder <> '') and (Location <> _OTHERFOLDER) then
      WFileName := Directory   '\'   SubFolder   '\'   LinkName
    else
      WFileName := Directory   '\'   LinkName;        if WorkingDir = '' then
      MySLink.SetWorkingDirectory(PChar(ExtractFilePath(SourceFileName)))
    else
      MySLink.SetWorkingDirectory(PChar(WorkingDir));        MyPFile.Save(PWChar(WFileName), False);
    Result := WFileName;
  end;
end;    function GetProgramDir: string;
var
  reg: TRegistry;
begin
  reg := TRegistry.Create;
  try
    reg.RootKey := HKEY_CURRENT_USER;
    reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders', False);
    Result := reg.ReadString('Programs');
    reg.CloseKey;
  finally
    reg.Free;
  end;
end;    // Some examples:    procedure TForm1.Button1Click(Sender: TObject);
const
 PROGR = 'c:\YourProgram.exe';
var
  resPath: string;
begin
  //Create a Shortcut in the Quckick launch toolbar
  CreateShortcut(PROGR, _QUICKLAUNCH, '','','','Description');      //Create a Shortcut on the Desktop
  CreateShortcut(PROGR, _DESKTOP, '','','','Description');      //Create a Shortcut in the Startmenu /"Programs"-Folder
  resPath := CreateShortcut(PROGR, _OTHERFOLDER, GetProgramDir,'','','Description');
  if resPath <> '' then
  begin
    ShowMessage('Shortcut Successfully created in: '   resPath);
  end;
end;
當我測試完成時,同時也收到你的回應, 你也想到了用傳lnk的法子了 但是我仍然將產生lnk的方式post出來. 不完美的是仍有開啟檔案的畫面. 努力會更接近成功
------
努力會更接近成功
系統時間:2024-06-02 1:40:07
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!