J'envoie des données à une application Delphi en utilisant WM_COPYDATA de l'application vb6. Dans mon système où local est l'anglais, je reçois les données correctement, mais sur un autre système avec le néerlandais local, le texte reçu est brouillé.Sendmessage avec WM_COPYDATA de vb6 à delphi est brouillé
l'application de réception est le delphi, le code est
procedure TReceiverMainForm.WMCopyData(var Msg: TWMCopyData);
var
copyDataType: TCopyDataType;
begin
copyDataType := TCopyDataType(Msg.CopyDataStruct.dwData);
//Handle of the Sender
mmoResult.Lines.Add(Format('WM_CopyData from: %d', [msg.From]));
case copyDataType of
cdtString: HandleCopyDataString(Msg.CopyDataStruct);
end;
//Send something back
msg.Result := mmoResult.Lines.Count;
end;
procedure TReceiverMainForm.HandleCopyDataString(
copyDataStruct: PCopyDataStruct);
var
s: string;
begin
s := PChar(copyDataStruct.lpData);
mmoResult.Lines.Add(s);
end;
EDIT
ici est le code VB6 qui envoie les données, les données am envoyaient est une chaîne
Dim buf() As Byte
ReDim buf(1 To LenB(Message))
Call CopyMemory(buf(1), ByVal Message, Len(Message))
cds.dwData = 0
cds.cbData = Len(Message) + 1
cds.lpData = VarPtr(buf(1))
' Send the string.
Dim i As Long
i = SendMessage(lHwnd, WM_COPYDATA, MainForm.hwnd, cds)
Quelqu'un peut-il me dire ce qui ne va pas?
Comment envoyez-vous les données? Selon la version de Delphi que vous utilisez, la chaîne peut être interprétée comme unicode ou ANSI. Si vous pouvez confirmer votre méthode d'envoi de code VB, et la version Delphi, je peux faire une réponse appropriée. – Deanna
@Deanna, il a une étiquette Delphi 7, donc vous êtes à mi-chemin ;-) – TLama
J'ai vu ce qui implique qu'il fait la conversion ANSI. J'ai encore besoin de connaître le code VB6 avant de pouvoir donner une réponse définitive. [D7 semble prendre en charge les caractères larges, mais pas l'interface utilisateur] (http://stackoverflow.com/a/2281327/588306). – Deanna