Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Sperhak
Člen
Avatar
Sperhak:29.1.2018 16:13

Čaute som tu nový tak prepáčte ak som dal to vlákno zle.Potreboval by som program čo bude čakať na pozadí na stlačenie klávesy a po jej stlačení pošle príkaz na seriový port.Skúšam to skladať postupne. Zatiaľ som si na internete našiel program čo by mal čakať na stlačenie klávesy a po jej stlačení ju vypísať na konzolu .No hádže my do červeného to displayInfo

import java.awt.even­t.KeyEvent;
import java.awt.even­t.KeyListener;

public class KeyLogger {

public static void main(String[] args) {

class console implements KeyListener {

public void keyTyped(KeyEvent e) {
displayInfo(e, "KEY TYPED: ");
}

public void keyPressed(KeyEvent e) {
displayInfo(e, "KEY PRESSED: ");
}

public void keyReleased(Ke­yEvent e) {
display(e, "KEY RELEASED: ");
}

private void display(KeyEvent e, String keyStatus) {

int id = e.getID();
String keyString;
if (id == KeyEvent.KEY_TYPED) {
char c = e.getKeyChar();
keyString = "key character = '" + c + "'";
} else {
int keyCode = e.getKeyCode();
keyString = "key code = " + keyCode + " (" + KeyEvent.getKe­yText(keyCode) + ")";
}end of if
System.out.prin­tln(keyString);
}
end of display

}

}
}

Editováno 29.1.2018 16:14
 
Odpovědět
29.1.2018 16:13
Avatar
Martin Petrovaj
Tvůrce
Avatar
Odpovídá na Sperhak
Martin Petrovaj:29.1.2018 16:24

Buď premenuj metódu display na displayInfo alebo naopak, prepíš v keyTyped riadok

displayInfo(e, "KEY TYPED: ");

na

display(e, "KEY TYPED: ");
Nahoru Odpovědět
29.1.2018 16:24
if (this.motto == "") { throw new NotImplementedException(); }
Avatar
Sperhak
Člen
Avatar
Sperhak:29.1.2018 18:00

No premenoval som a teraz sa program spustí ale nerobí nič spustí sa a ukončí.

 
Nahoru Odpovědět
29.1.2018 18:00
Avatar
Martin Petrovaj
Tvůrce
Avatar
Odpovídá na Sperhak
Martin Petrovaj:29.1.2018 19:14

Tak pokiaľ je to, čo si napísal hore celý tvoj kód, tak to nie je nič zvláštne - v tom programe je len trieda, ktorá sa má použiť na registráciu vstupu. Chybu, na ktorú si v pôvodnom príspevku hľadal riešenie si už odstránil. Aby tvoj program niečo robil, musíš tam samozrejme ešte sám napísať, čo chceš, aby ten program robil. Pokiaľ v Jave programovať nevieš, tak určite začni najprv tam, než to začneš miešať s čímkoľvek ďalším, napr. priamo na tomto webe:
https://www.itnetwork.cz/java/zaklady
https://www.itnetwork.cz/java/oop

Ak by si potreboval vedieť, ako ten keylogger použiť, skús sa inšpirovať tu: https://stackoverflow.com/…-keylistener

Nahoru Odpovědět
29.1.2018 19:14
if (this.motto == "") { throw new NotImplementedException(); }
Avatar
Sperhak
Člen
Avatar
Sperhak:29.1.2018 19:44

Dakujem .Programovať sa pomaly učím som asi na lekcii 5 ale toto by som potreboval súrne spraviť.Už som našiel funkčný keylogger teraz ho ešte musím nejako spojiť s druhým programom čo posiela na com port.Idem sa s tým hrať a potom napíšem.

 
Nahoru Odpovědět
29.1.2018 19:44
Avatar
Sperhak
Člen
Avatar
Sperhak:29.1.2018 22:52

Tak som spojil tie dva programy dokopy len neviem ako zadefinovať do toho aby vyčítalo z konzoly a poslalo na serial.
Skúsil som niečo takéto ale nejde to
Scanner sc = new Scanner(System.in, "Windows-1250");
float a = Float.parseFlo­at(sc.nextLine());
float b = ("Key 0X4F pressed."));

a dolesom if upravil takto
if (e.getComponent() == button1 || a == b)

Editováno 29.1.2018 22:54
 
Nahoru Odpovědět
29.1.2018 22:52
Avatar
Sperhak
Člen
Avatar
Sperhak:30.1.2018 10:26

Tu je" program ":https://www.ulozto.sk/…Hl/final-zip

 
Nahoru Odpovědět
30.1.2018 10:26
Avatar
Martin Petrovaj
Tvůrce
Avatar
Odpovídá na Sperhak
Martin Petrovaj:30.1.2018 15:41

Tak najprv taká malá rada - na zverejnenie kódu nabudúce použi to šikovné tlačidlo v toolbare nad tvojim komentárom, ktoré vyzerá ako HTML tag ( "</>" ) ;-) Jednak sa to číta oveľa lepšie, netreba nič sťahovať a pokiaľ je niekto povedzme na dovolenke len so starým súkromným notebookom bez akéhokoľvek IDE pre Javu, tak je to pre ostatných aj rýchlejšie. Tiež ak je nejaký problém, pomôže napísať ho rovno.

Ďalšia vec, k tomu kódu z predchádzajúceho komentára, ktorý ti nejde - neviem čo si ním chcel robiť, ale

float b = ("Key …"));

ti určite neprejde minimálne z dvoch dôvodov - 1) nemôžeš uložiť znakový reťazec (string) do premennej typu float, 2) máš na tom riadku jednu pravú zátvorku navyše (tiež v tomto prípade nechápem zmysel akýchkoľvek zátvoriek okolo stringu).

Sústredil by som sa ale na tento error, ktorý som našiel v tvojom Final.java:

java.lang.UnsatisfiedLinkError: D:\java16\jre\bin\rxtxSerial.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform thrown while loading gnu.io.RXTXCommDriver

Evidentne sa snažíš v programe používať 32-bitovú knižnicu, aj keď používaš 64-bitový JVM (Java Virtual Machine). Pravdepodobne si teda buď musíš zohnať 64-bitovú verziu tej knižnice, alebo 32-bitový JVM.
Viac informácií k tomu:
https://stackoverflow.com/…-bit-machine
https://airbrake.io/…iedlinkerror

Nahoru Odpovědět
30.1.2018 15:41
if (this.motto == "") { throw new NotImplementedException(); }
Avatar
Sperhak
Člen
Avatar
Odpovídá na Martin Petrovaj
Sperhak:30.1.2018 16:38

Dakujem za rady aj z dovolenky.Myslel som že bude lepšie ak sem dám celý projekt a nie len časť.Ja problém z knižnicou nemám pridával som si ju do javy.No skúsim to napísať najlepšie ako viem.Časť toho programu mi posiela do konzoly čo bolo stlačené a kde sa pohybuje myš.Chcel by som časť z toho výpisu zachytiť konkrétne túto Key 0X4F pressed. Znamená to že bol stlačený Num1. No a ked by sa to objavilo v tej konzole porovnalo by sa to s tou premennou float b = ("Key 0X4F pressed."); a ak by sa to zhodovalo tak by to cez ten if if (e.getComponent() == button1 || a == b) odoslalo niečo na serial port. No ale hovoríťe že float nemôžem použiť tak ak by to malo vyzerať.

 
Nahoru Odpovědět
30.1.2018 16:38
Avatar
Martin Petrovaj
Tvůrce
Avatar
Odpovídá na Sperhak
Martin Petrovaj:30.1.2018 16:55

0x4F je označenie čísla 79 v hexadecimálnej (šestnástkovej) sústave. Použi teda

float b = 79;

Toľko ti viem poradiť k tomu floatu. To, či ti zvyšok programu funguje tak ako by si chcel, ti bohužiaľ teraz sám povedať neviem :-(

Nahoru Odpovědět
30.1.2018 16:55
if (this.motto == "") { throw new NotImplementedException(); }
Avatar
Sperhak
Člen
Avatar
Sperhak:30.1.2018 21:10

No dal som tam 79 a pomohlo to teraz to skompiluje,ale stále to nefunguje ako má.Teraz sa program spustí a čaká kým niečo napíšem do konzoli,je jedno čo a potvrdím to.Pošle môj príkaz na serial port avšak až potom sa spustí keystring a ked už stláčam čo chcem nereaguje.

 
Nahoru Odpovědět
30.1.2018 21:10
Avatar
Robert Michalovič:31.1.2018 6:27

Za prvé jsi v špatné sekci. Tady javě moc nerozumí.

JAVA NEPODPORUJE KONZOLOVÝ LISTENER NA STISKNUTÍ KLAVES, vždy musíš potvrdit ENTEREM

Za druhé, tvé použití je zcestné, používá se pouze u GUI aplikací. Tehdy skutečně např. u nějakého EditBoxu lze naprogramovat události např. při stisknuti, při držení , při uvolnění klávesy. Ale JE TO PRO GUI.

Musíš na to jít jinak.

 
Nahoru Odpovědět
31.1.2018 6:27
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 12 zpráv z 12.