| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: WinAPI и системное программирование > Вставить свои данные в поле чужой программы |
| Автор: X-Vlad 5.5.2006, 10:47 |
| Привет всем. У меня вот таой вот вопрос или даже просьба. Мне нужно вставить в чужую программу в поле readonly свои данные, как это можна зделать? Если можна пример. Помогите плз. Зарание благодарен. |
| Автор: Snowy 5.5.2006, 11:07 |
| Под подзразумевается поле Edit или место в памяти? |
| Автор: Rouse_ 5.5.2006, 11:12 |
| WM_SETTEXT |
| Автор: X-Vlad 5.5.2006, 11:20 | ||
поле Edit. Если можна дайту пример. Ибо никогда с таким не стыкался |
| Автор: Alexeis 5.5.2006, 11:23 | ||
Только что написал для memo
Добавлено @ 11:26 'TForm1' - искомое окно 'TMemo' - поле редактирования Окно вначале переводим в активный режим, затем текст из своего мемо помещаем в буфер обмена Вставляем в нужное мемо И делаем его опять неактивным. Добавлено @ 11:29 Я надеюсь как найти имя класса окна чужого приложения и его Child а знаете... |
| Автор: X-Vlad 5.5.2006, 11:37 | ||
незнаю |
| Автор: Alexeis 5.5.2006, 11:49 |
| В поставку Delphi входит програма WinSight.exe у меня она здесь "D:\Program Files\Borland\Delphi7\Bin\WS32.EXE" или можно воспользоваться от visual c++ , Spy++.exe - она еще удобней. Меню Search->FindWindow далее хватаем "прицел" мышкой и кидаем на нужый контрол. Програма в окошке покажет то что надо |
| Автор: Rouse_ 5.5.2006, 11:52 | ||
Ну уж хэндл то можно и без этого определить
|
| Автор: Alexeis 5.5.2006, 11:53 |
| Поле Class - это класс окна Поле Caption, заголовок - можно написать вместо nil(0) в FindWindow FindWindowEx Операцию надо проделать как для контрола так и для главного окна. Первый FinWindow - ищет главное окно, второй его "дитё" |
| Автор: Rouse_ 5.5.2006, 11:53 |
| А, ну и класс окна по хэндлу GetClassName |
| Автор: Snowy 5.5.2006, 11:55 |
| А можно просто взять InqSoft Window Scaner и сделать с этимой программой все, что душа пожелает без всякого кода. |
| Автор: Rouse_ 5.5.2006, 11:55 | ||
|
| Автор: Alexeis 5.5.2006, 11:58 |
| Rouse_, Зачем что-то писать когда за тебя уже написали лучше! Spy++ делает тоже самое. |
| Автор: Rouse_ 5.5.2006, 11:59 |
| alexeis1, зачем тогда вообще что-то писать? |
| Автор: X-Vlad 5.5.2006, 12:04 | ||
в форме программы куда я хочу пихнуть данные три едита.. когда выполняю этот код - бросает в последний эдит. Как мне выбрать эдит? Хендл эдита я знаю - "1051С" как терь это использовать? |
| Автор: Rouse_ 5.5.2006, 12:08 |
GetNextWindow(AHandle, GW_HWNDNEXT); потом проверяй класс окна через GetClassName и если это EDIT делай SendMessage |
| Автор: Alexeis 5.5.2006, 12:20 | ||
Я писал так - это работает для одного едита
если их болше то нужно использовать h2 := FindWindowEx(h1, 0, 'TMemo', 'Заголовок нужного edita'); |
| Автор: X-Vlad 5.5.2006, 12:35 | ||
как узнать заголовок? |
| Автор: Alexeis 5.5.2006, 12:56 | ||
я же писал, Spy++ дает данные:
|
| Автор: Alexeis 5.5.2006, 13:26 | ||
| Тогда хуже! Тогда надо делать как говорит Rouse_ Как я понял он предлагал по содержимому окна. Сам с таким не работал, но примерчик на delphiworld нашел
Я думаю более рабочий пример надо попросить у Rouse_ |
| Автор: X-Vlad 5.5.2006, 14:15 |
| Всем кто ответил - большое спасибо! Чтото я все равно немогу разобратся В чужой программе есть форма на которой несколько TEdit. Кто нить может привести рабочий пример в котором будет возможность во все эти эдиты вставить заданый текст? У меня с ВинАпи проблемы, а времени разбиратся нету Зарание благодарен. |
| Автор: Rouse_ 5.5.2006, 16:37 | ||
|
| Автор: X-Vlad 6.5.2006, 09:47 |
| Rouse_, +1 Большое спасибо. Получилось Всем кто принимал участие в дескусии большое спасибо! ;) |