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

外部程式傳、接值,接收方沒有顯示

答題得分者是:mephise
superrakce
一般會員


發表:24
回覆:35
積分:11
註冊:2006-10-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2011-10-19 14:11:01 IP:114.33.xxx.xxx 訂閱
開了兩個專案分別是ReceveDpr、SendDpr
SendDpr負責傳值,ReceveDpr負責接收及顯示

SendDpr的程式碼:
[code delphi]
procedure TSendForm.Button2Click(Sender: TObject);
var h: HWND;
Size: Integer;
CopyDataStruct: TCopyDataStruct;
begin
h := FindWindow(nil, 'ReceveDpr');
if h > 0 then
begin
caption := 'findwindow';
Size := Length(Edit1.Text) 2;
CopyDataStruct.lpData := PChar(Edit1.Text);
CopyDataStruct.dwData := WM_COPYDATA;
CopyDataStruct.cbData := Size;
SendMessage(h, WM_COPYDATA, 0, Integer(@CopyDataStruct));
end else caption := 'no thiswindow'
end;

[/code]

ReceveDpr程式碼:

[code delphi]
procedure TReceveForm.WMCopyData(var Message: TWMCopyData);
begin
Memo1.Lines.Add(PChar(Message.CopyDataStruct.lpData));
end;

procedure TReceveForm.Button1Click(Sender: TObject);
var i:integer;
begin
for i:= 0 to Paramcount -1 do memo1.Lines.Add(ParamStr(i));
end;

[/code]

為何我在SendDpr 裡按下按鈕傳值 ReceveDpr 都沒有反應呢?
Delphi 7 、winXP

編輯記錄
superrakce 重新編輯於 2011-10-19 00:27:24, 註解 無‧
mephise
高階會員


發表:4
回覆:149
積分:205
註冊:2004-02-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2011-10-23 09:33:53 IP:61.230.xxx.xxx 訂閱
SendMessage 如果是在同一個專案中的兩個 Form 中傳遞, 是可以這樣寫
但是如果是兩個專案, 也就是兩個程式間要傳遞訊息的話, 那就要費一番手腳了
因為就算你在兩個程式中使用相同的訊息編號, 但仍然是各自獨立的

如果真要在程式間傳遞訊息, 你必須使用 RegisterWindowMessage() 這個 Win32 API 來向系統註冊
不想這麼麻煩的話, 我建議改成用 Socket 來傳遞資料, 仍然可以達成你的目的


------
Mephise Chen
前興德工程師
系統時間:2024-04-24 12:41:57
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!