powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FindWindowEx - по приколу или где ?
11 сообщений из 11, страница 1 из 1
FindWindowEx - по приколу или где ?
    #39925485
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго дня господа !

Хочу в операцинке
1. найти окно
2. найти Control
3. переустановить значение Control

Имею код
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
procedure TForm1.Button1Click(Sender: TObject);
var
  H,C,N,M: HWND;
  K: Boolean;
  S: String;
begin
  K := False;
  H := FindWindow ('TForm1', 'MyWindow');
  if K then Memo1.Lines.Add(IntToHex(H,2));
  M:=FindWindowEx(H,N,'TEdit','Edit1');
  //C:=FindWindowEx(H,N,'TButton','Button1');
  S:='MyText';
  if M<>0 then SendMessage(M,WM_SetText,0,Integer(S));
  //If C<>0 then SendMessage (C,BM_CLICK, 0, 0);
  //If H<>0 then SendMessage (H,WM_CLOSE, 0, 0)
end;



Все работает, но есть вопрос строка
if K then Memo1.Lines.Add(IntToHex(H,2));
Абсолютно не нужна
Абсолютно заремирована, но без нее не поиска Control-a
Поясните причину такого поведения

Заранее благодарен !
...
Рейтинг: 0 / 0
FindWindowEx - по приколу или где ?
    #39925487
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
N - входной параметр
...
Рейтинг: 0 / 0
FindWindowEx - по приколу или где ?
    #39925493
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий 2
N - входной параметр

Хотите сказать не инициализирован N параметр ?
Согласен - исправил !

А какое отношение имеет строка
if K then Memo1.Lines.Add(IntToHex(H,2));

Она не имеет касательства к N

Спасибо
...
Рейтинг: 0 / 0
FindWindowEx - по приколу или где ?
    #39925510
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_X

Код: pascal
1.
2.
  S:='MyText';
  if M<>0 then SendMessage(M,WM_SetText,0,Integer(S));




Заранее благодарен !

Попробуйте заменить Integer(S) на Integer(@S[1])
...
Рейтинг: 0 / 0
FindWindowEx - по приколу или где ?
    #39925636
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
x1ca4064,

Инициализация Т - целяком решила проблему.

Возник попутный вопрос
Возможно ли перехватить события "найденной" формы

Т.е.
Хочу в операцинке
1. найти окно
2. найти Control
3. переустановить значение Control
4. найти Button
5. при его нажатии выполнить событие основной формы из которой велся поиск ?

N:=0;
H := FindWindow ('TForm1', 'MyWindow');
C:=FindWindowEx(H,N,'TButton','Button1');
--- переопределить событие повешенное на Button1
на событие повешенное на Button10 другой формы другого приложения Delphi
или выставить очередность выполнения
If C<>0 then SendMessage (C,BM_CLICK, 0, 0); - нажал кнопку
...
Рейтинг: 0 / 0
FindWindowEx - по приколу или где ?
    #39925728
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_X

А какое отношение имеет строка
if K then Memo1.Lines.Add(IntToHex(H,2));
Она не имеет касательства к N

После неё в регистрах оставались значения, которые использовались как значение N. Случайность.
...
Рейтинг: 0 / 0
FindWindowEx - по приколу или где ?
    #39926060
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_X
x1ca4064,

Инициализация Т - целяком решила проблему.

Возник попутный вопрос
Возможно ли перехватить события "найденной" формы

Т.е.
Хочу в операцинке
1. найти окно
2. найти Control
3. переустановить значение Control
4. найти Button
5. при его нажатии выполнить событие основной формы из которой велся поиск ?

N:=0;
H := FindWindow ('TForm1', 'MyWindow');
C:=FindWindowEx(H,N,'TButton','Button1');
--- переопределить событие повешенное на Button1
на событие повешенное на Button10 другой формы другого приложения Delphi
или выставить очередность выполнения
If C<>0 then SendMessage (C,BM_CLICK, 0, 0); - нажал кнопку


Нельзя: приложения в разных адресных пространствах. :)

Разве что приложения специально заточены под такое. Например, ты сообщишь другому приложению значение дескриптора какого-либо своего окна, у которого оконная процедура станет вызывать твой код, если получит соотвт. сообщение от другого приложения.
...
Рейтинг: 0 / 0
FindWindowEx - по приколу или где ?
    #39926138
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сильно не вникал в хотелку, но теории вроде бы можно хуками. Правда, скилл-левел автора, кажется, маловат для такого. Надо качать профу
...
Рейтинг: 0 / 0
FindWindowEx - по приколу или где ?
    #39926182
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёё

Нельзя: приложения в разных адресных пространствах. :)

Можно, через инъекции, например. Но ТСу надо быть готовым узнать много нового :)
С его текущим подходом рандомного программирования у него вряд-ли это получится.
...
Рейтинг: 0 / 0
FindWindowEx - по приколу или где ?
    #39926236
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Принято - спасибо за советы и уделенное время господа !

Еще вопрос
- может ли окно, (визуально наблюдается, имеет заголовок, Contol-ы и Button-ы)
иметь особый статус и игнорировать код функции FindWindowEx.

Выражаюсь точнее функции FindWindow и FindWindowEx, а также утилита MS SPY++
не видят окно, хотя оно присутствует визуально.


Спасибо
...
Рейтинг: 0 / 0
FindWindowEx - по приколу или где ?
    #39926309
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_X
Выражаюсь точнее функции FindWindow и FindWindowEx, а также утилита MS SPY++
не видят окно, хотя оно присутствует визуально.
Значит это не окно, а рисунок. qt так делало
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FindWindowEx - по приколу или где ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]