Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.06.2008, 19:17   #1
Михаил Юрьевич
Форумчанин
 
Аватар для Михаил Юрьевич
 
Регистрация: 25.12.2007
Сообщений: 661
Восклицание подскажите совет

Нашел вот такой код на блокировку Win+D,


TForm1 = class(TForm)
private
{ Private declarations }
procedure WMSysCommand(var Message: TMessage); message WM_SYSCOMMAND;
public
{ Public declarations }
end;
...
procedure TForm1.WMSysCommand(var Message: TMessage);
begin
if Message.WParam <> SC_CLOSE then begin
inherited;
end;
end;

Подскажите что надо вставить в скобки когда буду вызывать процедуру,
что в переменную надо написать,а то я не понимаю
WMSysCommand( ?? );
За частые поиски был забанен во всех известных
поисковых системах!
Михаил Юрьевич вне форума Ответить с цитированием
Старый 01.07.2008, 01:40   #2
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

А зачем тебе этот код вручную вызывать? Ты же создал обработчик для сообщения. Делфи умная, она позаботится, чтобы был вызван этот обработчик. Просто ради примера скомпилируй приведенный код и попробуй закрыть приложение.

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
  private
    procedure WMSYSCommand(var Msg: TMessage); message WM_SYSCOMMAND;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.WMSYSCommand(var Msg: TMessage);
begin
if Msg.WParam = SC_CLOSE then
begin
Application.MessageBox('','',mb_OK);
inherited;
end;
end;

end.
Баламут вне форума Ответить с цитированием
Старый 01.07.2008, 09:13   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Э-м-м-м... А OnClose что уже отменили? Или это для развития личных познаний?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.07.2008, 09:31   #4
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

Ну по крайней мере я пример привел для демонстрации работы процедуры обработки сообщения...
Баламут вне форума Ответить с цитированием
Старый 01.07.2008, 22:12   #5
Михаил Юрьевич
Форумчанин
 
Аватар для Михаил Юрьевич
 
Регистрация: 25.12.2007
Сообщений: 661
По умолчанию

Код работает,только не на блокировку Win+D,а на Alt+F4.
Вот нашел код,работает на сто процентов,он вообще блокирует кнопку Пуск на клавиатуре,вот только не знаю как ее програмно обратно включить.
Может кто то знает?
SendMessage(FindWindowEx(FindWindow ('Shell_TrayWnd',nil),0,'Button',ni l), WM_CLOSE, 0, 0);
За частые поиски был забанен во всех известных
поисковых системах!
Михаил Юрьевич вне форума Ответить с цитированием
Старый 01.07.2008, 22:30   #6
Карась
Участник клуба
 
Аватар для Карась
 
Регистрация: 26.10.2007
Сообщений: 1,244
По умолчанию

PS: Непонятно, тут обсуждает предотвращение закрытия приложения или предотвращения его сворачивания?

В любом случае. Для начала неплохобы определить кто и каким способом по нажатию этой комбинации умудряется закрыть/свернуть приложение. Потом уже думать как не дать это сделать.

Цитата:
Код работает,только не на блокировку Win+D,а на Alt+F4
Для начала неплохобы понять что эти две комбинации занимаются разными вещами. Первая сворачивает все окна, а вторая закрывает приложение.

И соответственно бороться с ними надо немного поразному...
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...

Последний раз редактировалось Карась; 01.07.2008 в 22:32.
Карась вне форума Ответить с цитированием
Старый 01.07.2008, 22:44   #7
Михаил Юрьевич
Форумчанин
 
Аватар для Михаил Юрьевич
 
Регистрация: 25.12.2007
Сообщений: 661
По умолчанию

Я в самом начале написал что надо блокировать Win+D,то есть выложил код
подумов что он блокирует Win+D,так как этот код взял с инета под этим заголовком.Соответственно мне надо что бы моя форма не сворачивалась.
За частые поиски был забанен во всех известных
поисковых системах!
Михаил Юрьевич вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужен совет по С++ profi Помощь студентам 3 28.07.2008 19:20
Нужен совет Михаил Юрьевич Общие вопросы Delphi 2 07.06.2008 13:59
Нужен совет Kler Свободное общение 0 27.03.2008 23:44
Нужен совет Михаил Юрьевич Общие вопросы Delphi 7 27.01.2008 10:25
Нужен ваш совет HIP Общие вопросы Delphi 1 20.06.2007 14:32