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

怎样将两个应用程序合并?

尚未結案
liangzai
初階會員


發表:77
回覆:91
積分:33
註冊:2004-08-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-12-13 09:31:50 IP:218.20.xxx.xxx 未訂閱
各位前辈: 有一个问题要请教:现在有两个delphi7编写的应用程序,都是用来print label(一个是用来print IQC label,一个是用来print Barcode label的),现在需要将他们合并成一个程序,通过设置密码的方式来控制user选择哪一个程序使用,考虑到两个程序运行时都是调用自己独立的table,不知道该使用怎样的方法能够实现预期的功能?通过一个project调用另外一个project吗? 敬请各位高手赐教,希望能具体一些,谢谢!
tonytop
中階會員


發表:6
回覆:114
積分:89
註冊:2003-12-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-13 18:01:18 IP:210.64.xxx.xxx 未訂閱
參考小弟的拙作,也許可以解決您的問題唷^_^ http://delphi.ktop.com.tw/topic.php?TOPIC_ID=60393 忙盲茫
jow
尊榮會員


發表:66
回覆:751
積分:1253
註冊:2002-03-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-12-13 18:39:23 IP:220.130.xxx.xxx 未訂閱
以下的方式,不知是否符合你的需要? 將兩支程式運作時必須要的property及method以automation server 的形式expose出來,再建立一支程式(Automation Controler),根據你的需要去連結所需的Automation Server.
Miles
尊榮會員


發表:27
回覆:662
積分:622
註冊:2002-07-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-12-13 21:14:45 IP:220.135.xxx.xxx 未訂閱
Hi liangzai 你好: 有沒有想過直接呼叫Exe的方式執行
if FindWindow('TApplication','我的系統一')<>0 then
   ShowMessage('Run')
else 
   WinExec(System.PChar(ExtractFilePath(Application.ExeName) '\我的系統一.exe ' 'abcdef'), SW_SHOW);
在被呼叫的程式MainForm的OnCreate先判斷傳入的參數是否正確, 當然也可直接帶帳號資料
if ParamCount < 2 then Clos;
if ParamStr(1) <> 'abcdef' then Close;
我不是高手, 高手是正在銀幕前微笑的人.
------


我不是高手, 高手是正在銀幕前微笑的人.
liangzai
初階會員


發表:77
回覆:91
積分:33
註冊:2004-08-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-12-14 09:35:46 IP:218.20.xxx.xxx 未訂閱
Hi,Miles: 只怪小弟愚笨,对于你给出的方法,我看完还不是很明白,你能不能说的具体一些呢?整个实现的流程是怎样的? if FindWindow('TApplication','我的系統一')<>0 then ShowMessage('Run') else WinExec(System.PChar(ExtractFilePath(Application.ExeName) '\我的系統一.exe ' 'abcdef'), SW_SHOW); "TApplication" , "我的系統一" , "abcdef" 各指代那部分内容啊? 谢谢!
Miles
尊榮會員


發表:27
回覆:662
積分:622
註冊:2002-07-12

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-12-14 15:51:51 IP:220.135.xxx.xxx 未訂閱
Hi liangzai 你好: 假設你所要呼叫的程式Caption為"我的系統一", 先使用
FindWindow('TApplication','我的系統一')<>0
來查看程式是否已經被開啟, 若沒有再開啟使用
WinExec(System.PChar(ExtractFilePath(Application.ExeName) '\我的系統一.exe ' 'abcdef'), SW_SHOW);
這行指令其實就是CommandLine的 c:\我的系統一.exe abcdef <--舉例 當我們下上面的指令時, 我們的Project有一個全域的變數, ParamCount 會變成2, ParamStr(0) 就是"c:\我的系統一.exe", ParamStr(1) 就是 "abcdef", 當然你可以再多帶很多參數來運用, 譬如登入的帳號, 或故意編個進入的識別碼 我不是高手, 高手是正在銀幕前微笑的人.
------


我不是高手, 高手是正在銀幕前微笑的人.
liangzai
初階會員


發表:77
回覆:91
積分:33
註冊:2004-08-13

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-12-15 15:46:48 IP:218.19.xxx.xxx 未訂閱
miles ,你好! 谢谢你的热心回复,你给出的办法可以做到调用其它exe程序。不过如果我现在希望能够把现在的两个exe文件打包起来,合并在一起,做成一个exe文件,通过一个密码控制(for example,密码为123则运行1.exe,密码为456则运行2.exe),现在考虑用流stream的办法,将2.exe添加在1.exe后面,也不知道能不能实现,一个想法而已,或许你有更好的建议? 非常感谢你!
Miles
尊榮會員


發表:27
回覆:662
積分:622
註冊:2002-07-12

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-12-16 18:19:52 IP:220.135.xxx.xxx 未訂閱
這是可以做到的, 不過有點複雜, 我也不建議使用, 就是使用檔案資料流, 將兩個Exe合併成一個檔, 需要時再從合併後的檔案解出來並執行. 不過我還是比較建議你直接分開兩個執行檔, 從程式中去判斷要執行哪一個, 這是比較單純的做法. 檔案資料流請參考TFileStream 我不是高手, 高手是正在銀幕前微笑的人.
------


我不是高手, 高手是正在銀幕前微笑的人.
elvis1000
一般會員


發表:6
回覆:50
積分:16
註冊:2004-12-18

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-12-19 00:46:15 IP:218.165.xxx.xxx 未訂閱
應該要在寫第三個程式,然後把前面兩個程式放進第三個程式的resource。 第三個程式就是用來決定密碼以及要開啟的檔案,例如123時,就從resource解出檔案1到硬碟執行。 如果你要寫一個可以順便改變密碼的第三個程式,那可能就要牽涉到把資料存到自身EXE檔,那就會牽涉到刪除正在執行的自身EXE檔,應該不用這麼複雜吧!因為delphi5以後不能任意刪除自身EXE檔,我為了這個問題也找了好久! ----------------------- God bless you! I am Dark_Angel.
------
-----------------------
God bless you!
I am Dark_Angel.
系統時間:2024-05-22 5:11:38
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!