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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.09.2008, 07:27   #1
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
Печаль Горячие клавиши

Прива всем!
Вот такой вопрос: Как мне сделать так, что бы при нажатии скажем ctrl+` запускалась процедура в моей программе...
Я сделал так:
Код:
...
private
  procedure WMHotKey(var Msg: TWMHotKey); message WM_HOTKEY;
...
const
  MyHotKey = 192; // это клавиша тильда 
procedure TForm1.WMHotKey(var Msg: TWMHotKey);
begin
    if getasynckeystate(162{ это левый ctrl }) <> 0 then
       { тыры-пыры }
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
    RegisterHotKey(Form1.Handle, MyHotKey, 0, MyHotKey);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
    UnRegisterHotKey(Form1.Handle, MyHotKey);
end;
Но ничего не получаеться... Наверное, когда нажат control месяг не приходит...
Как реализовать?
Altera вне форума Ответить с цитированием
Старый 10.09.2008, 10:25   #2
MAcK
Форумчанин
 
Регистрация: 09.11.2006
Сообщений: 274
По умолчанию

А вы проверяли, в тыры-пыры при нажатии котрола доходит?
Единственный приличный формат, разработанный Microsoft'ом, - format c:
MAcK вне форума Ответить с цитированием
Старый 13.09.2008, 10:52   #3
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Нет, не доходит....
Altera вне форума Ответить с цитированием
Старый 13.09.2008, 12:17   #4
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Цитата:
Сообщение от Altera Посмотреть сообщение
Прива всем!
Вот такой вопрос: Как мне сделать так, что бы при нажатии скажем ctrl+` запускалась процедура в моей программе...

RegisterHotKey(Form1.Handle, MyHotKey, 0, MyHotKey);
RegisterHotKey(Handle, ........, MOD_CONTROL, 192);

На случай, если в Windows.pas не описано: MOD_CONTROL = 2;
alexBlack вне форума Ответить с цитированием
Старый 13.09.2008, 12:18   #5
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
По умолчанию

На знак ковычек точек и им подобных нереагирует вообще, используйте другой вторичный символ.
Вот пример работы с HotKey:
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    Procedure WMHotkey(Var msg: TWMHotkey); Message WM_HOTKEY;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.WMHotkey( var msg: TWMHotkey );
begin
  if msg.hotkey=1 then
  begin
   Caption := Caption +' <<USA';
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 RegisterHotkey(Handle, 1, MOD_CONTROL, Ord('1'));
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 UnRegisterHotkey(Handle, 1);
end;

end.
Alter вне форума Ответить с цитированием
Старый 13.09.2008, 21:27   #6
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Вы можете использовать компонент FisHotKey:

FisHotKey.rar
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Горячие клавиши VS 2008 .:KOLYAN:. Свободное общение 2 02.09.2008 14:32
Горячие клавешницы =) GAGARIN-NEW Общие вопросы Delphi 18 04.11.2007 18:41
Горячие клавиши назначенные для макросов Word Glad Microsoft Office Word 0 05.10.2007 20:29
По нажатию, каких сочетаний клавиш можно программно развернуть приложение, если оно свернуто в трее? Johnny_B Win Api 1 04.06.2007 08:20