請問用SendMessage如何送一個record |
尚未結案
|
brianwung
一般會員 ![]() ![]() 發表:18 回覆:22 積分:8 註冊:2002-06-12 發送簡訊給我 |
|
Mickey
版主 ![]() ![]() ![]() ![]() ![]() 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
brianwung 你好: 我沒有實際測試,不過依據 COPYDATASTRUCT 的結構說明:
typedef struct tagCOPYDATASTRUCT { // cds
DWORD dwData;
DWORD cbData;
PVOID lpData;
} COPYDATASTRUCT;
Members dwData Specifies up to 32 bits of data to be passed to the receiving application. cbData Specifies the size, in bytes, of the data pointed to by the lpData member. lpData Points to data to be passed to the receiving application. This member can be NULL. 其中 cbData 有描述 Data 的長度, 應該是您讀出時, 須依據 Size 處理, #0 不應該會造成困擾才是.
|
brianwung
一般會員 ![]() ![]() 發表:18 回覆:22 積分:8 註冊:2002-06-12 發送簡訊給我 |
|
jest0024
高階會員 ![]() ![]() ![]() ![]() 發表:11 回覆:310 積分:224 註冊:2002-11-24 發送簡訊給我 |
引言: 感謝版主回覆, 我試了很久的確有#0的問題 會不會是pchar的問題 不知有沒有其它方式解決呢? 謝謝 經測試沒問題呀!? //因為要建立2個視窗,所以標題改了一下,測試用.. procedure TForm1.FormCreate(Sender: TObject); var dc:THandle; begin Caption:=''; dc:=FindWindow(nil,'Test1'); if(dc>0)then Caption:='Test2' else Caption:='Test1'; end; //傳遞訊息 procedure TForm1.Button1Click(Sender: TObject); VAR R:Trec; P:COPYDATASTRUCT; dc:THandle; begin R.A:=#0#1#2#3#4#5#6#7; R.B:=1; R.C:=2; if Caption='Test1' then dc:=FindWindow(nil,'Test2') else dc:=FindWindow(nil,'Test1'); if dc=0 then Showmessage('找不到視窗') else begin P.dwData:=dc; P.cbData:=Sizeof(R); P.lpData:=@R; SendMessage(dc,WM_COPYDATA,Handle,Integer(@P)); end; end; //接收用訊息 procedure TForm1.WMCopy(var Msg:TMessage); var R:Trec; P:COPYDATASTRUCT; function GetStr(Str:String):String;{這函數將Str轉為Hex} var i:Integer; begin Result:=''; for i:=1 to Length(Str)do Result:=Result ':' IntToHex(Byte(Str[i]),2); end; begin memo1.Lines.Add('Wparam:' inttostr(msg.wParam)); P:=COPYDATASTRUCT(Pointer(Msg.lParam)^); R:=TRec(P.lpData^); Memo1.Lines.Add('A:' GetStr(r.A)); memo1.Lines.Add('B:' inttostr(r.B)); memo1.Lines.Add('C:' inttostr(r.C)); end;學而時習之不亦樂乎! |
brianwung
一般會員 ![]() ![]() 發表:18 回覆:22 積分:8 註冊:2002-06-12 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |