請問兩個軟體的溝通方法??? |
答題得分者是:dyming
|
liangyenchen
一般會員 發表:6 回覆:5 積分:2 註冊:2007-01-20 發送簡訊給我 |
|
ko
資深會員 發表:28 回覆:785 積分:444 註冊:2002-08-14 發送簡訊給我 |
|
dyming
初階會員 發表:0 回覆:11 積分:32 註冊:2003-04-21 發送簡訊給我 |
我來說明一下好了, 應該很多人用的到. 程式 A.exe 要傳參數給 B.exe, 其中 B.exe 的 MainForm 叫 BMF (class name 就是 TBMF)
A 的程式段修改很簡單, 只要將參數準備好丟出即可. const WM_A_B: WM_USER 100; {$R *.DFM} procedure TAMF.Button1Click(Sender: TObject); var hApp: HWnd; CopyData: TCopyDataStruct; cParam: String; begin hApp := FindWindow(PChar('TBMF'),nil); //尋找 B 程式的 MainForm class name if hApp <> 0 then begin cParam := '您要丟的參數內容,只能用一個字串,但可利用符號來區隔各參數'; CopyData.dwData:= WM_A_B; CopyData.cbData := Length(cParam) 1; //number of bytes to transfer CopyData.lpData := @cParam[1]; //pointer of the bytes to transfer SendMessage(hApp, WM_COPYDATA, 0, LPARAM(@CopyData)); end; end; 而 B 程式段修改如下: unit Unit1; interface uses ....; type .... private procedure WMCopyData(var Msg: TWMCopyData); //新增 message WM_CopyData; //新增 public end; var BMF: TBMF; //B 程式的 MainForm name const WM_A_B: WM_USER 100; //其它程式可依序用 101, 102 ... 來區別 {$R *.DFM} //新增 procedure TBMF.WMCopyData(var Msg: TWMCopyData); var cParam: String; begin with Msg.CopyDataStruct^ do if dwData = WM_A_B then begin cParam := PChar(lpData); //cParam 就是 A 程式傳來的參數內容了, 當然利用符號區隔各參數時, 請自行解開 end; end; 同理, B.exe 要丟參數給 A.exe 可延用 WM_A_B (這是 A 與 B 的悄悄話), 只要知道 A 程式的 MainForm class name 即可. |
liangyenchen
一般會員 發表:6 回覆:5 積分:2 註冊:2007-01-20 發送簡訊給我 |
請問一下用delphi 與 bcb做的軟體,這兩這可以用上面的方式溝通嗎?
我做了簡化,如下 delphi: procedure TForm1.Button1Click(Sender: TObject); var hApp: HWnd; CopyData: TCopyDataStruct; cParam: String; begin hApp := FindWindow(nil,'abcd'); if hApp <> 0 then begin SendMessage(hApp, WM_COPYDATA, 0, 0); end; end; bcb: void __fastcall TForm1::WndProc(Messages::TMessage &Message) { if( Message.Msg == WM_COPYDATA ) { Edit1->Text = '0000'; TWMCopyData *msg = (TWMCopyData *)&Message; MessageBox(0,0,"Oh!",MB_OK); } TForm::WndProc(Message); } 實作發現bcb沒有反應 可以請大家幫忙嗎? 謝謝 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |