![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
---|Ветка была без названия|---
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. А потом запустить например калькулятор и свернуть...