Hallo Notes-User, Admins und Entwickler,
ich steh mal wieder vor einem Problem.
Ich habe ein kleines Programm, dem man per WM_COPYDATA Befehle rüberschieben kann und diese werden dann abgearbeitet.
Bis jetzt ist es so, dass ich eine kleine Delphi-DLL hab, welche von Notes angesprochen wird und den String übergibt.
(Das funktioniert auch ohne Probleme.)Nun ist es aber so, dass ich jedesmal sicherstellen muss, dass der User die DLL hat und diese auch aufgerufen werden kann.
Also dachte ich mir, dass man das ganze Zeug aus der DLL in LS neu schreibt (ist nicht viel, nur 1 Funktion) und die DLL somit überflüssig wird.
(so dachte der kleine Markus)Mein Problem sind die 2 Funktionen (
FindWindow,
SendMessage) und die Struktur
COPYDATASTRUCT.
Zu den zwei Funktionen hab ich hier im Forum schon die passenden Deklarationen gefunden. Mein Problem ist, wie ich folgenden Delphi Code in LS umsetzen kann.
hTargetWnd = FindWindow(nil,PChar('MyTestApp'))
function SendTextToWnd(hTargetWnd: HWND; Text : PChar): boolean;
var
MyCopyDataStruct: TCopyDataStruct;
begin
Result := true;
try
// TCopyDataStruct mit den Sende-Daten Infos ausfüllen
with MyCopyDataStruct do
begin
dwData := 0;
cbData := StrLen(Text) + 1;
lpData := Text
end;
// Die Struktur an den Empfänger schicken
if hTargetWnd <> 0 then
SendMessage(hTargetWnd, WM_COPYDATA, Longint(0), Longint(@MyCopyDataStruct));
except
Result := false;
end;
end;
Die C-Definition der Struktur ist folgende:
typedef struct tagCOPYDATASTRUCT {
ULONG_PTR dwData;
DWORD cbData;
PVOID lpData;
}
Mein größtes Problem liegt darin, den String der Struktur zuzuordnen.
Mein bisherigen Versuche sahen so aus:
Private Type COPYDATASTRUCT
dwData As Long
cbData As Long
lpData As Long
End Type
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (Byval lpClassName&, Byval lpWindowName As String) As Long
Declare Function SendMessage Lib "user32.dll" (Byval hWnd As Long, Byval Msg As Long, Byval wParam As Long, lParam As Long) As Long
Keine Ahnung, wie das gehen soll
Danke schonmal für eure Hilfe.
ps. Notes R5.0.11