Головна сторінка
Top.Mail.Ru Яндекс.Метрика
Форум: "Основна";
Поточний архів: 2002.01.08;
Завантажити: [xml.tar.bz2];

Вниз

Як послати системі повідомлення, що натиснута кнопка? Знайти схожі гілки


Delphimun   (2001-12-20 12:10) [0]

Як послати системі повідомлення, що натиснута кнопка? Наприклад ставиш за таймером це повідомлення системі, що натиснута кнопка, а користувач працює в даний момент в блокноті і щоб в блокноті писалися ці літери, які ти послав системі (що нажлі клавішу)



gek   (2001-12-20 12:32) [1]

Получаешь дескриптор блокнота и отсылаешь ему wm_keydown



Delphimun   (2001-12-20 13:10) [2]

я с этим уже разобрался(мне нужно было не только блокноту отсылать, а вобщем системе)
Вот пример из faq, кто заинтересовался:

-------------------------------------------------- -----------------------
Ниже приведена процедура, позволяющаю отправлять нажатия в любой
элемент управления (window control), способный принимать ввод с
клавиатуры. Вы можете использовать эту технику чтобы включать клавиши
NumLock, CapsLock и ScrollLock под Windows NT. Та же техника работает
и под Windows 95 для CapsLock и ScrollLock но не работает для клавиши
NumLock.
Обратите внимание, что приведены четыре поцедуры: SimulateKeyDown() -
эмулировать нажатие клавиши (без отпускания) SimulateKeyUp() -
эмулировать отпускание клавиши SimulateKeystroke() - эмулировать удар
по клавише (нажатие и отпускание) и SendKeys(), позволяющие Вам гибко
контролировать посылаемые сообщения клавиатуры.
SimulateKeyDown(), SimulateKeyUp() и SimulateKeystroke() получают коды
виртуальных клавиш (virtural key) (вроде VK_F1). Процедура
SimulateKeystroke() получает дополнительный параметр, полезный при
эмуляции нажатия PrintScreen. Когда этот параметр равен нулю весь
экран будет скопирован в буфер обмена (clipboard). Если дополнительный
параметр равен 1 будет скопированно только активное окно.
Четыре метода "button click" демонстрируют использование:
ButtonClick1 - включает capslock ButtonClick2 - перехватывает весь
экран в буфер обмена (clipboard). ButtonClick3 - перехватывает
активное окно в буфер обмена (clipboard). ButtonClick4 - устанавливает фокус в Edit и
отправляет в него строку.
Приклад:

procedure SimulateKeyDown(Key : byte);
починати
keybd_event(Key, 0, 0, 0);
end;

procedure SimulateKeyUp(Key : byte);
починати
keybd_event(Key, 0, KEYEVENTF_KEYUP, 0);
end;

procedure SimulateKeystroke(Key : byte; extra : DWORD);
починати
keybd_event(Key,extra,0,0);
keybd_event(Key,extra,KEYEVENTF_KEYUP,0);
end;

procedure SendKeys(s : string);
var i : integer;
flag : bool;
w : word;
починати
{Get the state of the caps lock key}
flag := not GetKeyState(VK_CAPITAL) and 1 = 0;
{If the caps lock key is on then turn it off}
if flag then
SimulateKeystroke(VK_CAPITAL, 0);
for i: = 1 to Length (s) do
починати
w := VkKeyScan(s[i]);
{If there is not an error in the key translation}
if ((HiByte(w) <> $FF) and (LoByte(w) <> $FF)) then
починати
{If the key requires the shift key down - hold it down}
if HiByte(w) and 1 = 1 then
SimulateKeyDown(VK_SHIFT);
{Send the VK_KEY}
SimulateKeystroke(LoByte(w), 0);
{If the key required the
shift key down - release it}
if HiByte(w) and 1 = 1 then
SimulateKeyUp(VK_SHIFT);
end;
end;
{if the caps lock key was on at start, turn it back on}
if flag then
SimulateKeystroke(VK_CAPITAL, 0);
end;

procedure TForm1.Button1Click (Sender: TObject);
починати
{Toggle the cap lock}
SimulateKeystroke(VK_CAPITAL, 0);
end;

procedure TForm1.Button2Click (Sender: TObject);
починати
{Capture the entire screen to the clipboard}
{by simulating pressing the PrintScreen key}
SimulateKeystroke(VK_SNAPSHOT, 0);
end;

procedure TForm1.Button3Click (Sender: TObject);
починати
{Capture the active window to the clipboard}
{by simulating pressing the PrintScreen key}
SimulateKeystroke(VK_SNAPSHOT, 1);
end;

procedure TForm1.Button4Click (Sender: TObject);
починати
{Set the focus to a window (edit control) and send it a string}
Application.ProcessMessages;
Edit1.SetFocus;
SendKeys("Delphi Is RAD!");
end;
-------------------------------------------------- -------------------------

Теперь мне нужно отследить нажатие пользователя на кнопку клавы(например алфовитную) и обнулировать это нажатие\заместить своим.




сторінки: 1 вся гілка

Форум: "Основна";
Поточний архів: 2002.01.08;
Завантажити: [xml.tar.bz2];

наверх









Пам'ять: 0.83 MB
Час: 0.027 c
3-21962
phantom2040
2001-12-04 13:27
2002.01.08
Установка фільтра в TDStringGrid


1-22067
DNT
2001-12-15 16:20
2002.01.08
Dialog & dll


14-22416
Немезида
2001-11-14 11:47
2002.01.08
Потрібна програма такого типу


1-22198
T2
2001-12-16 07:23
2002.01.08
Одна обробка для купи кнопок


4-22508
Gluka
2001-11-06 00:18
2002.01.08
Чи можна якось змінити вид курсора над чужим вікном !?





африкаанс албанський арабська вірменин азербайджанець баскський білоруський болгарська каталонський Китайська (спрощене письмо) Китайський традиційний) хорватський чеська данську мову нідерландський Ukranian естонець Філіппінська фінську мову французький
галісійська грузинський німецький грецький гаїтянський креольський давньоєврейську хінді угорський ісландський індонезієць ірландський італійський японський корейський латиська литовець македонець малайський мальтійський норвежець
перс полірування португальська румунський російська сербський словацький словенський іспанська суахілі шведську мову тайський турецька український урду в&#39;єтнамський валлійський ідиш бенгальський боснійський
кебуано есперанто гуджараті хауса хмонг ігбо яванський каннада кхмерская Лао латинь маорі маратхі монгольський непальська панджабі сомалійський тамільська телугу йоруба
зулуський
Англійська Французький Німецький Італійський Португальська Русский Іспанська