Hi,
ich habe folgendes Problem:
Delphi-Quellcode:
TDeviceInfo =
packed record
Vol: Shortstring;
GUID: Shortstring;
Event: UINT;
end;
PDeviceInfo = ^TDeviceInfo;
//wird hier eingepackt:
FillMemory(@TransferDeviceInfo, Sizeof(TransferDeviceInfo), 0);
TransferDeviceInfo.Event := DBT_DeviceArrival;
TransferDeviceInfo.GUID := DeviceInfo.GUID;
//hier sind die Werte noch korrekt!!
TransferDeviceInfo.Vol := DeviceInfo.Vol;
//und losgeschickt:
PostMessage(AWnd, WM_SOURCEFOUND, CCamera, Integer(@TransferDeviceInfo));
//eine andere App emfängt es:
procedure TDevCheckHandler.AppMessage(
var Msg: TMsg;
var Handled: Boolean);
begin
Handled := False;
case Msg.
message of
WM_SOURCEFOUND:
begin
FDeviceInfo.Event := PDeviceInfo(Msg.lParam).Event;
if Msg.wParam = CVolume
then
FDeviceInfo.Vol := PDeviceInfo(Msg.lParam).Vol;
if Msg.wParam = CCamera
then
FDeviceInfo.Guid := PDeviceInfo(Msg.lParam).GUID;
if Assigned(FOnDevChange)
then
FOnDevChange;
Handled := True;
end;
WM_PASSHANDLE:
begin
FDevCheckHandle := Msg.wParam;
Handled := True;
end;
end;
end;
es kommt leider nur schrott an. Der wParam wird korrekt erkannt, es handelt
sich also um die richtige Nachricht. Ich vermute, ich habe die Pointer
versaut. Sieht jemand den Fehler? Probiere schon seit einer Stunde herum.
Grüße
Sebastian