Есть код на Delphi:
- Код: Выделить всё
function SendString(SWnd: THandle; dwData: integer; const s: string; wn: String): integer;
var
CD: TCopyDataStruct;
hw: Cardinal;
ss: String;
begin
ss := 'Заголовок окна;
hw := findWindow(nil, PChar(ss));
if hw <> 0 then begin
CD.dwData := dwData; //dwData - имеет значение от 0 до 5, в зависимости от значения данные посылаются в соответствующие окна
CD.cbData := Length(s);
if CD.cbData = 0 then CD.lpData := NIL else CD.lpData := @s[1];
Result := SendMessage(hw, WM_COPYDATA, SWnd, integer(@CD));
end;
end;
компилированный код работает как положено, но есть необходимость перенести код на VB с небольшими изменениями.
В результате изменений получилось вот что (объявление типов и функций выполнены):
- Код: Выделить всё
Private Sub Command1_Click()
Dim res As Long
Dim cd As COPYDATASTRUCT
Dim hw As Long
Dim str As String
str = Text1 'например имеет значение "456789"
hw = FindWindow(vbNullString, "Заголовок окна")
If hw <> 0 Then
cd.dwData = Combo1.ListIndex 'от 0 до 5
cd.lpData = StrPtr(str)
cd.cbData = LenB(str)
res = SendMessage(hw, WM_COPYDATA, 0, cd)
End If
End Sub
но в итоге отсылается только первый символ строки, т.е. в данном случае символ "4".
Просмотр различных форумов результатов не дал, везде приводится похожий код.
В чем может быть проблема в моём случае?