Главная страница
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.065 c
10-1085072175
Grihan
2004-05-20 20:56
2005.03.06
CorelDraw


3-1107210202
ka
2005-02-01 01:23
2005.03.06
Помогите с диагнозом и лечением.


1-1108743992
shodan
2005-02-18 19:26
2005.03.06
прозрачность формы, но не объектов на ней


9-1102513449
Макс
2004-12-08 16:44
2005.03.06
И снова collision


1-1108593960
VikUA
2005-02-17 01:46
2005.03.06
Стоит ли покупать лиценз.Delphi 8 prof