レコードを送信したいと思いますが、今は文字列しかありませんが、変数を追加します。レコードで作業するのは初めてですから、これは愚かな質問かもしれません。しかし、なぜこの作品:SendMessage(WM_COPYDATA)+レコード+文字列
type
TDataPipe = record
WindowTitle: String[255];
end;
var
Data: TDataPipe;
copyDataStruct : TCopyDataStruct;
begin
Data.WindowTitle:= String(PChar(HookedMessage.lParam));
copyDataStruct.dwData := 0;
copyDataStruct.cbData := SizeOf(Data);
copyDataStruct.lpData := @Data;
SendMessage(FindWindow('TForm1', nil), WM_COPYDATA, Integer(hInstance), Integer(@copyDataStruct));
end;
受信側:
type
TDataPipe = record
WindowTitle: String[255];
end;
procedure TForm1.WMCopyData(var Msg: TWMCopyData);
var
sampleRecord : TDataPipe;
begin
sampleRecord.WindowTitle:= TDataPipe(Msg.CopyDataStruct.lpData^).WindowTitle;
Memo1.Lines.Add(sampleRecord.WindowTitle);
end;
はなぜ記録上ならば、私が使用:私が使用 WindowTitle: String; //removed the fixed size
と送信側の:
Data.WindowTitle:= PChar(HookedMessage.lParam); //removed String()
それは単に行きませんか?
私が取得、アクセス違反/アプリの凍結...
シナリオです:側を送信することは、SetWindowsHookExを使用して夢中DLL、受信側は、SetWindowsHookExと呼ばれるロードシンプルなexeファイル/です...
偉大な答え!いつも完全で有益な回答をありがとう。 – LessStress