Форум: "WinAPI";
Текущий архив: 2005.03.06;
Скачать: [xml.tar.bz2];
Вниз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 вся ветка
Форум: "WinAPI";
Текущий архив: 2005.03.06;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.035 c