Simular teclas

05/08/2008

44

Pessoal eu preciso mt simular teclas...eu estou usando a função da Api, KeyBd_Event, mas ela só simula caracteres de A a Z, eu preciso simular caracteres como o Ç, ponto e virgula e etc....


Por favor....tow precisando mt da ajuda de vcs...



vlw..


Responder

Posts

05/08/2008

Mahdak

Como descobrir o código de uma tecla pressionada?
Na maioria dos componentes existem eventos que ocorrem quando o teclado é acionado

Ex:

Num Form existe os eventos:

1º OnKeyDown => Quando a tecla é apertada.

2º OnKeyUp => Quando a tecla é solta

3º OnKeyPress => Quando a tecla e apertada.

Os três devolvem uma variável chamada Key;

Os dois primeiros Key é uma word, no terceiro Key é um char.

Para você saber o nº de um tecla é só colocar no evento

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift:TShiftState);
Begin
ShowMessage(´O nº da tecla: ´+Char(ORD(Key))+´ é => ´+IntToStr(key));
End;


Assim você sabe o valor de cada tecla e pode testar se ela foi acionada.

O legal não é testar este valor e sim trabalhar com a Virtual Key Code

Exemplo:

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift:
TShiftState);
Begin
IF Key=VK_Return Then ShowMessage(´Você apertou o enter´);
End;


Esse VK_Return é da Virtual Key Code, você terá que pesquisar no Help, Segue abaixo as outras teclas:

VK_LBUTTON Left mouse button
VK_RBUTTON Right mouse button
VK_CANCEL Control+Break
VK_MBUTTON Middle mouse button
VK_BACK Backspace key
VK_TAB Tab key
VK_CLEAR Clear key
VK_RETURN Enter key
VK_SHIFT Shift key
VK_CONTROL Ctrl key
VK_MENU Alt key
VK_PAUSE Pause key
VK_CAPITAL Caps Lock key
VK_KANA Used with IME
VK_HANGUL Used with IME
VK_JUNJA Used with IME
VK_FINAL Used with IME
VK_HANJA Used with IME
VK_KANJI Used with IME
VK_CONVERT Used with IME
VK_NONCONVERT Used with IME
VK_ACCEPT Used with IME
VK_MODECHANGE Used with IME
VK_ESCAPE Esc key
VK_SPACE Space bar
VK_PRIOR Page Up key
VK_NEXT Page Down key
VK_END End key
VK_HOME Home key
VK_LEFT Left Arrow key
VK_UP Up Arrow key
VK_RIGHT Right Arrow key
VK_DOWN Down Arrow key
VK_SELECT Select key
VK_PRINT Print key (keyboard-specific)
VK_EXECUTE Execute key
VK_SNAPSHOT Print Screen key
VK_INSERT Insert key
VK_DELETE Delete key
VK_HELP Help key
VK_LWIN Left Windows key (Microsoft keyboard)
VK_RWIN Right Windows key (Microsoft keyboard)
VK_APPS Applications key (Microsoft keyboard)
VK_NUMPAD0 0 key (numeric keypad)
VK_NUMPAD1 1 key (numeric keypad)
VK_NUMPAD2 2 key (numeric keypad)
VK_NUMPAD3 3 key (numeric keypad)
VK_NUMPAD4 4 key (numeric keypad)
VK_NUMPAD5 5 key (numeric keypad)
VK_NUMPAD6 6 key (numeric keypad)
VK_NUMPAD7 7 key (numeric keypad)
VK_NUMPAD8 8 key (numeric keypad)
VK_NUMPAD9 9 key (numeric keypad)
VK_MULTIPLY Multiply key (numeric keypad)
VK_ADD Add key (numeric keypad)
VK_SEPARATOR Separator key (numeric keypad)
VK_SUBTRACT Subtract key (numeric keypad)
VK_DECIMAL Decimal key (numeric keypad)
VK_DIVIDE Divide key (numeric keypad)
VK_F1 F1 key
VK_F2 F2 key
VK_F3 F3 key
VK_F4 F4 key
VK_F5 F5 key
VK_F6 F6 key
VK_F7 F7 key
VK_F8 F8 key
VK_F9 F9 key
VK_F10 F10 key
VK_F11 F11 key
VK_F12 F12 key
VK_F13 F13 key
VK_F14 F14 key
VK_F15 F15 key
VK_F16 F16 key
VK_F17 F17 key
VK_F18 F18 key
VK_F19 F19 key
VK_F20 F20 key
VK_F21 F21 key
VK_F22 F22 key
VK_F23 F23 key
VK_F24 F24 key
VK_NUMLOCK Num Lock key
VK_SCROLL Scroll Lock key
VK_LSHIFT Left Shift key (only used with GetAsyncKeyState and GetKeyState)
VK_RSHIFT Right Shift key (only used with GetAsyncKeyState and GetKeyState)
VK_LCONTROL Left Ctrl key (only used with GetAsyncKeyState and GetKeyState)
VK_RCONTROL Right Ctrl key (only used with GetAsyncKeyState and GetKeyState)
VK_LMENU Left Alt key (only used with GetAsyncKeyState and GetKeyState)
VK_RMENU Right Alt key (only used with GetAsyncKeyState and GetKeyState)
VK_PROCESSKEY Process key
VK_ATTN Attn key
VK_CRSEL CrSel key
VK_EXSEL ExSel key
VK_EREOF Erase EOF key
VK_PLAY Play key
VK_ZOOM Zoom key
VK_NONAME Reserved for future use
VK_PA1 PA1 key
VK_OEM_CLEAR Clear key


Responder

05/08/2008

Mahdak

Descobrir o código ASCII de uma tecla
{ - Coloque um Label no form (Label1);

- Mude a propriedade KeyPreview do form para true;

- Altere o evento OnKeyDown do form como abaixo: }

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
Label1.Caption :=
Format(´O código da tecla pressionada é: ¬d´, [Key]);
end;


Responder

05/08/2008

Mahdak

no dicas e truques delphi tem mais uma porrada de coisas...


Responder

05/08/2008

Wdrocha

Desculpa, acho q me expressei mal...


mas o q eu preciso é....


simular o pressionamento de uma tecla....e eu faço isso usando a função da API KeyBd_Event, mas esta função não está simulando corretamente teclas como o Cedilha, por exemplo.

Quando eu simulo o envio desta tecla para o Word, por exemplo, ao invés de mostrar o cedilha ele simula um Tab....

O q eu preciso é d uma função q simule qualquer tecla q eu queira....

independente de ser cedilha, acento e etc...



Vc tem alguma idéia mahdak???



Vlw


Responder

05/08/2008

Wdrocha

Eu andei lendo sobre o mapa de caracteres do Windows....


eu sei q tenho q simular o Alt + Código da tecla q quero...

Por exemplo,segundo o mapa de caracteres do Windows, Alt + 128 = ç


é isso q não tow conseguindo fazer...


Alguma idéia???


Responder

05/08/2008

Mahdak

deve ser algo assim:
uses: Windows

{ Mantém pressionada ALT }
keybd_event(VK_MENU, 0, KEYEVENTF_EXTENDEDKEY or 0, 0);
 
{ Pressiona 128 }
keybd_event(128,0,0,0);
 
{ Libera (solta) ALT }
keybd_event(VK_MENU, $45, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0);



Responder

05/08/2008

Wdrocha

Tbm não, eu já tentei desse jeito...


tow precisando mt disso....


tem mais alguma idéia???


Já procurei tudo quanto é site e não acho nda...


Responder

12/03/2015

Robson Cardoso

Tbm não, eu já tentei desse jeito...


tow precisando mt disso....


tem mais alguma idéia???


Já procurei tudo quanto é site e não acho nda...


Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira