IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

 
 Ответить  Открыть новую тему 
> Без окон и дверей... Компонент для сообщений., Property Handle.
#$# PaVeL #$#
сообщение 15.01.2006 13:16
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 91
Пол: Мужской
Реальное имя: Павел

Репутация: -  0  +


Привет всем, всем, всем!
А теперь по делу...
Прошу подсказать как создать компонент являющимся прямым потомком
Class (TComponent)

и имеющий одно свойство
Property Handle : HWND

При этом свойство должно автоматически создаваться и удаляться.
Цель: Сделать объект который может принимать и отправлять сообщения в программе не имеющей ни формы, ни даже консольного окна. (Без окон и дверей полна горница людей smile.gif ). Заранее большое спасибо!
dirol.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
hardcase
сообщение 15.01.2006 16:22
Сообщение #2


code warrior
****

Группа: Пользователи
Сообщений: 484
Пол: Мужской
Реальное имя: Славен

Репутация: -  8  +


А какие сообщения будет принимать этот компонент?
Дело в том, что у меня есть не компонент, а класс потока (thread), которому можно посылать сообщения и он их будет обрабатывать.


--------------------
ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
#$# PaVeL #$#
сообщение 16.01.2006 8:39
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 91
Пол: Мужской
Реальное имя: Павел

Репутация: -  0  +



Type
TMyComponent = class(TComponent)
PHandle : HWND;
private
public
procedure OpenFile(var msg: TMessage); message WM_OPENFILE;
procedure Restore(var msg: TMessage); message WM_RESTORE;
published
Property Handle : HWND read PHandle;
end;


При этом
Цитата

и имеющий одно свойство

Property Handle : HWND


При этом свойство должно автоматически создаваться и удаляться.

при этом конструктор и деструкторы всё должно быть.
Подскажите реализацию.
А насчёт компонента, Hardcase, хотелось бы взглянуть на него.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
hardcase
сообщение 16.01.2006 12:49
Сообщение #4


code warrior
****

Группа: Пользователи
Сообщений: 484
Пол: Мужской
Реальное имя: Славен

Репутация: -  8  +


Вот класс потока-нитки.

Я так понял, ты создаёшь класс для рабты с файлами.
А разве для этого не подходят обычные стримы?


Прикрепленные файлы
Прикрепленный файл  QueThread.pas ( 6.82 килобайт ) Кол-во скачиваний: 198


--------------------
ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
hiv
сообщение 16.01.2006 14:33
Сообщение #5


Профи
****

Группа: Пользователи
Сообщений: 660
Пол: Мужской
Реальное имя: Михаил

Репутация: -  11  +


Цитата(#$# PaVeL #$# @ 15.01.2006 13:16) *

в программе не имеющей ни формы, ни даже консольного окна. (Без окон и дверей полна горница людей smile.gif )


Для этого существуют сервисы (службы), чтобы такой сделать на Delphi:
File -> New -> Other -> Service Application


--------------------
Никогда не жадничай. Свои проблемы с любовью дари людям!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
#$# PaVeL #$#
сообщение 17.01.2006 8:01
Сообщение #6


Пионер
**

Группа: Пользователи
Сообщений: 91
Пол: Мужской
Реальное имя: Павел

Репутация: -  0  +


Помоему Вы оба меня не поняли, хотя всеравно спаибо.

Суть из одной проги послать в другую сообщение. Но если нет формы то нужен
Handle : HWND

, а где его взять?
Вывод: надо написать компонент!
То есть
procedure OpenFile(var msg: TMessage); message WM_OPENFILE;
procedure Restore(var msg: TMessage); message WM_RESTORE;


Это только пример что будут сообщения.
Надеюсь теперь понятно объяснил.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
hiv
сообщение 17.01.2006 12:41
Сообщение #7


Профи
****

Группа: Пользователи
Сообщений: 660
Пол: Мужской
Реальное имя: Михаил

Репутация: -  11  +


Какое сообщение? Если виндовое с помощью SendMessage, то Handle : HWND должен быть того приложения, которому посылаешь сообщение.


--------------------
Никогда не жадничай. Свои проблемы с любовью дари людям!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
hardcase
сообщение 17.01.2006 13:52
Сообщение #8


code warrior
****

Группа: Пользователи
Сообщений: 484
Пол: Мужской
Реальное имя: Славен

Репутация: -  8  +


Зная ThreadID можно послать виндусовское сообщение потоку. Так мой класс работает.

Сообщение отредактировано: hardcase - 17.01.2006 13:55


--------------------
ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
#$# PaVeL #$#
сообщение 18.01.2006 6:43
Сообщение #9


Пионер
**

Группа: Пользователи
Сообщений: 91
Пол: Мужской
Реальное имя: Павел

Репутация: -  0  +


mega_chok.gif
Цитата
Какое сообщение? Если виндовое с помощью SendMessage, то Handle : HWND должен быть того приложения, которому посылаешь сообщение.

Если у меня окна нет как я его приму? Поэтому и прошу помочь сделать компонент. Форма ведь тоже компонент!
А про потоки - это уже другая история. О ней попожже.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
hardcase
сообщение 18.01.2006 14:40
Сообщение #10


code warrior
****

Группа: Пользователи
Сообщений: 484
Пол: Мужской
Реальное имя: Славен

Репутация: -  8  +


Цитата(#$# PaVeL #$# @ 18.01.2006 6:43) *
mega_chok.gif

Если у меня окна нет как я его приму? Поэтому и прошу помочь сделать компонент. Форма ведь тоже компонент!
А про потоки - это уже другая история. О ней попожже.

Вот тебе сэмпл, в котором создаётся окно, способное принимать сообщения.
Без VCL. Там полно комментов, так-что разобраться - раз плюнуть.

Сообщение отредактировано: hardcase - 18.01.2006 14:41


Прикрепленные файлы
Прикрепленный файл  winmin.rar ( 2.63 килобайт ) Кол-во скачиваний: 127


--------------------
ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
#$# PaVeL #$#
сообщение 19.01.2006 7:46
Сообщение #11


Пионер
**

Группа: Пользователи
Сообщений: 91
Пол: Мужской
Реальное имя: Павел

Репутация: -  0  +


Мне окна вообще ненужны я прошу лишь помочь правильно резервировать и связывать с компонентом HWND и всё!
P.S. Но всёравно спасибо...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Dark
сообщение 20.01.2006 1:24
Сообщение #12


Знаток
****

Группа: Пользователи
Сообщений: 408
Пол: Мужской

Репутация: -  3  +


ну помоему - окно все равно создаеться.
Ты регистрируешь класс окна, затем создаешь окно (точнее - ту сущьность на которую и ссылаеться HWND)
почитай DRKB - минимальное приложение без VCL

а без того чтоб его создавать - ты ведь не сможешь тогда принимать сообщения...
ИМХО - это то о чем ты спрашивал...


--------------------
- Где я?
- Во тьме.
- В какой тьме?
- Во тьме твоего мозга.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
deema
сообщение 28.01.2006 12:56
Сообщение #13


Гость






Цитата(#$# PaVeL #$# @ 19.01.2006 7:46) *

Мне окна вообще ненужны я прошу лишь помочь правильно резервировать и связывать с компонентом HWND и всё!
P.S. Но всёравно спасибо...

Handle, насколько я понимаю, это описатель объекта. Объектом может быть и окно и поток и куча чего другого, но хэндла без объкета быть не может, это просто DWord число тогда, что с него взять-то.
Сообшения могут быть посланы только объекту (например, созданному специально окну, пусть и невидимому), поэтому создавать все равно что-то придется.

Удачи
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 11.07.2025 4:17
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"