Simular teclas
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..
Por favor....tow precisando mt da ajuda de vcs...
vlw..
Wdrocha
Curtidas 0
Respostas
Mahdak
05/08/2008
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
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
GOSTEI 0
Mahdak
05/08/2008
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;
{ - 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;
GOSTEI 0
Mahdak
05/08/2008
no dicas e truques delphi tem mais uma porrada de coisas...
GOSTEI 0
Wdrocha
05/08/2008
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
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
GOSTEI 0
Wdrocha
05/08/2008
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???
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???
GOSTEI 0
Mahdak
05/08/2008
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);
GOSTEI 0
Wdrocha
05/08/2008
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...
tow precisando mt disso....
tem mais alguma idéia???
Já procurei tudo quanto é site e não acho nda...
GOSTEI 0
Robson Cardoso
05/08/2008
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...
tow precisando mt disso....
tem mais alguma idéia???
Já procurei tudo quanto é site e não acho nda...
GOSTEI 0