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

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

---|Ветка была без названия|---


Страницы:   1 2 3 4 5 6 7 8

SeF ©   (2002-12-17 04:54:00) 

Поставили мне задачу свой subj сделать в игровой зал.
вопрос:
какие сообщения необходимо ловить.(хотябы основные).
как реагировать на них.

приму приму большенство ответов кроме: на х.. тебе надо делать, воспользуйся тойто прогой. etc..


DVM   (2003-01-24 18:11:00) [61]


> DeadMeat

см. Shell II


DeadMeat   (2003-01-24 00:29:00) [62]

> DVM
А ты случаем не в курсе дел мерзких, как теперь это системное меню приткнуть к ToolButton...??


DeadMeat   (2003-01-23 14:59:00) [63]

> DVM

> Тут нарыл...

Например...


DVM   (2003-01-23 12:07:00) [64]

>DeadMeat
Тут нарыл исходники LiteStep - там много интересного, но на C.


DVM   (2003-01-23 12:05:00) [65]

Здесь Handle - хендл того окна от которого системное меню.
Handle2 - твоя программа. По крайней мере у иеня так работает.


procedure TForm1.Button1Click(Sender: TObject);
var
LItem : LongWord;
LMenu : HMENU;
begin
LMenu := GetSystemMenu(Handle,false);
LItem := LongWord(Windows.TrackPopupMenu(LMenu, TPM_LEFTBUTTON or
TPM_RIGHTBUTTON or TPM_RETURNCMD,
( Handle,WM_SYSCOMMAND,LItem,0)

Здесь Handle - хендл того окна от которого системное меню.
Handle2 - твоя программа. По крайней мере у иеня так работает.


procedure TForm1.Button1Click(Sender: TObject);
var
LItem : LongWord;
LMenu : HMENU;
begin
LMenu := GetSystemMenu(Handle,false);
LItem := LongWord(Windows.TrackPopupMenu(LMenu, TPM_LEFTBUTTON or
TPM_RIGHTBUTTON or TPM_RETURNCMD,
100, 100, 0 , Handle2, nil));
if LItem>0 then SendMessage(Handle,WM_SYSCOMMAND,LItem,0);
end;

Коотрдинаты появления ставишь сам.


DeadMeat   (2003-01-22 21:14:00) [66]

> DVM
А hook будет ловить WM_MINIMIZE и т.п. И кстати как вытащить системный popup окна и воткнуть его куда надо?...


DVM   (2003-01-21 20:29:00) [67]

Ну трей то сделать можно - самый примитив, чтобы INTERNAT запустить. Только опознает он его как трей? Пример трея на королевстве Делфи был где то.
Но может лучше сделать так, чтобы окна сворачивались нормально:
1. Ловим сообщения о минимизации главных окон.
2. В догонку, узнав хэндл окна, скрываем их.
3. Ловим сообщения о восстановлении окон - показываем окна.


DeadMeat   (2003-01-21 18:25:00) [68]

> DVM

> Надо же, а я и не знал. Во...

Абсолютно с вами солидарен дорогой товарищ... Так чё насчёт эмуляции трэя, идеи есть?...


DVM   (2003-01-21 17:38:00) [69]

> DeadMeat

> Я сам в это долго не мог поверить, но это делает INTERNAT

Надо же, а я и не знал. Во извращение то.
Хорошо хоть, что это только в вин98


DeadMeat   (2003-01-21 17:25:00) [70]

> DVM

> А кто прячет у меня окна, когда эксплорер выгружен из памяти???...


Я сам в это долго не мог поверить, но это делает INTERNAT

> msts

> а эксплорер чтоб не засорять рабочий стол просто прячет свернутые окна...

Я почти так и сделал в своём shell-е, но я не минимизирую их а потом прячу, а просто прячу и показываю.


DVM   (2003-01-21 11:28:00) [71]

> msts
А кто прячет у меня окна, когда эксплорер выгружен из памяти???


msts   (2003-01-21 09:10:00) [72]

На счет минимизации - ничего исчезать не должно.
Сам подумай нет никакой оболочки, нет панели задач,
свернул окно и потерял его?
в W3X окна сворачивались в значек а теперь просто устанавливается стандартный, минимальный размер
а эксплорер чтоб не засорять рабочий стол просто прячет свернутые окна.

ща дему налобаю
Пора заводить тему Shell2


DVM   (2003-01-20 22:57:00) [73]

А если на время уже из своей проги запустить эксплорер в свернутом состоянии и закрыть сразу же?


DeadMeat   (2003-01-20 22:51:00) [74]

> DVM

> Ясное дело снять можно...

А если тотально заменить EXPLORER то нельзя. т.е. физически можно, но это ничего не даст.


> Попробовать не могу нет...

Он грузится вместе с EXPLORER, т.е. он та и загружает INTERNAT, а так просто, без EXPLORER он не идёт, т.к. ему нужен Tray. Другое дело если этот Tray каким нибудь эмулировать, но как...??


DVM   (2003-01-20 22:21:00) [75]

> DeadMeat


> Вообще-то это пройденый вариант. Если в нужный момент при
> загрузке нажать три весёлых клавиши (ALT+CTRL+DEL) то твой
> шел мона заблагополучно убить до того как он убьёт EXPLORER,
> именно так мы в нашем игровом клубе и снимали подобные проги...

Ясное дело снять можно. Любую другую защиту в Вин98 сломать тоже можно.


> А ты попробуй его вместе с EXPLORER-ом забить, как я до
> этого советовал и увидишь. Только я это проверял в 98 винде.

Попробовать не могу нет у меня сейчас 98. Ну не снимать INTERNAT - и все нормально сворачивается.



DeadMeat   (2003-01-20 21:29:00) [76]

> DVM

> Да ладно, это у Вас глюк какой-то. Не знаю, может это...

Вообще-то это пройденый вариант. Если в нужный момент при загрузке нажать три весёлых клавиши (ALT+CTRL+DEL) то твой шел мона заблагополучно убить до того как он убьёт EXPLORER, именно так мы в нашем игровом клубе и снимали подобные проги...

> DVM

> А чем INTERNAT то мешал - чего вы его мочите:)...

А ты попробуй его вместе с EXPLORER-ом забить, как я до этого советовал и увидишь. Только я это проверял в 98 винде.


DVM   (2003-01-20 21:00:00) [77]

А чем INTERNAT то мешал - чего вы его мочите:). Это же переключатель клавиатуры.


DVM   (2003-01-20 20:52:00) [78]

У меня программы сворачиваясь совсем "уходят", т.е. их не видно.
И потом нормально разворачиваются.
Пробовал во всех виндах: 98/nt/2000/xp


DVM   (2003-01-20 20:48:00) [79]

Да ладно, это у Вас глюк какой-то. Не знаю, может это действие фара, но моя шелл как раз это и делает - при старте убивает експлорер и всю байду с ним связанную и после программы сворачиваются нормально. Експлорер убивается с помощью TerminateProcess несколько раз по таймеру до полной смерти.


DeadMeat   (2003-01-20 20:38:00) [80]

> DVM

> у меня окна нормально сворачиваются. Я для этого ничего и не делал специально.


А ты попробуй загрузится, запустить FAR (или что-нибудь подобное, где есть список всех процессов), убить EXPLORER.EXE и INTERNAT.EXE. А потом запустить например калькулятор и свернуть...


Страницы:   1 2 3 4 5 6 7 8

Наверх

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