Casa
Top.Mail.Ru Yandeks.Metrika
Fórum: "Principal";
Arquivo atual: 2002.01.08;
Download: [xml.tar.bz2];

Para baixo

Como enviar uma mensagem para o sistema que uma tecla é pressionada? Encontre agências semelhantes


Delphimun   (2001-12-20 12:10) [0]

Como enviar uma mensagem para o sistema que uma tecla é pressionada? Por exemplo, você coloca em um temporizador esta mensagem para o sistema que a tecla é pressionada, e o usuário está atualmente trabalhando no bloco de notas e para que essas letras sejam escritas no bloco de notas que você enviou para o sistema (que a tecla foi pressionada)



gek   (2001-12-20 12:32) [1]

Você pega um bloco de notas e envia-o wm_keydown



Delphimun   (2001-12-20 13:10) [2]

Eu já descobri (eu precisava não apenas enviar o notebook, mas no sistema geral)
Aqui está um exemplo de faq que está interessado:

-------------------------------------------------- -----------------------
O procedimento abaixo permite enviar cliques para qualquer
um controle (controle de janela) capaz de aceitar entrada de
teclados. Você pode usar essa técnica para ativar as chaves.
NumLock, CapsLock e ScrollLock no Windows NT. A mesma técnica funciona
e no Windows 95 para CapsLock e ScrollLock, mas não funciona para a chave
NumLock
Observe que há quatro procedimentos: SimulateKeyDown () -
emular um pressionamento de tecla (sem soltar) SimulateKeyUp () -
emular a chave de liberação SimulateKeystroke () - emular um hit
por tecla (pressionando e soltando) e SendKeys (), permitindo flexibilidade
controle enviou mensagens de teclado.
SimulateKeyDown (), SimulateKeyUp () e SimulateKeystroke () obtêm códigos
chaves virtuais (como VK_F1). Procedimento
SimulateKeystroke () recebe um parâmetro adicional, útil quando
emulação de pressionar PrintScreen. Quando este parâmetro é zero, todo
a tela será copiada para a área de transferência. Se extra
parâmetro igual a 1 apenas a janela ativa será copiada.
Quatro métodos de clique de botão demonstram o uso:
ButtonClick1 - ativa o capslock ButtonClick2 - intercepta o todo
tela para área de transferência (área de transferência). ButtonClick3 - intercepta
janela ativa para a área de transferência (área de transferência). ButtonClick4 - define o foco em Editar e
envia uma string para ele.
Exemplo:

procedimento SimulateKeyDown (Key: byte);
começar
keybd_event (chave, 0, 0, 0);
end;

procedure SimulateKeyUp (chave: byte);
começar
keybd_event (chave, 0, KEYEVENTF_KEYUP, 0);
end;

procedure SimulateKeystroke (Chave: byte; extra: DWORD);
começar
keybd_event (chave, extra, 0,0);
keybd_event (chave, extra, KEYEVENTF_KEYUP, 0);
end;

procedimento SendKeys (s: string);
var i: integer;
sinalizador: bool;
w: palavra;
começar
{Obter o estado da tecla caps lock}
flag: = não GetKeyState (VK_CAPITAL) e 1 = 0;
{Se a tecla Caps Lock estiver ligada, desligue-a}
se bandeira então
SimulateKeystroke (VK_CAPITAL, 0);
para i: = 1 para Length (s)
começar
w: = VkKeyScan (s [i]);
{Se não houver um erro na tradução principal}
if ((HiByte (w) <> $ FF) e (LoByte (w) <> $ FF)) então
começar
{Se a chave exigir a tecla shift - mantenha pressionada a tecla}
se HiByte (w) e 1 = 1, então
SimulateKeyDown (VK_SHIFT);
{Envie o VK_KEY}
SimulateKeystroke (LoByte (w), 0);
{Se a chave exigir o deslocar a tecla para baixo - solte-o}
se HiByte (w) e 1 = 1, então
SimulateKeyUp (VK_SHIFT);
end;
end;
{Se a tecla Caps Lock estava ligada no início, ligue-a novamente}
se bandeira então
SimulateKeystroke (VK_CAPITAL, 0);
end;

procedimento TForm1.Button1Click (Sender: TObject);
começar
{Alternar o bloqueio de capa}
SimulateKeystroke (VK_CAPITAL, 0);
end;

procedimento TForm1.Button2Click (Sender: TObject);
começar
{Capture a tela inteira para a área de transferência}
{por simular pressionando a tecla PrintScreen}
SimulateKeystroke (VK_SNAPSHOT, 0);
end;

procedimento TForm1.Button3Click (Sender: TObject);
começar
{Capture a janela ativa para a área de transferência}
{por simular pressionando a tecla PrintScreen}
SimulateKeystroke (VK_SNAPSHOT, 1);
end;

procedimento TForm1.Button4Click (Sender: TObject);
começar
{Defina o foco para uma janela (controle de edição) e envie uma string}
Application.ProcessMessages;
Edit1.SetFocus;
SendKeys ("Delphi Is RAD!");
end;
-------------------------------------------------- -------------------------

Agora preciso rastrear o clique do usuário no botão clav (por exemplo, alfa) e redefinir este pressionamento \ para substituir o meu.




Страницы: 1 filial inteira

Fórum: "Principal";
Arquivo atual: 2002.01.08;
Download: [xml.tar.bz2];

em cima









Memória: 0.57 MB
Hora: 0.041 c
1-22239
Gayrus
2001-12-17 03:52
2002.01.08
TStatusBar


14-22403
Burmistroff
2001-11-11 20:13
2002.01.08
Super Delphi Reference -2. Sua opinião, por favor.


3-21900
vão
2001-12-07 11:13
2002.01.08
TString e String


1-22025
- = DeD = -
2001-12-18 11:20
2002.01.08
Instalação ActiveX


1-22262
Katia
2001-12-17 15:25
2002.01.08
ajudar





afrikaans albanês Arabic armênio azerbaijano basco belarusian Bulgarian catalão Chinês simplificado) Chinês tradicional) croata checo dinamarquês Dutch Inglês estoniano filipino Finnish French
Galego georgiano German grego crioulo haitiano hebraico hindi húngaro islandês Indonesian irlandês Italian Japanese Korean letão lituano macedónio Malay maltês Norwegian
persa polonês Portuguese romeno Russa sérvio Slovak esloveno espanhol swahili sueco tailandês turco ucraniano urdu vietnamita galês ídiche bengali bósnio
cebuano esperanto gujarati hausa hmong igbo javanês kannada khmer lao latino maori marata mongol Nepali punjabi somali tâmil telugu yoruba
zulu
Английский francês Alemão Italiano Португальский russo Espanhol