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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2007, 16:41   #1
Никки
Форумчанин Подтвердите свой е-майл
 
Аватар для Никки
 
Регистрация: 20.11.2007
Сообщений: 500
Вопрос Три вопроса по клавиатуре

Привет всем!!

У меня вот такая задача!

1. Как сделать так, чтобы моя программа следила за нажатиями клавишь во всех приложениях?

2. У меня на ноутбуке есть функцеональная клавиша Fn она на всех ноутбуках есть! Как мне узнать что была нажата именно эта клавиша?

3. Как узнать, что была надата не одна клавиша, а их сочетание? И какие клавишы были нажаты?

Заранее спасибо!
Никки вне форума Ответить с цитированием
Старый 18.12.2007, 18:02   #2
Domovoy
Форумчанин
 
Регистрация: 24.10.2007
Сообщений: 254
По умолчанию

Ет смахивает на клавиатурного шпиона
Осуществи ка поиск по форуму по след. словам и думаю ты найдёшь то что тебе надо
SetWindowsHookEx()
UnhookWindowsHookEx()
CallNextHookEx()
Domovoy вне форума Ответить с цитированием
Старый 18.12.2007, 18:57   #3
Никки
Форумчанин Подтвердите свой е-майл
 
Аватар для Никки
 
Регистрация: 20.11.2007
Сообщений: 500
По умолчанию

нееет!

это просто у меня ноутбук Асус и ужасно неудобно сделано изменение громкости Fn+F10 и Fn+F11 ужас просто! А вот на ноутбуках Тошиба это так: Fn + стрелка вверх и Fn + стрелка вниз! Мне надо сделать это так же!
Никки вне форума Ответить с цитированием
Старый 18.12.2007, 19:24   #4
NoName_emaNoN
Форумчанин
 
Аватар для NoName_emaNoN
 
Регистрация: 15.11.2007
Сообщений: 229
Радость

Посмотри тему http://www.programmersforum.ru/showt...EE%F7%ED%E0%FF я сам этой же проблемой занимался, всё очень просто, только нужно знать код клавиши, и как-то решить проблему, когда приложение не в фокусе.
Компьютер не подчиняется законам физики: глюки возникают из ниоткуда, файлы исчезают в никуда, а вес измеряется в метрах.
NoName_emaNoN вне форума Ответить с цитированием
Старый 18.12.2007, 19:27   #5
Никки
Форумчанин Подтвердите свой е-майл
 
Аватар для Никки
 
Регистрация: 20.11.2007
Сообщений: 500
По умолчанию

Вот я и думал про код клавиши!

Нашёл пример всё вроде просто, но... там используется VK_Space ну для других обычных кнопок можно посмотреть в модуле Windows, а для необычных как?? как узнать код?
Никки вне форума Ответить с цитированием
Старый 18.12.2007, 19:38   #6
NoName_emaNoN
Форумчанин
 
Аватар для NoName_emaNoN
 
Регистрация: 15.11.2007
Сообщений: 229
Лампочка

Ты видел ссылки на предыдущей теме, там дан сайт майкрософтовский, где есть темы и коды специальные. Посмотри, правда там на английском.
Компьютер не подчиняется законам физики: глюки возникают из ниоткуда, файлы исчезают в никуда, а вес измеряется в метрах.
NoName_emaNoN вне форума Ответить с цитированием
Старый 18.12.2007, 19:49   #7
Никки
Форумчанин Подтвердите свой е-майл
 
Аватар для Никки
 
Регистрация: 20.11.2007
Сообщений: 500
По умолчанию

пытаюсь сделать так:

Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

var
        MyHookHandle:HHook = 0;
{$R *.dfm}

function MyCoolHook(Code: integer; wParam: word; lParam: Longint):LongInt;
	begin
		if code<0 then Result := CallNextHookEx(MyHookHandle,Code,wParam,lParam)
		else //проверка, какая кнопка нажата
                begin
                        Form1.Memo1.Lines.Add(IntToStr(wParam));
			result:=1;
			CallNextHookEx(MyHookHandle,Code, wParam, lParam) //вызываю следующую ловушку
		end;

end;


procedure SetHook;
begin
	MyHookHandle := SetWindowsHookEx(WH_Keyboard, @MyCoolHook, hInstance, 0);
	//устанавливаю хук
end;

procedure UnHook;
begin
	UnhookWindowsHookEx(MyHookHandle);//снимаю хук
end;



procedure TForm1.FormCreate(Sender: TObject);
begin
        SetHook;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
        UnHook;
end;

end.
результат - на всех кнопках 40, а на той которой нужно нет ничего! + Explorer вылитает куда то....
Никки вне форума Ответить с цитированием
Старый 18.12.2007, 20:03   #8
Никки
Форумчанин Подтвердите свой е-майл
 
Аватар для Никки
 
Регистрация: 20.11.2007
Сообщений: 500
По умолчанию

с сайтом микрософта всё понятно, но там даны функции для "С", в делфи я таких на нашёл!
Никки вне форума Ответить с цитированием
Старый 18.12.2007, 20:04   #9
Карась
Участник клуба
 
Аватар для Карась
 
Регистрация: 26.10.2007
Сообщений: 1,244
По умолчанию

Вот программка которая показывает коды клавишь....
Вложения
Тип файла: rar code.rar (38.5 Кб, 30 просмотров)
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...
Карась вне форума Ответить с цитированием
Старый 18.12.2007, 20:32   #10
Никки
Форумчанин Подтвердите свой е-майл
 
Аватар для Никки
 
Регистрация: 20.11.2007
Сообщений: 500
По умолчанию

спасибо! моя тоже запоказывала! но у этой кнопки кода нет!

и в той что ты дал тоже кода нет!

ЧТО ДЕЛАТЬ????
Никки вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
звук на клавиатуре Михаил Юрьевич Общие вопросы Delphi 27 02.03.2008 17:34
Рисование по нажатию клавиши на клавиатуре... zvuk01 Помощь студентам 1 25.12.2007 17:49
Всё о клавиатуре Freek Win Api 5 25.06.2007 08:48