Hallo zusammen,
Ich bin gerade dabei ein Plugin für TS3 in Delphi zuschreiben. Die Funktionen und so funken nach langen entlich. Nun wollte ich folgendes machen:
- Eigene Window-Message wo ich dem lparam einen PAnsiChar übergebe.
- Die SendMessageA (wegen AnsiChar, da ich einen AniString in UTF-8-Encoding verschicke) von der Plugin-
DLL aufrufen und ausgeben.
So also was ich festgestellt habe ist, dass ich irgendwas falsch mache beim füllen der Daten in meiner WndProc. Gibt es irgendeine spezielle Funktion zum Speichern in einen Pointer bei der WndProc oder steh ich einfach aufm Schlauch?
Hier der Code:
Delphi-Quellcode:
//WndProc der Anwendung
function WndMainProc(hWnd: HWND; uMsg: UINT; wParam: wParam; lParam: LParam):
lresult;
stdcall;
var Text : AnsiString;
begin
Result := 0;
case uMsg
of
//.....
WM_MUSIKBOT_PLAY:
begin
Text:= UTF8Encode(StreamList.Names[wParam]);
//Der Wert existiert
StrPLCopy(PAnsiChar(lParam),Text,50);
//Move(Text[1],Pointer(lParam)^,50); //dies hab ich auch versucht geht auch nicht
end;
end;
end;
//Aufruf aus der Plugin-DLL.
var
StreamName :
array [0..50]
of AnsiChar;
begin
//SendMessageA(WindowH,WM_GETTEXT,50,Integer(@StreamName)); //Lustig hier ist, das dies geht
SendMessageA(WindowH,WM_MUSIKBOT_PLAY,0,Integer(@StreamName));
//der wParam wird hier für etwas anderes genutz und das Resultat wird nur für Errors verwendet
//Ausgeben
end;
Wenn ich mir vorm beenden der Funktion in der WndProc, lParam zu einem PAnsiChar caste,bekomme ich den richtigen Text. Was mach ich falsch? Verstehs net.
Wenn ich eine "fertige" Windows-Message nehme geht es. Also muss es irgendwie an der WndProc liegen.
Gruß
NickelM