Галактика и WinAPI
Модераторы: m0p3e, edward_K, Модераторы
-
- Сообщения: 2
- Зарегистрирован: 21 фев 2006, 14:06
Галактика и WinAPI
доброго времени суток, всем!
подскажите, пожалуйста, как при помощи функций WinAPI заполнить текстовое поле(Edit) в дочернем окне Галактики? до окна добрался, фокус этому контролу передал, а вот текстом поле заполнить не получается. пробовал так:
SetWindowText(WndCh,PChar('Text')) и
PostMessage(WndCh,WM_SETTEXT,0,Integer(PChar('Text')));
ничего не вышло . возможно ли вообще это сделать ф-ми WinAPI? если да, то где ошибка? если нет, то как реализовать?
PS: я не программист Галактики, работаю с ней как с обычным приложением (не используя средства Атлантиса), поэтому попрошу отнестись к возможно глупому вопросу лояльно.
подскажите, пожалуйста, как при помощи функций WinAPI заполнить текстовое поле(Edit) в дочернем окне Галактики? до окна добрался, фокус этому контролу передал, а вот текстом поле заполнить не получается. пробовал так:
SetWindowText(WndCh,PChar('Text')) и
PostMessage(WndCh,WM_SETTEXT,0,Integer(PChar('Text')));
ничего не вышло . возможно ли вообще это сделать ф-ми WinAPI? если да, то где ошибка? если нет, то как реализовать?
PS: я не программист Галактики, работаю с ней как с обычным приложением (не используя средства Атлантиса), поэтому попрошу отнестись к возможно глупому вопросу лояльно.
-
- Сообщения: 2
- Зарегистрирован: 21 фев 2006, 14:06
Будет работать, например, такой код на Си (hWnd - дескриптор EditBox-а, фокус ввода ему уже передан):
После этого в EditBox-е текст появится, но при смене позиции он не сохранится в таблице БД. Чтобы заставить "Галактику" думать, что текст введен с клавиатуры, к коду надо добавить еще несколько строк:
Если в тексте нет русских букв, то его можно даже целиком ввести, посылая на каждый символ пару сообщений WM_KEYDOWN + WM_KEYUP.
Код: Выделить всё
SendMessage(hWnd, EM_SETSEL, 0, -1);
SendMessage(hWnd, EM_REPLACESEL, FALSE, (LPARAM)pszNewText);
Код: Выделить всё
PostMessage(hWnd, WM_KEYDOWN, VK_SPACE, 0x00000001);
PostMessage(hWnd, WM_KEYUP, VK_SPACE, 0xC0000001);
PostMessage(hWnd, WM_KEYDOWN, VK_BACK, 0x00000001);
PostMessage(hWnd, WM_KEYUP, VK_BACK, 0xC0000001);
-
- Местный житель
- Сообщения: 412
- Зарегистрирован: 28 апр 2005, 11:34
- Откуда: Галактика Млечный Путь
еще вариант на делфи, wnd-дескриптор окна,s-записываемая строка:
procedure SetWND(wnd : longint;s:string);
var buf:array[0..255]of Char;
i: longint;
begin
s:=oemtoansi(s);
ZeroMemory(@buf,SizeOf(buf));
for i:=1 to length(s) do begin
buf[i-1] := s;
end;
SendMessage(wnd,wm_SetFocus,0,0);
SendMessage(wnd,WM_SETTEXT,0,lparam(@buf[0]));
UpdateWindow(wnd);
SendMessage(wnd,wm_KillFocus,0,0);
end;
procedure SetWND(wnd : longint;s:string);
var buf:array[0..255]of Char;
i: longint;
begin
s:=oemtoansi(s);
ZeroMemory(@buf,SizeOf(buf));
for i:=1 to length(s) do begin
buf[i-1] := s;
end;
SendMessage(wnd,wm_SetFocus,0,0);
SendMessage(wnd,WM_SETTEXT,0,lparam(@buf[0]));
UpdateWindow(wnd);
SendMessage(wnd,wm_KillFocus,0,0);
end;
-
- Сообщения: 17
- Зарегистрирован: 21 май 2008, 11:03
- Откуда: Витебск
Re: Галактика и WinAPI
Есть самописное приложение, которое мониторит определенные события. Необходимо отсылать сообщение в галактику о том, что событие произошло.
У меня получилось через WinApi послать в Галактику нажатие клавиши F3 или F4 в свой интерфейс, и обработать cmPick и cmEdit. Но мне бы хотелось организовать обмен через свое событие. Можно ли послать в галактику сообщение из своего приложения посредством функций WinApi, и чтобы галактика отработала какую-нибудь команду, не привязанную к клавиатуре?
Может кто сталкивался - просветите пожалуйста.
У меня получилось через WinApi послать в Галактику нажатие клавиши F3 или F4 в свой интерфейс, и обработать cmPick и cmEdit. Но мне бы хотелось организовать обмен через свое событие. Можно ли послать в галактику сообщение из своего приложения посредством функций WinApi, и чтобы галактика отработала какую-нибудь команду, не привязанную к клавиатуре?
Может кто сталкивался - просветите пожалуйста.
-
- Местный житель
- Сообщения: 1089
- Зарегистрирован: 04 сен 2008, 11:27
- Откуда: Москва
- Контактная информация:
Re: Галактика и WinAPI
Начните терзать ТП. Есть функционал (покрайней мере разрабатывался) как через API запустить интерфейс галактический..
Время ведет!