Головна сторінка
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.57 MB
Час: 0.025 c
1-22142
Початківець
2001-12-20 10:42
2002.01.08
ReplaceDialog


3-21986
мрійник
2001-12-06 15:43
2002.01.08
Data Field not permitted on open DataSet


7-22422
savva
2001-09-19 12:42
2002.01.08
Цікава задачка ... Як можна працюючи зі стільниковим через CОМ порт змусити його


14-22371
дрімучий
2001-11-08 17:11
2002.01.08
Життя після смерті?


3-21935
волосся
2001-12-03 15:12
2002.01.08
Зберігання даних





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