Эмулироваит нажатие Enter

Подскажите пожалуйста как эмулировать нажатие Enter ? и можно ли узнать когда сам пользаватель нажал Enter или когда это сделал программа ?
14 ответов

копай в сторону VK_Key коды клавиш можно посмотреть в делфийском хелпе... а отслеживать... там помоему тоже как то можно было... поищи в нете, мож есть готовые решения...ЗлОй ПрОграММер, смотри личку...


спасиб но эт не совсем то))) мне просто нужно знать кто нажал клавишу пользователь или программа )


хмм.. ну впринципе то что я дал можно повернуть под твою задачу... отлавливать нажатие с клавы.. вот таким способом..
отловили нажатие с клавы
if нажали не с клавы then делае чё надо...
потому что если нажатие было произведено но не с клавы, то его сделала прога..)))мож запутанно но вроде бы верно..)))


эт вот этот код ?
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
Var f: TForm;
begin
  if Panel1.Controls[0] = nil then exit;
  f := TForm(Panel1.Controls[0]);
  if Assigned(f.OnKeyPress) then
    f.OnKeyPress(Sender, Key);
end;
не могу понять как он работает


эм, ну я не про конкретно какой то код..))) а просто в общих чертах..)))а это походу какой то навороченный, и непонятно зачем там приделаны файлы...


ну эт то я знаю)) фокус в том как определить кем нажата клавиша ? программой или пользователемО_о


отловить нажатие клавиши Enter:
If GetASyncKyeState(0D) <>0 then ...
коды клавиш:
Symbolic
constant name 	Value
(hexadecimal) 	Keyboard (or mouse) equivalent
VK_LBUTTON 	01 	Left mouse button
VK_RBUTTON 	02 	Right mouse button
VK_CANCEL 	03 	Control-break processing
VK_MBUTTON 	04 	Middle mouse button (three-button mouse)
VK_BACK          08 	BACKSPACE key
VK_TAB 	        09 	TAB key
VK_CLEAR 	0C 	CLEAR key
VK_RETURN 	0D 	ENTER key
VK_SHIFT 	   10 	SHIFT key
VK_CONTROL 	11 	CTRL key
VK_MENU   	12 	ALT key
VK_PAUSE 	13 	PAUSE key
VK_CAPITAL 	14 	CAPS LOCK key
VK_ESCAPE 	1B 	ESC key
VK_SPACE 	20 	SPACEBAR
VK_PRIOR 	21 	PAGE UP key
VK_NEXT   	22 	PAGE DOWN key
VK_END     	23 	END key
VK_HOME   	24 	HOME key
VK_LEFT    	25 	LEFT ARROW key
VK_UP       	26 	UP ARROW key
VK_RIGHT 	27 	RIGHT ARROW key
VK_DOWN 	28 	DOWN ARROW key
VK_SELECT 	29 	SELECT key
VK_PRINT   	2A 	PRINT key
VK_EXECUTE 	2B 	EXECUTE key
VK_SNAPSHOT 	2C 	PRINT SCREEN key
VK_INSERT 	2D 	INS key
VK_DELETE 	2E 	DEL key
VK_HELP 	        2F 	HELP key
                30 	0 key
                31 	1 key
                32 	2 key
                33 	3 key
                34 	4 key
	        35 	5 key
               	36 	6 key
               	37 	7 key
               	38 	8 key
               	39 	9 key
               	41 	A key
               	42 	B key
               	43 	C key
               	44 	D key
               	45 	E key
	        46 	F key
	        47 	G key
               	48 	H key
	        49 	I key
	        4A 	J key
	        4B 	K key
	        4C 	L key
	        4D 	M key
	        4E 	N key
	        4F 	O key
	        50 	P key
	        51 	Q key
	        52 	R key
	        53 	S key
	        54 	T key
	        55 	U key
	        56 	V key
	        57 	W key
	        58 	X key
	        59 	Y key
	        5A 	Z key
VK_NUMPAD0 	60 	Numeric keypad 0 key
VK_NUMPAD1 	61 	Numeric keypad 1 key
VK_NUMPAD2 	62 	Numeric keypad 2 key
VK_NUMPAD3 	63 	Numeric keypad 3 key
VK_NUMPAD4 	64 	Numeric keypad 4 key
VK_NUMPAD5 	65 	Numeric keypad 5 key
VK_NUMPAD6 	66 	Numeric keypad 6 key
VK_NUMPAD7 	67 	Numeric keypad 7 key
VK_NUMPAD8 	68 	Numeric keypad 8 key
VK_NUMPAD9 	69 	Numeric keypad 9 key
VK_SEPARATOR 	6C 	Separator key
VK_SUBTRACT 	6D 	Subtract key
VK_DECIMAL 	6E 	Decimal key
VK_DIVIDE 	6F 	Divide key
VK_F1       	70 	F1 key
VK_F2         	71 	F2 key
VK_F3 	        72 	F3 key
VK_F4        	73 	F4 key
VK_F5        	74 	F5 key
VK_F6          	75 	F6 key
VK_F7       	76 	F7 key
VK_F8              	77 	F8 key
VK_F9         	78 	F9 key
VK_F10           	79 	F10 key
VK_F11            	7A 	F11 key
VK_F12           	7B 	F12 key
VK_F13           	7C 	F13 key
VK_F14            	7D 	F14 key
VK_F15           	7E 	F15 key
VK_F16           	7F 	F16 key
VK_F17        	80H 	F17 key
VK_F18         	81H 	F18 key
VK_F19            	82H 	F19 key
VK_F20           	83H 	F20 key
VK_F21           	84H 	F21 key
VK_F22          	85H 	F22 key
VK_F23           	86H 	F23 key
VK_F24         	87H 	F24 key
VK_NUMLOCK 	90 	NUM LOCK key
VK_SCROLL 	91 	SCROLL LOCK key
VK_LSHIFT 	A0 	Left SHIFT key
VK_RSHIFT 	A1 	Right SHIFT key
VK_LCONTROL 	A2 	Left CONTROL key
VK_RCONTROL 	A3 	Right CONTROL key
VK_LMENU 	A4 	Left MENU key
VK_RMENU 	A5 	Right MENU key
VK_PLAY         FA 	Play key
VK_ZOOM         FB 	Zoom key


ого спасибо, щас испробуюа нет не подходит пробую эмулировать нажатие Enter
keybd_event(Ord(#13), 0, 0, 0);
результат такой же что и при нажатии Enter на клавиатуре


результат такой же что и при нажатии Enter на клавиатуре
хмммм...тогда незнаю как еще можно((попробуй это как-то обойти))что ты хочешь сделать???например когда программа нажимает кнопку Enter то сделай например
b:=True;
а потом при проверке напиши:
If b=True then
begin
b:=False;
...
end
else If GetASyncKeyState(0D)<>0 then...


Я делаю так, дешево и сердито :
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
begin
 
end;


если я с эмулирую нажатие Enter товаша процедура сёравно будет возникать !


ЗлОй ПрОграММер, привет)) Давай опиши конкретно что ты хош сделать ЗлОй ПрОграММер, дак ты шо хош нажать программно на клавишу и типо чтобы это не смахивало на нажатие с клавы?


John_Pa9JIbHuK, требуется определить как нажата клавиша - было прерывание от клавиатуры или собитие было вызвано программно - например через keybd_event(). По крайней мере действовать через виртуальные коды - бесполезно. Виртуальные коды - это уже уровень системы (Windows) - генерируются сообщения WM_KEYUP и WM_KEYDOWN , которые посылаются приложению. В сообщениях имеется информация о кодах и состоянии клавиш. Но какой источник - аппаратный или программный - в этих сообщениях нет такой информации. Видимо чтобы удостовериться, что событие вызвано прерыванием от клавиатуры - это нужно получить доступ к буферу клавиатуры. Т. е. это связано с драйвером клавиатуры...


Mawrat спасибо за подсказку!