Nach Hause
Top.Mail.Ru Yandeks.Metrika
Forum: "Haupt";
Aktuelles Archiv: 2002.01.08;
Herunterladen: [xml.tar.bz2];

Nach unten

Wie kann ich eine Nachricht an das System senden, dass eine Taste gedrückt wird? Finden Sie ähnliche Zweige


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 и
отправляет в него строку.
Beispiel:

procedure SimulateKeyDown(Key : byte);
beginnen
keybd_event(Key, 0, 0, 0);
end;

procedure SimulateKeyUp(Key : byte);
beginnen
keybd_event(Key, 0, KEYEVENTF_KEYUP, 0);
end;

procedure SimulateKeystroke(Key : byte; extra : DWORD);
beginnen
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;
beginnen
{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);
für i: = 1 bis Länge (s) tun
beginnen
w := VkKeyScan(s[i]);
{If there is not an error in the key translation}
if ((HiByte(w) <> $FF) and (LoByte(w) <> $FF)) then
beginnen
{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;

Prozedur TForm1.Button1Click (Sender: TObject);
beginnen
{Toggle the cap lock}
SimulateKeystroke(VK_CAPITAL, 0);
end;

Prozedur TForm1.Button2Click (Sender: TObject);
beginnen
{Capture the entire screen to the clipboard}
{by simulating pressing the PrintScreen key}
SimulateKeystroke(VK_SNAPSHOT, 0);
end;

Prozedur TForm1.Button3Click (Sender: TObject);
beginnen
{Capture the active window to the clipboard}
{by simulating pressing the PrintScreen key}
SimulateKeystroke(VK_SNAPSHOT, 1);
end;

Prozedur TForm1.Button4Click (Sender: TObject);
beginnen
{Set the focus to a window (edit control) and send it a string}
Application.ProcessMessages;
Edit1.SetFocus;
SendKeys("Delphi Is RAD!");
end;
-------------------------------------------------- -------------------------

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




Seiten: 1 ganze Branche

Forum: "Haupt";
Aktuelles Archiv: 2002.01.08;
Herunterladen: [xml.tar.bz2];

nach oben









Speicher: 0.83 MB
Zeit: 0.033 c
1-22088
Mikhalyov Dmitry
2001-12-19 14:58
2002.01.08
Ereignisaufruf vom Programm


3-21951
Olban
2001-12-05 11:07
2002.01.08
Verwenden Sie QuantumGrid


14-22321
Olgerd
2001-11-01 21:44
2002.01.08
Ernste Frage


1-22261
bk
2001-12-17 15:42
2002.01.08
Excel


1-22011
Ksergey
2001-12-16 14:26
2002.01.08
Wie erhalte ich den TAB-Schlüssel?





Afrikanisch albanisch Arabic Armenisch Aserbaidschanisch Baskisch Weißrusse Bulgarian katalanisch Chinesisch (vereinfacht) Chinesische Tradition) kroatisch Tschechisch Dänisch Dutch Englisch estnisch Philippinisch Finnish Französisch
Galicisch Georgisch Deutsch Griechisch haitian Creole hebräisch Hindi ungarisch isländisch Indonesian irisch Italian Japanisch Koreanisch lettisch litauisch Makedonisch Malay Maltesisch Norwegian
persisch Polnisch Portugiesisch rumänisch Russisch serbisch Slovak Slowenisch Spanisch swahili Swedish Thai Türkisch Ukrainisch Urdu Vietnamesisch Walisisch Jiddisch Bengalisch bosnisch
cebuano Esperanto Gujarati Hausa Hmong igbo Javanisch kannada khmer Laotisch Lateinisch Maorisch Marathi Mongolisch nepali Pandschabi Somalisch Tamilisch Telugu yoruba
Zulu
Английский Französisch Deutsch Italienisch Португальский Russisch Spanisch