Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.06;
Скачать: CL | DM;

Вниз

RegisterHotKey   Найти похожие ветки 

 
Lucifer ©   (2005-01-22 12:35) [0]

Начну сразу с кода, при его компиляции никаких ошибок нет, но при нажатии СНТР+Ф7, заданного события не происходит!!, в чём ошибка??
Заранее благодарен!!
Пример демонстрирует установку горячей клавиши CTRL-F7:

unit Unit1;
interface
uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,StdCtrls;

type
 TForm1 = class(TForm)
   procedure FormActivate(Sender: TObject);
   procedure FormDestroy(Sender: TObject);
 private
   procedure WMHotKey(var Message: TMessage); message WM_HOTKEY;
 end;

var
 Form1: TForm1;
implementation

{$R *.DFM}
procedure Tform1.WMHotKey(var Message: TMessage);
begin
 application.Restore;
 application.bringtofront;
 showmessage("Нажата CTRL-F7!");
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
 RegisterHotKey(form1.Handle,123,mod_control,vk_f7);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
 UnregisterHotKey(Handle, 123)
end;

end.


 
tradakad ©   (2005-01-22 12:56) [1]

poprobui eto. u menya rabotaet
unit Unit1;

interface

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

type
 TForm1 = class(TForm)
   procedure FormCreate(Sender: TObject);
   procedure FormDestroy(Sender: TObject);
 private
   procedure RD_Hide(var mess: TWMHotKey); message WM_HOTKEY;
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
 d_hide: LongWord;

implementation

{$R *.dfm}

procedure TForm1.RD_Hide;
var
 wnd: HWND;
 buff: array [0..127] of Char;  
begin
 if mess.HotKey <> 49227 then Exit;
 Wnd := GetWindow(Handle, gw_HWndFirst);
 while Wnd <> 0 do
 begin
   if (Wnd <> Application.Handle) and
      (GetWindow(Wnd, gw_Owner) = 0) and
      (GetWindowText(Wnd, buff, sizeof(buff)) <> 0) then
   begin
     GetWindowText(Wnd, buff, sizeof(buff));
     if Pos("Удаленный рабочий стол", buff) <> 0 then
     begin
       if IsWindowVisible(Wnd) then ShowWindow(Wnd, SW_HIDE) else ShowWindow(Wnd, SW_NORMAL)
     end
   end;
   Wnd := GetWindow(Wnd, gw_hWndNext)
 end;

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 d_hide := GlobalAddAtom("d_hide");
 RegisterHotKey(Form1.Handle, d_hide, 0, VK_F10)
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
 UnregisterHotKey(Form1.Handle, d_hide)
end;

end.


 
GuAV ©   (2005-01-22 13:01) [2]

Lucifer ©   (22.01.05 12:35)

У меня работает.

1. Скорее всего, CTRL-F7 уже назначена как хоткей другим приложением.
2. TForm.OnActivate не лучшее место для инициализации, лучше TForm.OnCreate


 
Lucifer ©   (2005-01-22 13:06) [3]

1. Скорее всего, CTRL-F7 уже назначена как хоткей другим приложением.
Дак тогда должно, что-то происходить по нажатию, а тут вообще ничего не происходит!!


 
Digitman ©   (2005-01-22 14:39) [4]


> Дак тогда должно, что-то происходить по нажатию, а тут вообще
> ничего не происходит!!


а с чего ты взял, что что-то обязательно должно визуально происходить ? мало ли как другое приложение обрабатывает это событие ! может оно просто фиксирует сам факт его возникновения и более ничего не делает ..

а вообще говоря RegisterHotKey() - это ф-ция, и она возвращает опред.результат, анализ которого как раз и дастт детальную инф-цию о том , успешен ли вызов, и если не успешен, то по какой конкретно причине


 
i-s-v ©   (2005-01-23 01:32) [5]

После себя убирать надо: после

> UnregisterHotKey(Form1.Handle, d_hide)

GlobalDeleteAtom(d_hide); //:)

А тута:

> d_hide := GlobalAddAtom("d_hide");
>  RegisterHotKey(Form1.Handle, d_hide, 0, VK_F10)

лучше не "d_hide", а нажать Ctrl+Shift+G...

---
The Death Will Come


 
Просто Джо ©   (2005-01-23 03:21) [6]

GuAV ©   (22.01.05 13:01) [2]
1. Скорее всего, CTRL-F7 уже назначена как хоткей другим приложением.


Ага. Watch List в IDE Delphi, например ;)


 
Lucifer ©   (2005-01-25 19:19) [7]

Блин, люди, ВСЁ перепробовал, любые комбинации клавишь делал, ничего не работает! (А у других пашет??) Я у себя на двух машинах пробовал, не работает!


 
GuAV ©   (2005-01-26 00:09) [8]

Lucifer ©   (25.01.05 19:19) [7]
Самое простое - обработчик OnActivate не назначен :-)

Вообще см [4] внизу.



Страницы: 1 вся ветка

Текущий архив: 2005.03.06;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.062 c
14-1108492975
Michael5
2005-02-15 21:42
2005.03.06
Как заменить родное событие компонента своим?


1-1108844514
shodan
2005-02-19 23:21
2005.03.06
путь к папке


1-1108994790
Sonic_gd
2005-02-21 17:06
2005.03.06
Кодировка


14-1108243221
AlterEgo of WondeRu
2005-02-13 00:20
2005.03.06
ЖИЗНЬ В КРЕДИТ


1-1109150078
Object
2005-02-23 12:14
2005.03.06
Картинки в ListBox