Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
millworm
0 / 0 / 0
Регистрация: 27.04.2012
Сообщений: 74
#1

Как ввести текст в поле ввода другой программы? - C++

02.09.2014, 01:11. Просмотров 955. Ответов 6
Метки нет (Все метки)

подскажите каким образом можно ввести текст в поле ввода другой программы?
определил HWND но как дальше найти поле ввода и вставить туда текст?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.09.2014, 01:11     Как ввести текст в поле ввода другой программы?
Посмотрите здесь:
Как ввести в окно программы текст и запустить? C++
C++ WinAPI Вывести текст, введенный в поле ввода
С клавиатуры ввести текст, признаком конца ввода считать точку C++
В memo1 автоматически пишет текст,который был написан в поле ввода C++ Builder
C++ Builder Перехват ввода-вывода другой программы
Эмуляция ввода в Edit другой программы C++ Builder
Получить текст другой программы (из эдита) C++ Builder
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Alex5
1040 / 703 / 102
Регистрация: 12.04.2010
Сообщений: 1,768
02.09.2014, 01:37     Как ввести текст в поле ввода другой программы? #2
Передача данных из одного приложения в другое
Функция keybd_event():


Добавлено через 2 минуты
Поиск, перебор дочерних окон: FindWindowsEx(), EnumChildWindows().
millworm
0 / 0 / 0
Регистрация: 27.04.2012
Сообщений: 74
03.09.2014, 02:38  [ТС]     Как ввести текст в поле ввода другой программы? #3
что то не совсем получается найти форму ввода
пробовал через Voyeur находит только главное приложение и класс

Добавлено через 23 часа 51 минуту
а из этих логов spy++ можно чтониубдь вытащить для решения проблемы?
Кликните здесь для просмотра всего текста
Код
<00001> 01600D24 S WM_MOUSEACTIVATE hwndTopLevel:01600D24 nHittest:HTCLIENT uMsg:WM_LBUTTONDOWN
<00002> 01600D24 R WM_MOUSEACTIVATE fuActivate:MA_ACTIVATE
<00003> 01600D24 S WM_WINDOWPOSCHANGING lpwp:0031F0C0
<00004> 01600D24 R WM_WINDOWPOSCHANGING
<00005> 01600D24 S WM_NCPAINT hrgn:00000001
<00006> 01600D24 R WM_NCPAINT
<00007> 01600D24 S WM_ERASEBKGND hdc:4D015309
<00008> 01600D24 R WM_ERASEBKGND fErased:Истина
<00009> 01600D24 S WM_WINDOWPOSCHANGED lpwp:0031F0C0
<00010> 01600D24 R WM_WINDOWPOSCHANGED
<00011> 01600D24 S WM_ACTIVATEAPP fActive:Истина dwThreadID:00000000
<00012> 01600D24 R WM_ACTIVATEAPP
<00013> 01600D24 S WM_NCACTIVATE fActive:Истина
<00014> 01600D24 R WM_NCACTIVATE
<00015> 01600D24 S WM_ACTIVATE fActive:WA_CLICKACTIVE fMinimized:Ложь hwndPrevious:(не определено)
<00016> 01600D24 S WM_IME_SETCONTEXT fSet:1 iShow:C000000F
<00017> 01600D24 R WM_IME_SETCONTEXT
<00018> 01600D24 S WM_SETFOCUS hwndLoseFocus:(не определено)
<00019> 01600D24 R WM_SETFOCUS
<00020> 01600D24 R WM_ACTIVATE
<00021> 01600D24 S WM_IME_SETCONTEXT fSet:0 iShow:C000000F
<00022> 01600D24 R WM_IME_SETCONTEXT
<00023> 01600D24 S WM_IME_SETCONTEXT fSet:1 iShow:C000000F
<00024> 01600D24 R WM_IME_SETCONTEXT
<00025> 01600D24 S WM_CAPTURECHANGED hwndNewCapture:00000000
<00026> 01600D24 R WM_CAPTURECHANGED
<00027> 01600D24 S WM_IME_SETCONTEXT fSet:0 iShow:C000000F
<00028> 01600D24 R WM_IME_SETCONTEXT
<00029> 01600D24 S WM_IME_SETCONTEXT fSet:1 iShow:C000000F
<00030> 01600D24 R WM_IME_SETCONTEXT
<00031> 01600D24 S WM_CAPTURECHANGED hwndNewCapture:00000000
<00032> 01600D24 R WM_CAPTURECHANGED
<00033> 01600D24 P WM_KEYDOWN nVirtKey:'S' cRepeat:1 ScanCode:1F fExtended:0 fAltDown:0 fRepeat:0 fUp:0
<00034> 01600D24 P WM_CHAR chCharCode:'115' (115) cRepeat:1 ScanCode:1F fExtended:0 fAltDown:0 fRepeat:0 fUp:0
<00035> 01600D24 P WM_KEYUP nVirtKey:'S' cRepeat:1 ScanCode:1F fExtended:0 fAltDown:0 fRepeat:1 fUp:1
<00036> 01600D24 P WM_KEYDOWN nVirtKey:'S' cRepeat:1 ScanCode:1F fExtended:0 fAltDown:0 fRepeat:0 fUp:0
<00037> 01600D24 P WM_CHAR chCharCode:'115' (115) cRepeat:1 ScanCode:1F fExtended:0 fAltDown:0 fRepeat:0 fUp:0
<00038> 01600D24 P WM_KEYUP nVirtKey:'S' cRepeat:1 ScanCode:1F fExtended:0 fAltDown:0 fRepeat:1 fUp:1
<00039> 01600D24 P message:0x0118 [Нет данных] wParam:0000FFFF lParam:0015A744
<00040> 01600D24 P message:0x0118 [Нет данных] wParam:0000FFFF lParam:0015A744
<00041> 01600D24 S WM_NCACTIVATE fActive:Ложь
<00042> 01600D24 R WM_NCACTIVATE fDeactivateOK:Истина
<00043> 01600D24 S WM_ACTIVATE fActive:WA_INACTIVE fMinimized:Ложь hwndPrevious:(не определено)
<00044> 01600D24 R WM_ACTIVATE
<00045> 01600D24 S WM_ACTIVATEAPP fActive:Ложь dwThreadID:0000267C
<00046> 01600D24 R WM_ACTIVATEAPP
<00047> 01600D24 S WM_KILLFOCUS hwndGetFocus:(не определено)
<00048> 01600D24 R WM_KILLFOCUS
<00049> 01600D24 S WM_IME_SETCONTEXT fSet:0 iShow:C000000F
<00050> 01600D24 R WM_IME_SETCONTEXT
Alex5
1040 / 703 / 102
Регистрация: 12.04.2010
Сообщений: 1,768
03.09.2014, 18:01     Как ввести текст в поле ввода другой программы? #4
Цитата Сообщение от millworm Посмотреть сообщение
а из этих логов spy++
Здесь - сообщения, которые окно получает.
Ещё в spy++ есть команда "Найти окно". Можно посмотреть структуру дочерних окон.

"найти форму ввода" - а она является окном? (Что в spy++ ? ) Например, в браузере есть окно класса "Internet Explorer_Server". А для формы ввода на web-странице нет дочернего окна.
Миниатюры
Как ввести текст в поле ввода другой программы?  
millworm
0 / 0 / 0
Регистрация: 27.04.2012
Сообщений: 74
04.09.2014, 05:57  [ТС]     Как ввести текст в поле ввода другой программы? #5
дело в том что для того приложения нет такого количества окон
Миниатюры
Как ввести текст в поле ввода другой программы?  
Alex5
1040 / 703 / 102
Регистрация: 12.04.2010
Сообщений: 1,768
04.09.2014, 22:48     Как ввести текст в поле ввода другой программы? #6
Цитата Сообщение от millworm Посмотреть сообщение
из этих логов spy++ можно что-нибудь вытащить для решения проблемы?
См. строки 33-38, сообщения о нажатии клавиш. Можно попробовать отправить сообщение:
C++
1
2
3
4
PostMessage(hwnd, WM_KEYDOWN,  'A', ...); // нажата клавиша A 
    Sleep(100);
    PostMessage(hwnd, WM_KEYUP,  'A', ...); // отпущена 
    Sleep(100);
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.09.2014, 23:53     Как ввести текст в поле ввода другой программы?
Еще ссылки по теме:
Как ввести математические функции в поле C++ Builder
Создать диалоговое приложение, в котором должна быть кнопка Exit для завершения программы, поле для ввода Visual C++
Как называется многострочное поле для ввода? C++ WinAPI
Как сделать стандартное поле для ввода пароля ? C++ Builder
Как ограничить поле ввода только одним символом? А двумя? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
millworm
0 / 0 / 0
Регистрация: 27.04.2012
Сообщений: 74
04.09.2014, 23:53  [ТС]     Как ввести текст в поле ввода другой программы? #7
а lParam и WParam попробовать из логов? (wParam:0000FFFF lParam:0015A744)

Добавлено через 38 минут
только что проверил, пока не нажмешь на текстбокс для ввода, то на нажатия никак не реагирует
Yandex
Объявления
04.09.2014, 23:53     Как ввести текст в поле ввода другой программы?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru