Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.09.2008, 16:33   #1
mytant712
 
Регистрация: 09.09.2008
Сообщений: 5
По умолчанию Передача символов в другое приложение

подскажите как передавать строку в текстовое поле другого окна.handle его получил.почитав на форумах стал смело писать
SendMessage(handle,WM_CHAR,ord('что нибудь'),0);
в итоге даже в блокнот ничего передавать не хочет...
в чем проблема?(пишу в делфи)
mytant712 вне форума Ответить с цитированием
Старый 10.09.2008, 21:20   #2
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

Во-первых не всё тка просто. Во-вторых сообщенеи надо посыласть не главному окну, а самому контролу, в который вводится текст. В-третьих, посылать можно только один символ.
Вот так надо:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  h:THandle;
begin
  h:=FindWindow(nil,'Безымянный - Блокнот');
  if h=0 then ShowMessage('111');
  h:=FindWindowEx(h,0,'EDIT',nil);
  if h=0 then ShowMessage('222');
  SendMessage(h,WM_CHAR,ord('A'),0);
end;
rpy3uH вне форума Ответить с цитированием
Старый 10.09.2008, 21:50   #3
mytant712
 
Регистрация: 09.09.2008
Сообщений: 5
По умолчанию

я так понял EDIT это ClassName.Пробую в других приложениях - не работает(word, promt, total, первое что под руку попалось).попробовал заменить EDIT на nil тоже не работает.я так понимаю не все окна куда можно вводить символы наследники TEdit?как найти нужного? перебирать связкой FindWindow+FindWindowEx все компоненты данного окна?еще видел такую функцию EnumChildProc она циклически перебирает все дочерние окна.расскажите кто-нибудь как это все грамотно сделать.

Последний раз редактировалось mytant712; 10.09.2008 в 23:53.
mytant712 вне форума Ответить с цитированием
Старый 11.09.2008, 07:51   #4
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

сначала надо получить список всех дочерних окон (не программно,а так, самому изучить через какую-нибудь прогу), потом просто искать через FindWindowEx нужное нам окно и отправлять туда текст.
rpy3uH вне форума Ответить с цитированием
Старый 11.09.2008, 22:24   #5
mytant712
 
Регистрация: 09.09.2008
Сообщений: 5
По умолчанию

а не подскажите что за программы? снова капался на форуме. нашел такое
http://programmersforum.ru/showthread.php?t=5505 очень может подойти мне. только вот в пердложенном коде не нашел где можно изменить значение нажатой клавиши на нужное и послать дальше винде (переназначить)?

Последний раз редактировалось mytant712; 11.09.2008 в 23:14.
mytant712 вне форума Ответить с цитированием
Старый 12.09.2008, 18:26   #6
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

программа называется WinSpy++ 1.7 официальный сайт http://www.catch22.net/software/winspy
у неё даже исходники есть
rpy3uH вне форума Ответить с цитированием
Старый 12.09.2008, 21:14   #7
mytant712
 
Регистрация: 09.09.2008
Сообщений: 5
По умолчанию

rpy3uH, а по поводу http://programmersforum.ru/showthread.php?t=5505 не подскажешь? очень нужно) заранее благодарен)

Последний раз редактировалось mytant712; 12.09.2008 в 21:17.
mytant712 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Растягивание ячейки. но другое rpy3uH Microsoft Office Excel 2 09.09.2008 11:59
ovElements и TITLE и другое PashaXP Win Api 0 06.08.2008 09:40
Перетаскивание значения одного поля в другое inret Общие вопросы Delphi 3 09.05.2008 15:26
Изменить имя и уничтожить другое окно! UnD)eaD)Snake Win Api 2 22.07.2007 14:01