blackice856 Posted January 17, 2009 at 10:57 PM Report #238968 Posted January 17, 2009 at 10:57 PM Tou a fazer uma espécie de keyloger para um colega meter nos pcs da escola (malandro ^^). Como usar os hooks do windows e essas tretas dá muito trabalho resolvi fazer algo do género: If e.KeyCode = Keys.A Then "código aqui" End If I fazer isto um monte de vezes até ter todas as letras vai me dar trabalho. Mas lembrei-me duma coisa que já tinha ouvido falar mas que nunca percebi bem chamados arrays. Um array acho que define um intervalo, supostamente esse intervalo deverá ser de 1 - a 27 (letras do abcedário). Alguém me conseguia postar aqui um pequeno exemplo de como deverá ser o meu código? É que já tou farto de ler artigos sobre isto, mas acho que só vou lá com um exemplo.
jpaulino Posted January 17, 2009 at 11:03 PM Report #238971 Posted January 17, 2009 at 11:03 PM Dessa forma não vai funcionar, a não ser que a aplicação esteja visivel e com o focus. Tens que utilizar um nível mais baixo de programação, recorrendo a API's (hooks como chamaste)
blackice856 Posted January 17, 2009 at 11:04 PM Author Report #238972 Posted January 17, 2009 at 11:04 PM E se eu meter isto a correr como serviço? Não deve dar na mesma né...
jpaulino Posted January 17, 2009 at 11:06 PM Report #238973 Posted January 17, 2009 at 11:06 PM E se eu meter isto a correr como serviço? Não dá na mesma ... como o serviço a aplicação nunca tem focus e nunca detecta um tecla pressionada. Não é exactamente o que estás a pedir, mas dá para teres a ideia: VB.NET: Criando HotKeys (teclas de atalho)
blackice856 Posted January 18, 2009 at 12:20 AM Author Report #238993 Posted January 18, 2009 at 12:20 AM Obrigada pela ajuda, mas continuei sem perceber isso dos arrays. Se me pudessem explicar melhor. É que não tem lógica o que estou a fazer.
Solution jpaulino Posted January 18, 2009 at 06:03 PM Solution Report #239069 Posted January 18, 2009 at 06:03 PM Um array funciona desta forma Dim array(3) As String array(0) = "isto" array(1) = "é" array(2) = "um" array(3) = "teste" For Each p As String In array Debug.WriteLine(p) Next Ou seja, defines o array com 4 posições de memória (3 porque começa no zero) e depois defines para cada posição o que queres guarda (texto, numeros. etc). Finalmente tens um pequeno exemplo de como mostrar os dados. Com o VS.NET apareceram as generics collections . Têm diversas vantagens em relação aos arrays convencionais e podes ver mais informações aqui: VB.NET: Utilizando Colecções List(Of T) Finalmente, e para o que qeres, não precisas de colecções ou arrays. Podes fazer assim: Public Class Form1 Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress Debug.WriteLine(Chr(AscW(e.KeyChar))) End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.KeyPreview = True End Sub End Class Espero que isto ajude a esclarecer!
blackice856 Posted January 18, 2009 at 09:10 PM Author Report #239099 Posted January 18, 2009 at 09:10 PM OMG nem sei como não me lembrei disso... Já agora, deves ter tido uma razão para escreveres "Debug.WriteLine(Chr(AscW(e.KeyChar)))" ou não? É que "Debug.WriteLine(e.KeyChar)" chegou-me. PS: És o meu heroi ^^!
jpaulino Posted January 18, 2009 at 09:45 PM Report #239108 Posted January 18, 2009 at 09:45 PM Já agora, deves ter tido uma razão para escreveres "Debug.WriteLine(Chr(AscW(e.KeyChar)))" ou não? LOL, não ... enganei-me. 😞 Depois tirei mas não me lembrei de alterar no fórum. PS: És o meu heroi ^^! Ainda bem que pude ajudar 🙂
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now