Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Zwracanie kodu ASCII klawisza


Rekomendowane odpowiedzi

Opublikowano

Witam potrzebny jest mi skrypt w AutoIt który zwróci mi kod ascii wciśniętego klawisza. Taki niby keylogger ale w rzeczywistości ma to być coś innego. A dokładnie chcę zrobić program konsolowy (do CMD) który czeka na naciśnięcie klawisza i zwraca jego kod w %errorlevel%. Z innego forum koleś podał coś takiego:

#include <Misc.au3>

$dll  = DllOpen("user32.dll")
$file = FileOpen("key.ini",2)

While 1
	Sleep ( 250 )
	If _IsPressed("1B", $dll) Then
		FileWrite($file,"press=ESC")
		ExitLoop
	EndIf
WEnd
DllClose($dll)

Ale niestety nie ogarniam tego i nie wiem jak to działa ale jakoś działało bo podał też plik .exe który właśnie działał tak jak chciałem lecz ja potrzebuję troche go zmodyfikować. Kod który potrzebuje ma mieć max do 30 linii. Za wszelką pomoc dziękuję.

Cipka - Najlepszy silnik na świecie. Działa z tłokiem każdej średnicy, wbudowana funkcja samosmarowania, odpalasz jednym palcem i co miesiąc sam się wymienia olej. Szkoda tylko że ma taki pojebany komputer pokładowy.

Opublikowano

Napiszesz dokładnie cały kodzik? No to chociaż żeby był krótszy od pisania _IsPressed do każdego klawisza...

Cipka - Najlepszy silnik na świecie. Działa z tłokiem każdej średnicy, wbudowana funkcja samosmarowania, odpalasz jednym palcem i co miesiąc sam się wymienia olej. Szkoda tylko że ma taki pojebany komputer pokładowy.

Opublikowano

To chyba jestem zbyt tępy :D bo nie moge znaleść

Cipka - Najlepszy silnik na świecie. Działa z tłokiem każdej średnicy, wbudowana funkcja samosmarowania, odpalasz jednym palcem i co miesiąc sam się wymienia olej. Szkoda tylko że ma taki pojebany komputer pokładowy.

Opublikowano

Nie kumam nic z tego. Poza tym nie znam dobrze angielskiego...

Cipka - Najlepszy silnik na świecie. Działa z tłokiem każdej średnicy, wbudowana funkcja samosmarowania, odpalasz jednym palcem i co miesiąc sam się wymienia olej. Szkoda tylko że ma taki pojebany komputer pokładowy.

Opublikowano

Ahh.. ale wy mili nie moglibyście pomóc początkującemu koledze i podać mu jak to zrobić w 100% z kodem?

Cipka - Najlepszy silnik na świecie. Działa z tłokiem każdej średnicy, wbudowana funkcja samosmarowania, odpalasz jednym palcem i co miesiąc sam się wymienia olej. Szkoda tylko że ma taki pojebany komputer pokładowy.

Opublikowano

Ahahaha podałeś "99%" kodu z którego nic nie rozumiem...

 

 

To forum jest od pomagania innym a nie zbywania ich

Cipka - Najlepszy silnik na świecie. Działa z tłokiem każdej średnicy, wbudowana funkcja samosmarowania, odpalasz jednym palcem i co miesiąc sam się wymienia olej. Szkoda tylko że ma taki pojebany komputer pokładowy.

Opublikowano

Ahahaha podałeś "99%" kodu z którego nic nie rozumiem...

 

 

To forum jest od pomagania innym a nie zbywania ich

Właśnie od pomagania, a nie robienia czegoś za innych. Mylisz pojęcia.

Opublikowano

OK to skoro chcesz pomóc daj mi hajs na kurs angielskiego ;)

Cipka - Najlepszy silnik na świecie. Działa z tłokiem każdej średnicy, wbudowana funkcja samosmarowania, odpalasz jednym palcem i co miesiąc sam się wymienia olej. Szkoda tylko że ma taki pojebany komputer pokładowy.

Opublikowano

Niestety nie chodze do szkoły :)

 

 

Prosze dajcie jakiś kod przykładowy z tym i z wyjaśnieniem PO POLSKU

Cipka - Najlepszy silnik na świecie. Działa z tłokiem każdej średnicy, wbudowana funkcja samosmarowania, odpalasz jednym palcem i co miesiąc sam się wymienia olej. Szkoda tylko że ma taki pojebany komputer pokładowy.

Opublikowano

Ahahaha podałeś "99%" kodu z którego nic nie rozumiem...

 

 

To forum jest od pomagania innym a nie zbywania ich

No dobrze, wytłumaczę ci co robi ten kod, OK?

 

#include <WinAPI.au3>
_WinAPI_SetWindowsHookEx ( $idHook, $lpfn, $hmod [, $dwThreadId = 0] )

Funkcja tworzy hooka który przekierowuje nam eventy wątku do funkcji jego callbacka.

$idHook - ID hooka który chcemy stworzyć
$lpfn - Wskaźnik na procedurę (callback) hooka
$hmod - Uchwyt do DLL-ki z procedurą hooka
$dwThreadId - ID wątku do którego przypisujemy hooka, jeśli 0 to hook jest globalny
Kod:

#include <WinAPI.au3>
#include <WindowsConstants.au3>
#include <StructureConstants.au3>
#include <MsgBoxConstants.au3>

;deklaracje globalnych zmiennych
Global $hHook, $hStub_KeyProc, $buffer = ""

Example() ;start funkcji Example

Func Example()
    OnAutoItExitRegister("Cleanup") ;uruchomienie funkcji Cleanup przy wyjściu z programu

    Local $hmod

    $hStub_KeyProc = DllCallbackRegister("_KeyProc", "long", "int;wparam;lparam") ;utworzenie callbacka
    $hmod = _WinAPI_GetModuleHandle(0)
    $hHook = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($hStub_KeyProc), $hmod) ;stworzenie hooka

    MsgBox($MB_SYSTEMMODAL, "", "Click OK, then in notepad type..." & _
            @CRLF & @CRLF & "Jon" & @CRLF & "AutoIt" & @CRLF & @CRLF & "Press Esc to exit script")

    Run("notepad.exe")
    WinWait("[CLASS:Notepad]")
    WinActivate("[CLASS:Notepad]")

    While 1
        Sleep(10)
    WEnd
EndFunc   ;==>Example

Func EvaluateKey($keycode) ;funkcja filtrująca znaki PO KODZIE ASCII i zapisująca je do bufora
    If (($keycode > 64) And ($keycode < 91)) _ ; a - z
            Or (($keycode > 96) And ($keycode < 123)) _ ; A - Z
            Or (($keycode > 47) And ($keycode < 58)) Then ; 0 - 9
        $buffer &= Chr($keycode)
        Switch $buffer
            Case "Jon"
                ToolTip("What can you say?")
            Case "AutoIt"
                ToolTip("AutoIt Rocks")
        EndSwitch
    ElseIf ($keycode > 159) And ($keycode < 164) Then
        Return
    ElseIf ($keycode = 27) Then ; esc key
        Exit
    Else
        $buffer = ""
    EndIf
EndFunc   ;==>EvaluateKey

; ===========================================================
; funkcja callback
; ===========================================================
Func _KeyProc($nCode, $wParam, $lParam)
    Local $tKEYHOOKS
    $tKEYHOOKS = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam) ;stworzenie struktury hooka z parametru $lParam
    If $nCode < 0 Then ;jeśli nic nie zostało wciśnięte
        Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam) ;wywołaj kolejną procedurę callback
    EndIf
    If $wParam = $WM_KEYDOWN Then ;jeśli jakiś klawisz został naciśnięty
        EvaluateKey(DllStructGetData($tKEYHOOKS, "vkCode")) ;wywołanie funkcji Evaluate
    Else ;jeśli nie
        Local $flags = DllStructGetData($tKEYHOOKS, "flags") ;pobierz wartość flagi ze struktury hooka
        Switch $flags ;sprawdzaj wartości flag
            Case $LLKHF_ALTDOWN
                ConsoleWrite("$LLKHF_ALTDOWN" & @CRLF)
            Case $LLKHF_EXTENDED
                ConsoleWrite("$LLKHF_EXTENDED" & @CRLF)
            Case $LLKHF_INJECTED
                ConsoleWrite("$LLKHF_INJECTED" & @CRLF)
            Case $LLKHF_UP
                ConsoleWrite("$LLKHF_UP: scanCode - " & DllStructGetData($tKEYHOOKS, "scanCode") & @TAB & "vkCode - " & DllStructGetData($tKEYHOOKS, "vkCode") & @CRLF)
        EndSwitch
    EndIf
    Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam) ;wywołaj kolejnego hooka
EndFunc   ;==>_KeyProc

Func Cleanup() ;funkcja czyszcząca
    _WinAPI_UnhookWindowsHookEx($hHook) ;zdjęcie hooka
    DllCallbackFree($hStub_KeyProc) ;zamknięcie DLLki
EndFunc   ;==>Cleanup
Zadowolony?

 

I pomoc to nie znaczy odwalanie za kogoś roboty. Owszem, forum jest od pomagania, ale żeby komuś pomóc, ten ktoś musi mieć chociaż podstawową wiedzę o tym, co chce zrobić, której ty nie masz.

 

@up gg

846331404756772371599.jpeg
Opublikowano

@up zadowolony ale nie ogarniam tego za bardzo. Jak to przerobić żeby działało na oknie cmd?

 

 

 

@dobra do zamknięcia już wymyśliłem

Cipka - Najlepszy silnik na świecie. Działa z tłokiem każdej średnicy, wbudowana funkcja samosmarowania, odpalasz jednym palcem i co miesiąc sam się wymienia olej. Szkoda tylko że ma taki pojebany komputer pokładowy.

Opublikowano

dzięki nie skorzystam zostane przy au3 już wiem jak

Cipka - Najlepszy silnik na świecie. Działa z tłokiem każdej średnicy, wbudowana funkcja samosmarowania, odpalasz jednym palcem i co miesiąc sam się wymienia olej. Szkoda tylko że ma taki pojebany komputer pokładowy.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...