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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2014, 18:10   #1
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,792
По умолчанию Знаю хэндл окна и хэндл компонента, но не могу послать компоненту текст

Народ, стандартной функцией по заголовку нахожу хэндл чужого окна - в моём случае это проводник.
Код:
h1:=FindWindow(nil,'Компьютер');
На этой чужой форме есть компонент, куда можно вводить текст
сначала думал, что это простой Edit, но треугольничек сбоку говорит что это ComboBox. При помощи сторонней программы определяю его хэндл и имя класса. Щёлкаю по белой области - пишет, что имя класса EDIT, но щёлкаю по треугольничку - пишет что COMBOBOX.
на своей форме создал окно Edit1, куда и ввожу этот хэндл. Далее по коду посылаю ему сообщение, чтоб поменять текст.
Код:
SendMessage(HWND(Edit1.Text),WM_SETTEXT,0,Integer(PChar('Мой текст')));
не реагирует... мог бы просто узнать координаты окна, виртуально щёлкнуть мышкой и вставить текст, но нет. окно меняет положение.
уже 3-й день бьюсь и брожу по форуму. не нашёл ни одного работающего примера...
Изображения
Тип файла: jpg Безымянный.JPG (28.8 Кб, 105 просмотров)
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.

Последний раз редактировалось NetSpace; 14.12.2014 в 18:14.
NetSpace вне форума Ответить с цитированием
Старый 14.12.2014, 18:41   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
HWND(Edit1.Text)
Это прикол такой?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 14.12.2014, 18:48   #3
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,792
По умолчанию

хэндл - это число, я так понял. нужно было использовать StrToInt?
у меня уже есть готовый хэндл этого элемента, мне нужно послать ему сообщение - изменить в нём текст, вставить.
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.

Последний раз редактировалось NetSpace; 14.12.2014 в 18:51.
NetSpace вне форума Ответить с цитированием
Старый 14.12.2014, 18:56   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
использовать StrToInt
можно и так. Но вообще-то HWND это LongWord. Да, и зачем HWND через String пропускать?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 14.12.2014, 19:01   #5
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,792
По умолчанию

каждый раз при новом запуске программы хэндл создаваемого стороннего окна и нужного мне компонента меняется. я определю его при помощи сторонней программы. а далее просто вбиваю его в поле Edit и использую. но не работает...
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 14.12.2014, 19:29   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
я определю его при помощи сторонней программы
У-у. И всегда так? Посмотри здесь, например, как искать http://programmersforum.ru/showthread.php?t=71065
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 14.12.2014, 19:51   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

А можно узнать зачем это все?
Что ты от проводника хочешь?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.12.2014, 21:12   #8
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,792
По умолчанию

нужно быстро на элемент поставить фокус и в строку эту ввести текст. медленно, за 4-6 секунд (поймать мышкой, щёлкнуть, скопировать и вставить текст, нажать виртуально ENTER) я и так сделаю, но нужно быстродействие.
вопрос Stilet'у: что даст EnumWindow и EnumChildWindow? есть работоспособные примеры их использования?
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 14.12.2014, 21:37   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
что даст EnumWindow и EnumChildWindow?
Ну даст по факту хендлы главных окон и всех их подокон.
По идее ты поймаешь хендл ShellListView проводника, что в целом можно сделать и через FindWindowEx().
Я в принципе не понимаю зачем это нужно...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.12.2014, 21:45   #10
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,792
По умолчанию

мне надо открыть Мой компьютер с выбором дисков за секунду. для этого мне надо в этой адресной строке проводника ввести текст "Компьютер" и виртуально нажать ENTER.
закрыть старое окно (CTRL+W) и вызвать новое (CTRL+N) не вариант- надо будет снова искать его хэндл.
подтолкни, где есть примеры использования EnumWindow?
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Какое имя у окна Оперы? [ Получить хэндл ] malor Visual C++ 2 30.03.2012 00:23
Как считать текст из Internet Explorer_Server зная только его Хэндл? ivancoff Работа с сетью в Delphi 0 31.10.2011 00:37
получить хэндл окна по координатам Slippy Win Api 1 24.08.2011 07:47
хэндл окна по PID процесса? Johnson Win Api 1 16.12.2010 16:05
хэндл файла sd13 Win Api 6 25.05.2008 23:42