Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Pascal: GetAsyncKeyState

Sivun loppuun

D4_B34M [05.09.2005 23:47:58]

#

Rupesin tossa väsäämään keyloggeria delphillä apia käyttäen
if GetAsyncKeyState(numero)=-32767 then...
Mut vasta lopussa tajusin et eihän noi nyt joka näppäimessä samat oo esim jos numero on 222 se printtaa ä mut entäs jos jollakin on enkuksi säädetty näppäimet... 222 on sillon '

eli onko mitään helppoa keinoa tehdä niin että se printtaa sen kirjaimen joka siitä kuuluu tulla näppäimistöstä riippuen?

squid [06.09.2005 07:55:09]

#

Varma en koskaan ole, mutta jotenkin täytys näppikset varmaan tunnistaa?

panttu [06.09.2005 07:55:43]

#

tuo ongelma on ilmeisesti UTF-8 ongelma, jota ei pitäisi olla 16bit unique merkistönkanssa. Merkistön vaihtaminen samaksi on toinen vaihtoehto, mutta vielä vaikeampi vain. Esim. Java käyttää oletuksena aina unique merkistöä, mutta muuta en sitten tiedäkkään.

Metabolix [06.09.2005 08:12:10]

#

Katsele MSDN:stä GetAsyncKeyState:n kanssa samaan kategoriaan kuuluvia funktioita, jos niistä jokin auttaisi.

D4_B34M [06.09.2005 20:35:17]

#

Hmm siis oon tehny tyylillä

if GetAsyncKeyState(222)=-32767 then text1.text := text1.text + 'ä'

mut jos jollakin on englannin kielinen näpäimistö tuo ä pitäisi olla '

FooBat [06.09.2005 20:52:46]

#

Pascal/Delphi taidot on mulla vähän ruosteessa, mutta veikkaan että ongelmasi ratkeaa kun lisäät textisi perään merkin koodilla etkä käyttäen tuota merkkiä.

if GetAsyncKeyState(222)=-32767 then text1.text := text1.text + 222

D4_B34M [06.09.2005 23:16:33]

#

hmm muuten hyvä mutta ä ei tule 222...

eli
if GetAsyncKeyState(222)=-32767 then text1.text := text1.text + #222
ei toimi

panttu [06.09.2005 23:34:53]

#

Hetkinen 222 ei ole koskaan tietääkseni ollut ä, vaan #132 -> ä. 132 on ä myös unique merkistössä, joka on kaikissa maissa ja kielissä samanlainen aina kiinaa ja japania myöten.
http://www.lookuptables.com/

Blaze [07.09.2005 07:11:20]

#

panttu kirjoitti:

Hetkinen 222 ei ole koskaan tietääkseni ollut ä

Kyllä se jossain merkistökoodauksessa *voi* ollakin.

panttu kirjoitti:

132 on ä myös unique merkistössä, joka on kaikissa maissa ja kielissä samanlainen aina kiinaa ja japania myöten.

Eikä ole. Unicodessa ä on 0xe4 (228).

ASCII on 7-bittinen merkistö, ts. siinä on 128 merkkiä (kuten lookuptables.comistakin huomaat, jos katsot vähän tarkemmin). Yleisesti on käytössä 8-bittisiä merkistöjä, joissa nuo 128 seuraavaa merkkiä on milloin mitäkin, tuo lookuptables.comin taulukko esittää ilmeisesti jotain MS-DOSin koodisivua, jolla on varsin vähän relevanssia nykyään.

Metabolix [07.09.2005 19:07:35]

#

Kyllä tuo D4_B34M:n tapa lisätä yksi merkki toimii. Ei tarvitse käyttää char-koodia.

Nähdäkseni jotkut eivät nyt kuitenkaan ymmärtäneet itse ongelman ydintä :) Jaksoinpa nyt etsiä mokoman funktioyhdistelmän (kyllä ne olisi itsekin voinut MSDN:stä hakea, sieltä GetAsyncKeyStaten osastolta):

Nappi := 222;
if (GetAsyncKeyState(Nappi) < 0) then
  Text1.Text := 'Nappi '
                + Char(MapVirtualKeyEx(Nappi, 2, GetKeyboardLayout(0)))
                + ' on pohjassa.';

Tuo toimii ainakin minulla.


Sivun alkuun

Vastaus

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

Tietoa sivustosta