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

關於程式重複執行及DOS模式傳參數的問題,如何兼顧?

尚未結案
mi86018
一般會員


發表:20
回覆:39
積分:21
註冊:2003-11-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-12-24 15:52:47 IP:61.222.xxx.xxx 未訂閱
先前寫了一個程式,因為要防止程式重複執行,所以寫了下列的程式碼, --以上略-- var handle : Integer; begin handle := findwindow('ABCDSoft', nil); if handle <> 0 then halt; --以下略-- 後來因為程式要能在DOS模式下接參數,參數內容是檔名,所以也在formCreate中寫了接參數的程式碼,到目前為止都沒問題。 但是我想寫得更好一點,就是說,程式已經開啟了之後,我在DOS模式下,再打第二次指令加上參數,現在已經執行的這隻程式就會依照參數內容(文字檔名)來開啟這個文字檔,但是卻因為之前寫了防止重複執行的程式碼,因此,並不會有任何反應,因此我需要將上面的程式碼改寫,改寫的方式如下: --以上略-- var handle : Integer; begin handle := findwindow('ABCDSoft', nil); if handle <> 0 then begin SetForegroundWindow(handle); if ParamCount > 0 then //DOS模式下 有輸入參數 XXXXXXXXXXXXXXXXXXX; halt; end; --以下略-- 我先將第一次開啟的程式帶到螢幕最前面,然後判斷是不是有參數,如果有的話,就要將「正在」執行的程式讀入參數內容。 而在XXXXXXXXXXXXXXX這一行,我想說用ShellExecute、WinExec、CreateProcess、SendMessage、PostMessage等方法都不太對,因為ShellExecute是開另一個新的程式,不然就是沒辦法將參數傳進去。 所以我想問說,有沒有類似像ShellExecute這個的函式,可以以目前執行程式的handle來傳參數去執行。或者,我該怎麼改寫比較好呢???
minjiu
中階會員


發表:27
回覆:119
積分:69
註冊:2002-06-26

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-12-24 17:55:54 IP:218.164.xxx.xxx 未訂閱
試看看吧....    
public procedure WMCopyData(var Msg: TWMCopyData); message WM_COPYDATA;    .....(省略)    implementation    {$R *.dfm}    // 接收訊息
procedure TForm1.WMCopyData(var Msg: TWMCopyData);
begin
     Showmessage('收到訊息為 : '   StrPas(PChar(Msg.CopyDataStruct^.lpData)));
end;    procedure TForm1.Button1Click(Sender: TObject);
var SendData : CopyDataStruct;
    h : HWND;
    sPar : string;
begin
     sPar := 'test data';  // 要傳送的資料(你要傳送的參數)         SendData.cbData := Length(sPar)   1;
     SendData.lpData := PChar(sPar);         h := FindWindow('TForm1','Form1');  // 尋找要傳送的視窗
     if h <> 0 then
          SendMessage(h,WM_COPYDATA,0 ,Integer(@SendData))
     else showmessage('window not found!');
end;
end.
mi86018
一般會員


發表:20
回覆:39
積分:21
註冊:2003-11-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-12-25 14:47:30 IP:61.222.xxx.xxx 未訂閱
感謝minjiu兄,連續解決了我兩個問題。 因為對windows message不熟,我也只有API函式的書,如果想要多瞭解這方面的東西,不知道有沒有書或是哪裡有這方面的資訊可以學呢?
minjiu
中階會員


發表:27
回覆:119
積分:69
註冊:2002-06-26

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-12-25 15:01:41 IP:218.164.xxx.xxx 未訂閱
其實在這個網站裡有很多寶可以挖... 閒來無事時,就多多去看前輩的文章及程式... 相信你會學到很多東西...^^
系統時間:2024-05-22 0:59:05
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!