Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Меню Пуск


Автор: Pavelbej 30.7.2006, 14:16
При удалении с рабочего стола иконок и панели задачь а также при отключении клавиш Win, Ctrl+Esc все 
равно можно вызвать меню кнопки Пуск двойным кликом (в любом месте). Возможно както вырубить это меню, чтобы не реагировала при двойном нажатии кнопки мыши? 

Автор: Romikgy 30.7.2006, 15:40
поставь хук на мышь, а вообще кнопку пуск закрыть можно smile 

Автор: Albinos_x 30.7.2006, 15:53
Код
...
// Скрывает (вариант 1)
procedure TForm1.Button1Click(Sender: TObject);
var Rgn:hRgn;
begin
Rgn:=CreateRectRgn(0,0,0,0);
SetWindowRgn(FindWindowEx(FindWindow('Shell_TrayWnd',nil),0,'Button',nil),Rgn,true);
end;

// Показывает (вариант 1)
procedure TForm1.Button2Click(Sender: TObject);
begin
SetWindowRgn(FindWindowEx(FindWindow('Shell_TrayWnd',nil),0,'Button',nil),0,true);
end;

// Скрывает (вариант2)
procedure TForm1.Button5Click(Sender: TObject);
begin
ShowWindow(GetWindow(FindWindow('Shell_TrayWnd',nil),GW_CHILD),SW_HIDE);
end;

// Показывает (вариант2)
procedure TForm1.Button6Click(Sender: TObject);
begin
ShowWindow(GetWindow(FindWindow('Shell_TrayWnd',nil),GW_CHILD),SW_NORMAL);
end;

// Делает недоступной
procedure TForm1.Button3Click(Sender: TObject);
begin
EnableWindow(FindWindowEx(FindWindow('Shell_TrayWnd',nil),0,'Button',nil),false);
end;

// Снова доступна
procedure TForm1.Button4Click(Sender: TObject);
begin
EnableWindow(FindWindowEx(FindWindow('Shell_TrayWnd',nil),0,'Button',nil),true);
end;

...


Клавиша Windows срабатывает во всех вариантах 

Автор: Palladin 30.7.2006, 16:11
Просто сделай так чтобы при нажатии на кнопку Windows эта кнопка нажималась ещё раз(программно) тогда сразу же при открытии пуска он сразу же и закроется, пользователь этого даже не увидет!!!  

Автор: Pavelbej 30.7.2006, 20:15
Albinos_x,  я пробовал скрыть Пуск, отключить но меню все равно появлялось. Попробую твой код, может повезет.  

Автор: Girder 30.7.2006, 22:11
Заморозь поток от него...

PS: Пример есть в арсенале. 

Автор: Pavelbej 31.7.2006, 15:15
Albinos_x,  Пуск прячется, отключается, но меню все равно появляется.

Girder,  
Цитата

Заморозь поток от него...


А как? Дай ссылку или пример.  

Автор: Yanis 1.8.2006, 15:03
Код
SendMessage(FindWindowEx(FindWindow('Shell_TrayWnd',nil),0,'Button',nil), WM_CLOSE, 0, 0);

Автор: Pavelbej 1.8.2006, 17:29
Yanis,  вроде не реагирует, спасибо. А как вернуть все обратно? 

Автор: Alexeis 1.8.2006, 17:40
Я бы сделал скорее так
Код

отключить
SendMessage(FindWindowEx(FindWindow('Shell_TrayWnd',nil),0,'Button',nil), WM_ENABLE, 0, 0);
включить
SendMessage(FindWindowEx(FindWindow('Shell_TrayWnd',nil),0,'Button',nil), WM_ENABLE, 1, 0);

Автор: Pavelbej 1.8.2006, 18:24
alexeis1,  не могу пока что воспользоватся твоим кодом, так как у меня кнопка Пуск исчезла и обратно не знаю как вернуть.

Воспользовался кодом Yanis-а, 

Код

SendMessage(FindWindowEx(FindWindow('Shell_TrayWnd',nil),0,'Button',nil), WM_CLOSE, 0, 0);

Автор: Pavelbej 1.8.2006, 18:59
После перезагрузки ОС все пришло в норму. 
alexeis1,  твой код не сработал.

Автор: Alexeis 1.8.2006, 20:39
Pavelbej, 
Я чуток подзабыл

так блокируется вся панель
Код

var
  StartBtnWnd : hWnd;

procedure TForm1.Button1Click(Sender: TObject);
begin
  StartBtnWnd := FindWindow('Shell_TrayWnd', nil);
  EnableWindow(StartBtnWnd, false);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  StartBtnWnd := FindWindow('Shell_TrayWnd', nil);
  EnableWindow(StartBtnWnd, true);
end;


Автор: Yanis 2.8.2006, 16:05
Pavelbej
Всё равно перезапуск explorer.exe всё вернёт.
Код
  WinExec('taskkill /f /im explorer.exe', SW_HIDE);
  Sleep(1000);
  WinExec('explorer.exe', SW_SHOW);

Автор: Pavelbej 2.8.2006, 16:09
Yanis,  а это не может быть опасным? Что-то мне подсказывает что лучше не надо. 
Может двойной клик перезватить? Есть пример? Поможет?

Автор: Yanis 2.8.2006, 16:19
Pavelbej
А что опасного в перезапуске эксплорера? У меня он на дню много раз перезапускается, потому как глючит!

Цитата(Pavelbej @  2.8.2006,  17:09 Найти цитируемый пост)
Может двойной клик перезватить?

Можно и перехватить. Посмотри ссылки внизу этой страницы! А ещё поищи по форуму по слову "хук", "hook".

Автор: Pavelbej 2.8.2006, 19:23
Все что искал и нашел, то не помогло. 

Автор: drkot 2.8.2006, 19:33
Pavelbej, а зачем такой маневр нужен?
В смысле что за прога, для чего она?

Автор: Pavelbej 2.8.2006, 20:35
drkot,  хочу просто не дать возможность кому либо влезть в мой комп в мое отсутствие но при этом чтобы можно было наблюдать на экране красивые картинки (как-то уже не так скучно).

Автор: Romikgy 3.8.2006, 08:53
Pavelbej, 
Цитата(Pavelbej @  2.8.2006,  19:35 Найти цитируемый пост)
хочу просто не дать возможность кому либо влезть в мой комп в мое отсутствие но при этом чтобы можно было наблюдать на экране красивые картинки

просто оключи мышь и клаву, до твоего появления

Автор: Alexeis 3.8.2006, 09:30
Romikgy, А как потом их включить? - Джойстиком?  smile 

Автор: Romikgy 3.8.2006, 09:54
Цитата(alexeis1 @  3.8.2006,  08:30 Найти цитируемый пост)
 А как потом их включить - Джойстиком

можно и им smile
можно через промежутки времени включать клаву и ждать определеной комбинации, можно просто на клаву хук поставить, 
но это не будет иметь отношения к кнопке Пуск!!!!!

Автор: Alexeis 3.8.2006, 10:12
Romikgy, нет уж лучше блокировать все комбинации клавиш, кроме например ALT+X, и по ней выдавать пароль, а мышь вроде и незачем блокировать ей же нельзя переключить процессы.

Автор: Romikgy 3.8.2006, 10:20
Цитата(alexeis1 @  3.8.2006,  09:12 Найти цитируемый пост)
вроде и незачем блокировать ей же нельзя переключить процессы.

зато ей можно кнопку пуск нажать и вызвать таск менеджер smile
А там.....

Автор: Alexeis 3.8.2006, 10:40
Не согласен! Если установить
1)BorderStyle ->bsnone
2)FormStyle -> fsStayOnTop
3)WindowStyle -> wsMaximized

И пустить типа скринсэвера, то мышкой ничего не достать! (пуск не доступен)

Добавлено @ 10:41 
Цитата(Pavelbej @  2.8.2006,  20:35 Найти цитируемый пост)
хочу просто не дать возможность кому либо влезть в мой комп в мое отсутствие но при этом чтобы можно было наблюдать на экране красивые картинки


Автор: albertn 3.8.2006, 10:43
А зачем вообще этот геморой? Не проще ли поставить на блокировку компьютер и через несколько минут включится заставка с красивыми картинками. 
Я так всегда делаю.

Автор: drkot 3.8.2006, 11:41
albertn, мысль умная, но война .... главное маневры.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)