Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.03.21;
Скачать: [xml.tar.bz2];

Вниз

Обработка 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.005 c
6-66948
Snake
2002-01-05 13:23
2002.03.21
Имена пользователей в локалке?


6-66943
Igorok
2001-12-15 11:24
2002.03.21
Как при ошибке коннекта перехватить окно


14-66957
BWG
2002-01-19 19:53
2002.03.21
ICQ Mastak Active list


14-67003
Bodia
2002-02-07 10:31
2002.03.21
Как мне закилять, Randll


3-66751
Igor_
2002-02-21 09:54
2002.03.21
Композитнычй отчет





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский