Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поймать текст из TEdit, ...в другом приложении 
:(
    Опции темы
Budy
Дата 5.5.2005, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 616
Регистрация: 6.2.2004
Где: Екатеринбург

Репутация: 1
Всего: 2



:Приветствую
Как мона поймать текст из TEdit в другом приложении.
Приложение отлавливаю спокойно:
Код

var
  H: HWND;
begin
  H:=FindWindow(nil,WindowCaption);
end;

А TEdit не могу отловить, да еще и текст надо "выдрать"
Помогите пожалуйста.


--------------------
Как ты назовешь свой корабль, так на нем и напишут
user posted image
PM MAIL WWW ICQ   Вверх
Yanis
Дата 5.5.2005, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 13
Всего: 111



Надо искать текстовое поле на родителе. см FindWindowEx


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Budy
Дата 5.5.2005, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 616
Регистрация: 6.2.2004
Где: Екатеринбург

Репутация: 1
Всего: 2



Yanis, пробовал, искал так:
Код

var
  H,E: HWND;
begin
  H:=FindWindow(nil,WindowCaption);
  E:=FindWindowEx(H,0,'TEdit',nil);
end;


Нету. Однако создавал свою прогу, кинут Edit на Panel. И когда ищешь
Код

E:=FindWindowEx(FindWindowEx(FindWindow(nil,'Form1'),0,'TPanel',nil),0,'TEdit',nil);

Тогда рулит.
Тот Edit, который мне надо отловить лежит тоже на чемто, а на чем хз.




--------------------
Как ты назовешь свой корабль, так на нем и напишут
user posted image
PM MAIL WWW ICQ   Вверх
Alex
Дата 5.5.2005, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 6
Всего: 162



Перенесенно из раздела Delphi


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Yanis
Дата 5.5.2005, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 13
Всего: 111



А ты точно знаешь, что класс окна которое ты ищещь именно "TEdit"? Что за программа из которой ты пытаешься вытащить текст?


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Budy
Дата 5.5.2005, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 616
Регистрация: 6.2.2004
Где: Екатеринбург

Репутация: 1
Всего: 2



Yanis, ага, вообщето не уверен, но.......... хм.. вопросик.
Ну короче это чатовская прога - IChat v1.3b. smile


--------------------
Как ты назовешь свой корабль, так на нем и напишут
user posted image
PM MAIL WWW ICQ   Вверх
Yanis
Дата 5.5.2005, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 13
Всего: 111



В общем советую скачать тебе вот эту программу Windows Scaner. Я её очень люблю. По мне, так она лучше своих аналогов по многим параметрам. А вот с помощью неё ты узнаешь об окне очень многое =)
Добавлено @ 20:28
Я фанат этой программы =) В программировании не заменимая вещь.
Добавлено @ 20:29
http://s0m.narod.ru/iws.html


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Budy
Дата 5.5.2005, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 616
Регистрация: 6.2.2004
Где: Екатеринбург

Репутация: 1
Всего: 2



Yanis, угу, thanks. Счас посмотрим smile


--------------------
Как ты назовешь свой корабль, так на нем и напишут
user posted image
PM MAIL WWW ICQ   Вверх
RA
Дата 5.5.2005, 23:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: 7
Всего: 115



К примеру можно просканировать все окна, на предмет наличия у них отличий:

Код

function EnumCh(zHandle: HWND; Info: Pointer): BOOL; stdcall;
var
 ClassName,WndTxt: array [0..256] of Char;
 WndClass: TWndClassEx;
 Rct: TRect;
begin
  GetClassName(zHandle,ClassName,255);
  GetWindowText(zHandle,WndTxt,255);
  GetWindowRect(zHandle, Rct);

  Form1.Memo1.Lines.add( 'ClassName: ' +
  ClassName + '; Window text: ' + WndTxt + '; Left: ' + IntToStr(Rct.Left) +
  '; Top: '+ IntToStr(Rct.Top) +  '; Width: ' +   IntToStr(Rct.Right-Rct.Left) + '; Height: ' + IntToStr(Rct.Bottom-Rct.Top) );
end;



procedure TForm1.Button11Click(Sender: TObject);
begin
  EnumChildWindows(GetForegroundWindow, @EnumCh, 0);
end;

PM   Вверх
Budy
Дата 6.5.2005, 07:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 616
Регистрация: 6.2.2004
Где: Екатеринбург

Репутация: 1
Всего: 2



Yanis, жёськая прога


RAdmin, thank, еще не пробовал, но вижу что будет круто!


--------------------
Как ты назовешь свой корабль, так на нем и напишут
user posted image
PM MAIL WWW ICQ   Вверх
Budy
Дата 6.5.2005, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 616
Регистрация: 6.2.2004
Где: Екатеринбург

Репутация: 1
Всего: 2



Хорошо, TEdit отловил, текст из него научился выдтрать.... А как вставить в него текст и сымитировать нажатие клавиши Enter в этом компоненте?
Пробовал так:
Код

SendMessage(FindWindow(nil,'че надо'), WM_SYSCOMMAND, VK_ENTER, 0);
Не робит, может чего не так делал ?

Это сообщение отредактировал(а) Budy - 6.5.2005, 14:22


--------------------
Как ты назовешь свой корабль, так на нем и напишут
user posted image
PM MAIL WWW ICQ   Вверх
Akella
Дата 6.5.2005, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: нет
Всего: 329



DRKB
Код

SetWindowText(FindWindow(nil, 'Безымянный - Блокнот'), 
'Дарова, ламерюга, типа ты попал... '); 


PM MAIL   Вверх
Budy
Дата 7.5.2005, 10:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 616
Регистрация: 6.2.2004
Где: Екатеринбург

Репутация: 1
Всего: 2



Товарищи, как же Enter нажать в найденном HWND? smile


--------------------
Как ты назовешь свой корабль, так на нем и напишут
user posted image
PM MAIL WWW ICQ   Вверх
Budy
Дата 7.5.2005, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 616
Регистрация: 6.2.2004
Где: Екатеринбург

Репутация: 1
Всего: 2



Ладно, я нашел решение, кому интересно:
Для TMemo и TEdit необходимо использовать
Код

SendMessage(H,WM_SETFOCUS,0,0);  //Присвоили фокус
Sleep(1000);  //Подождали, можно и поменьше сделать :)
SendMessage(H, WM_IME_KEYDOWN,VK_RETURN,0);  //Зажали Enter
SendMessage(H, WM_IME_KEYUP,VK_RETURN,0);  //Отпустили Enter

Но это еще зависит и от обработки компонента, например рассмотрим TEdit. Мы можем проверить двумя способами нажатие Enter'а:
1.Edit1KeyDown или Edit1KeyUp (Key=13) - для этого достаточно использовать
Код

SendMessage(H, WM_KEYDOWN,VK_RETURN,0);

2.Edit1KeyPress (Key=#13) - здесь работает первый пример.

P.S.Лазал по инету - везде предлагают через WM_KEYDOWN, чтож я предложил другой вариант smile


--------------------
Как ты назовешь свой корабль, так на нем и напишут
user posted image
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0792 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.