Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 22.04.2009, 10:30
ExUltimate ExUltimate вне форума
Прохожий
 
Регистрация: 22.04.2009
Адрес: Омск
Сообщения: 2
Репутация: 10
Вопрос Послать сообщение на выполнение функции приложению

В общем, передо мной ситуация, что есть программа, в ней нажатие кнопки запускает выполнение процедуры. Мне надо послать некое сообщение на выполнение этой процедуры в программе, как если бы была нажата кнопка.
Поиск дескриптора кнопки не работает (главного окна - дескриптор определяется, кнопки - нет). Он не возвращается.
Я знаю имя процесса (NetSph.exe), имя процедуры(bCapStartClick), значения передаваемые ей (их 100% нет). Надо лишь послать сообщение на выполнение.
Каким образом это можно сделать? Я ни бум-бум в посылке сообщений рабочему приложению...
Ответить с цитированием
  #2  
Старый 22.04.2009, 12:12
Nyctos Kasignete Nyctos Kasignete вне форума
Активный
 
Регистрация: 29.03.2009
Сообщения: 300
Репутация: 94
По умолчанию

Цитата:
Сообщение от ExUltimate
Поиск дескриптора кнопки не работает
Интересно, это еще почему?? Дескриптор кнопки найти можно, действуя функцией EnumChildWindows... А вы как искали?
Не думаю, что в оконной процедуре, которая обрабатывает все сообщения, посылаемые приложению, есть какое-то событие, предназначенное для передачи управления на произвольную процедуру. Так что, мне кажется, тут только можно отослать сообщение BM_CLICK нужной кнопке.

А вообще, порядок передачи управления на процедуру или метку определяется программой по содержимому регистров процессора CS и EIP. Даже если вам известно смещение в памяти нужной процедуры, вряд ли возможно легко повлиять на выборку процессора. Впрочем, это только IMHO. =)
Ответить с цитированием
  #3  
Старый 23.04.2009, 20:32
ExUltimate ExUltimate вне форума
Прохожий
 
Регистрация: 22.04.2009
Адрес: Омск
Сообщения: 2
Репутация: 10
По умолчанию

Цитата:
Сообщение от Nyctos Kasignete
Интересно, это еще почему?? Дескриптор кнопки найти можно, действуя функцией EnumChildWindows... А вы как искали?

Код:
function GetNetHandle: hwnd;
begin
 result := FindWindow('Net Speakerphone - ultimate-fev', nil);
 result := FindWindowEx(result, 0, 'Net Speakerphone - ultimate-fev', 'Net Speakerphone - ultimate-fev');
 if result = 0 then result := Findwindow(nil,'Net Speakerphone - ultimate-fev');
end;
h1:=GetNetHandle;
h2 := FindWindowEx(h1, 0, 'TButton', 'Передача ON');
Это я использовал из какого-то примера.
Насчет EnumChildWindows - я ваще тока начал с Delphi... 2 месяц им занимаюсь... Как мне выкопать второй параметр, Pointer? Этого мне будет достаточно.

Цитата:
Не думаю, что в оконной процедуре, которая обрабатывает все сообщения, посылаемые приложению, есть какое-то событие, предназначенное для передачи управления на произвольную процедуру. Так что, мне кажется, тут только можно отослать сообщение BM_CLICK нужной кнопке.
Возможно!

Цитата:
А вообще, порядок передачи управления на процедуру или метку определяется программой по содержимому регистров процессора CS и EIP. Даже если вам известно смещение в памяти нужной процедуры, вряд ли возможно легко повлиять на выборку процессора. Впрочем, это только IMHO. =)
Ты меня образумил Если не ошибаюсь, это действительно так.
Хотя подумав немного, можно поразмыслить. На кнопке, котор. мне надо нажать прописано выполнение процедуры. Без параметров. Значит ей (процедуре не передается никаких ни CS ни EIP... Может они и есть, но они в программе реализованы заранее, т.к. готовность в выполнению процедуры однозначна. Надо только послать сообщение на выполнение действия, также, если б нажали кнопочку...

Последний раз редактировалось ExUltimate, 23.04.2009 в 20:42.
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 12:56.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter