Página 1 de 1
Simular pressionamento de uma tecla
Enviado: 20 Abr 2017 21:57
por Nascimento
amigos estou com um problema preciso simular um pressionamento de tecla com o harbour similar a este codigo aqui
https://batchloaf.wordpress.com/2012/04 ... sendinput/
tem algo no harbour igual?
Simular pressionamento de uma tecla
Enviado: 20 Abr 2017 23:50
por Pablo César
Seria para modo console ou GUI ?
Creio que você refere-se a modo GUI.
Se for em HMG, dê uma olhada na função pronta em C:\hmg.3.4.4\SOURCE\c_controlmisc.c e procure pela função como exemplo INSERTTAB.
Talvez tenha pronta a tecla que você precisa (você não disse qual).
Simular pressionamento de uma tecla
Enviado: 21 Abr 2017 00:09
por Paredes01
Hola.
En modo consola
Código: Selecionar todos
For P = 1 to Len(aNotas)
VAR&XX = aNotas[P,1]
Keyboard { VAR&XX, 13 } // <--- Equivale a variable mas enter en el get
@ 11, 12 SAY "FOLIO &XX"
@ 11, 23 Get VAR&XX PICT "@!S8" VALID Empty(VAR&XX)
READ
IF LASTKEY() = 27
EXIT
ENDIF
Next
Segun el manual
KEYBOARD
Writes a string or numeric key codes into the keyboard buffer.
Syntax
KEYBOARD <cString>
KEYBOARD <nInkeyCode>
KEYBOARD <aKeyCodes>
Arguments
<cString>
This is the character string that is written into the keyboard buffer.
<nInkeyCode>
Alternatively, a numeric key code can be specified. Normally, the #define constants listed in the Inkey.ch files are used for <nInkeyCode>.
<aKeyCodes>
A mixture of character strings or numeric key codes can be specified as a one dimensional array.
Description
The KEYBOARD command first clears the keyboard buffer and then fills it with the key codes specified as character strin, numeric values or within an array. Thus, all pending key strokes are discarded before new characters are written into the keyboard buffer. They remain in the buffer until being fetched from it during a wait state in which the keyboard buffer is polled for the next key stroke.
Wait states are employed by functions and commands that wait for user input, such as Achoice(), READ or MemoEdit().
Saludos
Simular pressionamento de uma tecla
Enviado: 21 Abr 2017 10:21
por Nascimento
Paredes01 Hola.
En modo consolai
Amigo Paredes01 ja tentei dessa forma e nao funcionou
por Pablo César
Seria para modo console ou GUI ?
Amigo Pablo César estou procurando em console mesmo pois quero rodar invisivel
qual o objetivo disso?
pra facilitar , vamos penssar no mame arcade a cada x tempo preciso apertar uma tecla para entrar credito pode ser qualquer letra porque é configuravel
então a ideia é ficar rodando invisivel com a gtwvt e a cada x tempo dar um input de teclado com a tecla correspondente
se observar é o que acontece aqui o cara roda o programa e é inserido um 'a' no bloco de notas
https://batchloaf.wordpress.com/2012/04 ... sendinput/
Simular pressionamento de uma tecla
Enviado: 21 Abr 2017 21:09
por JoséQuintas
Sei lá, tô achando fácil demais pra ter dúvida..... rs
Na API do Windows tem algo parecido com o keyboard do Harbour.
É pegar o hWnd da janela do programa, e chamar essa função.
Simular pressionamento de uma tecla
Enviado: 21 Abr 2017 22:20
por Nascimento
JoséQuintas
Sei lá, tô achando fácil demais pra ter dúvida..... rs
amigo não entendi bem , mais simplismente nao encontrei nada sobre feito em harbour
Simular pressionamento de uma tecla
Enviado: 22 Abr 2017 07:40
por JoséQuintas
Se tem a função no Windows, é só usar no Harbour.
A hbwin inteira é exemplo de como usar funções do Windows.
Pode procurar em outra linguagem e converter para o Harbour.
Pode usar linguagem C diretamente no Harbour.
Não tem isso pronto nem em linguagem C, é necessário criar a rotina.
Se não me engano, vai precisar de:
FindWindow(), existe no Windows, pra pesquisar o handle da janela
SendKeys(), existe no Windows, pra enviar teclas pra essa janela
CallDll() ou CallDll32(), existe no Harbour, pra usar essas funcões pelo Harbour.
Também não existem funções prontas pra baixar do estoque, emitir nota fiscal, etc.
Cada um cria sua própria rotina pra isso.
Simular pressionamento de uma tecla
Enviado: 23 Abr 2017 16:33
por Nascimento
apos o amigo quintas falar , eu analizei o codigo original e porteio de .c para o harbour ficando funcional ao meu proposito obrigado a todos
que tentaram me ajudar , objetivo concluido...

)
codigo esta abaixo
Código: Selecionar todos
//
// keystroke.c - Pauses, then simulates a key press
// and release of the "A" key.
//
// Written by Ted Burke - last updated 17-4-2012
//
// To compile with MinGW:
//
// gcc -o keystroke.exe keystroke.c
//
// To run the program:
//
// keystroke.exe
//
// ...then switch to e.g. a Notepad window and wait
// 5 seconds for the A key to be magically pressed.
//
// Because the SendInput function is only supported in
// Windows 2000 and later, WINVER needs to be set as
// follows so that SendInput gets defined when windows.h
// is included below.
// compilar normal hbmk2 tecla.prg
// 2 cliques sobre o .exe gerado ai abra o bloco de notas vai ver que vai ficar inserindo o "a" a cada 1 segundo
procedure main()
while .t.
_keyb()
end
#pragma BEGINDUMP
#define WINVER 0x0500
#include <windows.h>
#include <hbapi.h>
HB_FUNC(_KEYB)
{
// This structure will be used to create the keyboard
// input event.
INPUT ip;
// Pause for 1 seconds.
Sleep(1000);
// Set up a generic keyboard event.
ip.type = INPUT_KEYBOARD;
ip.ki.wScan = 0; // hardware scan code for key
ip.ki.time = 0;
ip.ki.dwExtraInfo = 0;
// Press the "A" key
ip.ki.wVk = 0x41; // virtual-key code for the "a" key
ip.ki.dwFlags = 0; // 0 for key press
SendInput(1, &ip, sizeof(INPUT));
// Release the "A" key
ip.ki.dwFlags = KEYEVENTF_KEYUP; // KEYEVENTF_KEYUP for key release
SendInput(1, &ip, sizeof(INPUT));
// Exit normally
hb_retnl(1);
}
#pragma ENDDUMP