[問題]由EMAIL的文字連結,執行某執行檔 |
尚未結案
|
catvboy
一般會員 發表:3 回覆:9 積分:2 註冊:2005-04-12 發送簡訊給我 |
請問各位大大:
小弟發了一封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 發送簡訊給我 |
|
catvboy
一般會員 發表:3 回覆:9 積分:2 註冊:2005-04-12 發送簡訊給我 |
引言: 如果要用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 發送簡訊給我 |
|
catvboy
一般會員 發表:3 回覆:9 積分:2 註冊:2005-04-12 發送簡訊給我 |
引言: 方法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 發送簡訊給我 |
透過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 發送簡訊給我 |
引言: 透過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 發送簡訊給我 |
這是取自 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出來. 不完美的是仍有開啟檔案的畫面. 努力會更接近成功
------
努力會更接近成功 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |