vb6 앱에서 WM_COPYDATA를 사용하여 데이터를 델파이 응용 프로그램으로 보냅니다. 내 로컬 시스템은 영어로, 나는 데이터를 올바르게 수신하지만, 네덜란드 시스템을 사용하는 다른 시스템에서는 수신 텍스트가 왜곡됩니다.vb6에서 delphi로 WM_COPYDATA가있는 SendMessage가 깨졌습니다.
수신 앱이 델파이이다, 코드가
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;
데이터를 보내는 VB6 코드 여기
편집입니다, 데이터를 전송하고 문자열
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)
입니다
아무도 내가 뭘 잘못하고 있다고 말할 수 있습니까?
어떻게 데이터를 보내시겠습니까? 사용중인 Delphi 버전에 따라 문자열은 유니 코드 또는 ANSI로 해석 될 수 있습니다. VB 코드 전송 방법 및 Delphi 버전을 확인할 수 있다면 적절한 대답을 할 수 있습니다. – Deanna
@Deanna, Delphi 7 태그가있어서 반쯤 더 가깝습니다 ;-) – TLama
ANSI 변환을 수행한다는 의미입니다. 난 아직 확실한 대답을 줄 수 있기 전에 VB6 코드를 알아야합니다. [D7은 다양한 문자를 지원하지만 UI는 그렇지 않습니다.] (http://stackoverflow.com/a/2281327/588306). – Deanna