Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Посылка сообщения. [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, но как объявить процедуру перехвата сообщения?!!!


Наверх

Титульная страница Поиск, карта сайта Написать письмо