![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Посылка сообщения. [D7, WinXP]
Новичек © (2005-01-04 13:08:00)Здравствуйте, уважаемые Мастера.
Дана вот такая программа:
program Project1;
uses Windows, Messages, Forms;
Const
WM_MYMSG = WM_USER + 10;
{$R *.res}
begin
SendMessage(Application.Handle, WM_MYMSG, 0,0);
end.
Просветите, пожалуйста, меня:
- как объявить и использовать процедуру приема сообщения?
- можно ли избавиться от 'uses Forms' и кому в таком случае отправлять сообщение?
С уважением.
Новичек (2005-01-04 16:00:00) [1]
> Тогда нефиг уже и выеживаться.
Это я уже понял :-) Придется делать с формой.
KSergey (2005-01-04 15:36:00) [2]Смотрим Application.OnMessage.
За одно - http://www.delphikingdom.com/helloworld/runtime_comp.htm
Это чтобы не было вопросов "а как его определить"
Вот только при таком подходе ни о каких WinAPI речи уже нет, разумеется. Тогда нефиг уже и выеживаться. Делаем нормальное приложение с формой и читаем [2].
Либо тогда уж делаем нормальное "чиста на API" приложение - тогда понимание куда что встроить придет автоматически
Новичек (2005-01-04 14:57:00) [3]Это одно из заданий на понимание архитектуры Windows :-)
Все-таки непонятно, как объявить процедуру в этом случае:
program Project1;
uses Windows, Messages, Forms;
Const
WM_MYMSG = WM_USER + 10;
{$R *.res}
begin
SendMessage(Application.Handle, WM_MYMSG, 0,0);
end.
Ведь нужен метод, а не просто процедура.
KSergey (2005-01-04 14:50:00) [4]Зачем сообщение посылать??? Почему бы просто не обработать "тихо"??
Новичек (2005-01-04 14:35:00) [5]Хочется на "чиста API" :-)
А цель проста - хочется написать монитор за сокетом.
Т.е. программку, не жрущую много ресурсов и тихо так себе наблюдающую за сокетом и при определенных данных на сокете послать самой себе сообщение и самой же обработать его.
KSergey (2005-01-04 14:31:00) [6]А еще есть PostThreadMessage
KSergey (2005-01-04 14:28:00) [7]А ответить таки на вопросы из [4] KSergey © (04.01.05 13:56) - не судьба? Ну просто хочется таки прояснить наконец ситуацию-то!
К стати, не просто без "оконной процедуры", но и без окна сообщение некому слать ;)
А вообще не очень понятна цель посылки сообщения. Какова она?
Новичек (2005-01-04 14:02:00) [8]Forms отнимает много ресурсов...
Я вот что думаю: не получится ничего без оконной процедуры, а она как раз из Forms и пришла.
KSergey (2005-01-04 13:56:00) [9]Своей - а она консольная или нет? Есл нет - хочется на "чиста WinAPI"?
Если тоже нет - тогда не понятно чем Forms помешал.
Новичек (2005-01-04 13:52:00) [10]
> Послать сообщение -кому хотим? Своей же программе или другой
> запущеной?
Своей.
KSergey (2005-01-04 13:42:00) [11]Послать сообщение -кому хотим? Своей же программе или другой запущеной?
> но как объявить процедуру перехвата сообщения?!!!
TMyForm = class(TForm)
...
publuc
procedure WMMyMsg(var Msg: TMessage); message WM_MYMSG;
.....
procedure TMyForm.WMMyMsg(var Msg: TMessage);
begin
...
end;
Новичек (2005-01-04 13:15:00) [12]Можно, наверное, воспользоваться HWND_BROADCAST, но как объявить процедуру перехвата сообщения?!!!