VB.NET - GetAsyncKeyState – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

VB.NET - GetAsyncKeyState – .NET – Fórum – Programujte.comVB.NET - GetAsyncKeyState – .NET – Fórum – Programujte.com

 

Par4Tko
~ Anonymní uživatel
5 příspěvků
16. 11. 2011   #1
-
0
-

Zdravm,

Mám otázku ohledně příkazu GetAsyncKeyState chci aby mi snímal rozdíl mezi 1 a + nebo 2 a ě ale on stále zaznamenává pouze 1 nebo 2..

Zkoušel jsem to nějak přes keyPressed = GetAsyncKeyState(98) a mám vn í podmínku pokud je stlačený shift či nikoliv. ovšem stále na to nebere ohled. asi by bylo dobré zde dát kousek kódu ale je už celkem dlouhý... 

Díky pokud někdo ví jak snímat diakritiku

Nahlásit jako SPAM
IP: 85.135.23.–
liborb
~ Redaktor
+18
Guru
16. 11. 2011   #2
-
0
-

GetAsyncKeyState zjišťuje stav dané klávesy (v době volání této funkce), jestli je stlačená nebo ne. Pokud to tak chceš dělat, protože má stisknuté 2 klávesy (Shift + 1), tak musíš zjišťovat stav stisknutí klávesy 1 a následně zjišťovat stav stisknutí klávesy Shift (VK_SHIFT).

EDIT: A pokud chceš zjišťovat, co vlastně klávesnice "pošle" do počítače za znak (co přijde při WM_CHAR), tak na to jsou funkce typu ToAscii / ToUnicode, kde ze stavu klávesnice, kódu virtuální klávesy atd. dají znak, který by si napsal.

Nahlásit jako SPAM
IP: 78.80.52.–
Par4Tko
~ Anonymní uživatel
5 příspěvků
16. 11. 2011   #3
-
0
-

Ano mám nadefinovanou funkce getShift kterou mám nadefinovanou jako

Public Function getShift() As Boolean
        getShift = CBool(GetAsyncKeyState(System.Windows.Forms.Keys.ShiftKey))
    End Function

tedy jako boolean ano/ne

a poté mám tedy ten 

   If GetAsyncKeyState(97) = -32767 Then

            If getShift() = False Then
                klavesa = "1"
            Else
                klavesa = "+"
            End If
           
        End If

Takže by bylo lepší to nějak celé předělat ? 

Nahlásit jako SPAM
IP: 85.135.23.–
liborb
~ Redaktor
+18
Guru
16. 11. 2011   #4
-
0
-

Program vypadá na oko v pořádku resp. nevidím žádnou chybu - musel bych si to zkusit, ale to je jedno, protože tento princip mi nepřijde šťastný. Možná bude lepší, když řekneš k čemu to potřebuješ (proč takto) a proč nemůžeš využít klasické KeyPress/KeyDown ...

Nahlásit jako SPAM
IP: 78.80.52.–
Par4Tko
~ Anonymní uživatel
5 příspěvků
16. 11. 2011   #5
-
0
-

Je to použito kvuli tomu že to funguje i mimo daný form... a já to potřebuju aby to fungovalo například i ve wordu apod.

Anebo ne ?

Nahlásit jako SPAM
IP: 78.45.201.–
liborb
~ Redaktor
+18
Guru
17. 11. 2011   #6
-
0
-

Tak v takovém případě jsou klíčová slova pro google: keyboard hook.

Zasláno z mobilního telefonu.

Nahlásit jako SPAM
IP: 82.145.211.–
Par4Tko
~ Anonymní uživatel
5 příspěvků
17. 11. 2011   #7
-
0
-

No, ale na takové bázi fungují keyloggery takže mi to antivirus nahlásí.

Zrovna potřebuju jen tu diakritiku :-(

Nahlásit jako SPAM
IP: 78.45.201.–
liborb
~ Redaktor
+18
Guru
18. 11. 2011   #8
-
0
-

Tak jsem si to zkusil. Jednak klávesa 1 není 97, ale 49 (System.Windows.Forms.Keys.D1) a následně je dobré se podívat, co vrací funkce GetAsyncKeyState za hodnoty (mě vracela hodnoty 0, 1, 32768, - 32767, -32768 podle toho, jestli byla a v jakém pořadí zmáčknutá klávesa Shift a/nebo '1').

Nahlásit jako SPAM
IP: 78.80.52.–
Par4Tko
~ Anonymní uživatel
5 příspěvků
22. 11. 2011   #9
-
0
-

Aha, vyřešeno díky špatně jsem si zjistil hodnoty getasynckeystate :-/

Děkuji moc za pomoc s vyřešením.

Nahlásit jako SPAM
IP: 88.101.13.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 6 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý