ブール値と整数を含むWindowsメッセージを投稿する方法を教えてください。私は、文字列の投稿と復元方法を理解しています。 これは文字列のコードです。ブール値と整数を送受信するウィンドウメッセージ
procedure TForm5.Button1Click(Sender: TObject);
var
LParam: string;
WParam: string;
pLParam: pChar;
pWParam: pChar;
begin
Memo.Clear;
LParam := 'Now is the time for all good men...';
Length(LParam);
GetMem(pLParam, (Length(LParam) + 1) * SizeOf(Char));
Move(LParam[1], pLParam^, (Length(LParam) + 1) * SizeOf(Char));
WParam := 'This is the WParam. ';
Length(WParam);
GetMem(pWParam, (Length(WParam) + 1) * SizeOf(Char));
Move(WParam[1], pWParam^, (Length(WParam) + 1) * SizeOf(Char));
PostMessage(Handle, WM_SETPAUSE_MESSAGE, Integer(pWParam),Integer(pLParam));
end;
と、このテキストを回復する...
procedure TForm5.WMsetPause(var MESSAGE: TMessage) { message WM_SETPAUSE_MESSAGE };
var
pLParam: pChar;
pWParam: pChar;
begin
try
pLParam := pChar(Message.LParam) ;
Memo.Lines.Add(pLParam) ;
Freemem(pLParam);
except
on E: Exception do
Memo.Lines.Add(E.ClassName + ': ' + E.MESSAGE);
end;
try
pWParam := pChar(Message.WParam);
Memo.Lines.Add(pWParam);
Freemem(pWParam);
except
on E: Exception do
Memo.Lines.Add(E.ClassName + ': ' + E.MESSAGE);
end;
end;
メッセージを投稿できない場合は、PostMessageから返されたメッセージを確認する必要があります。その場合、メモリを破壊する。あなたのキャストは間違っていて、64ではなく失敗します。 LPARAM、WPARAMなどにキャスト –