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

Вниз

Обработка OnKeyPressed   Найти похожие ветки 

 
greenrul ©   (2002-03-06 17:29) [0]

Работаю с компонентой GpSysHook которая при нажатии клавиши выдает её Integer значение - как из него в строке получить F12,Shift и прочее?

пример как я делал:

case VirtualKeyCode of
17:str:=str+"Ctrl+";
16:str:=str+"Shift+";
18:str:=str+"Alt+";
end;

Чтобы вот так все нестандартные клавиши не обрабатывать а сразу в текст "обращались"

Как мне дядюшка Help рассказал Chr(VirtualKeyCode) выдает текстовое "значение" но только для БУКВ - F11,Ctrl и прочие в эту категорию не попадают 8(

P*L*E*A*S*E**H*E*L*P!!!


 
Виктор Щербаков ©   (2002-03-06 17:35) [1]

GetKeyNameText


 
greenrul ©   (2002-03-06 17:43) [2]

СПАСИБО!

иду тестить


 
greenrul ©   (2002-03-06 17:50) [3]

var s:string;
...
GetKeyNameText(VirtualKeyCode,PChar(s),0);
ShowMessage(s);



не помогает 8(
а функция GetKeyNameText всегда 0 возвращает 8(


 
greenrul ©   (2002-03-06 17:52) [4]

Даже если в качестве третьего параметра идет 100 или иное число


 
Виктор Щербаков ©   (2002-03-06 17:52) [5]

Ты бы хоть прочитал про эту функцию в SDK!
Или пытаешься угадать смысл её параметров.


 
greenrul ©   (2002-03-06 17:54) [6]

int GetKeyNameText(

LONG lParam, // second parameter of keyboard message
LPTSTR lpString, // address of buffer for key name
int nSize // maximum length of key-name string length
);

Уже читал ..

у меня с английским ничего, конечно... но...
короче я новичок, если можете помочь, помогите 8)


 
Виктор Щербаков ©   (2002-03-06 17:59) [7]

Разбираться с компонентом некогда. Вот рабочий пример:
unit Unit1;

interface

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

type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
procedure WMKeyDown(var Message: TWMKeyDown); message WM_KEYDOWN;
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

{ TForm1 }

procedure TForm1.WMKeyDown(var Message: TWMKeyDown);
var p: PChar;
begin
GetMem(p, 50);
GetKeyNameText(Message.KeyData, p, 50);
Form1.Caption := string(p);
FreeMem(p);
end;

end.


 
DieHard ©   (2002-03-06 18:00) [8]

var ar:array[0..255] of char;
ps:PChar;
...
GetKeyNameText(VirtualKeyCode,@ar[0],256);
ps:=ar;
ShowMessage(ps);


 
greenrul ©   (2002-03-06 18:01) [9]

Спасибо


 
greenrul ©   (2002-03-07 14:41) [10]

Господа, примите мои искренние извинения 8(

1.
procedure TMainForm.HookKeyAction(Sender: TObject; VirtualKeyCode: Integer;
RepeatCount: Word; ScanCode: Byte; isExtendedKey, altIsDown,
keyWasDownBefore, keyIsBeingPressed: Boolean; var filterEvent: Boolean);
var ar:array[0..255] of char; ps:PChar;
begin
GetKeyNameText(VirtualKeyCode,@ar[0],256);
ps:=ar;
ShowMessage(ps);
end;


2.
procedure TMainForm.HookKeyAction(Sender: TObject; VirtualKeyCode: Integer;
RepeatCount: Word; ScanCode: Byte; isExtendedKey, altIsDown,
keyWasDownBefore, keyIsBeingPressed: Boolean; var filterEvent: Boolean);
var p: PChar;
begin
GetMem(p, 50);
GetKeyNameText(VirtualKeyCode, p, 50);
ShowMessage(string(p));
end;


НЕ ПОМОГАЕТ....


 
greenrul ©   (2002-03-07 14:51) [11]

Есть спосов получше или мне писать процедурку с 101 строчкой кода 8)?


 
McSimm ©   (2002-03-07 14:55) [12]

Не знаю, получше или нет, попробуй
ShortCutToText(ShortCut(Key, []))


 
MBo ©   (2002-03-07 14:57) [13]

не вдаваясь глубоко, посоветую завести константный массив, внеся в него под индексом соотв. строчки


 
greenrul ©   (2002-03-07 15:05) [14]

У*Р*А!!
Спасибо тебе, McSimm!



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

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

Наверх




Память: 0.49 MB
Время: 0.017 c
1-66851
Dok_3D
2002-03-05 12:46
2002.03.21
Как уничтожить OLE-объект ?


1-66897
madcap
2002-03-06 02:12
2002.03.21
Тупой вопрос


1-66875
KMZ
2002-03-04 12:58
2002.03.21
Привет всем!(нужен совет по интерфейсу программы)


4-67050
DNT
2001-12-30 20:43
2002.03.21
Как определить handle активного окна?


14-66991
lel
2001-12-03 12:18
2002.03.21
---|Ветка была без названия|---