Tastenzähl Bot

10/28/2010 16:48 *scarface*#1
Hey Community...

Code:
$NCount = GUICreate("Count", 168, 33, 303, 219)
$Hits = GUICtrlCreateLabel("", 4, 0, 156, 28)
GUISetState(@SW_SHOW)
GUISetState(@SW_ENABLE)
;WinSetOnTop ($NCount, "Count", 1)
WinActivate ( $NCount , "Count" )


While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
           
            If _IsPressed(31) Then
                $x = $x + 1
            EndIf
            GUICtrlSetData($Hits,$x)
           
    EndSwitch
WEnd
Das ist mein Quelltext.
Ich möchte das diese Gui so wie z.B ne Sidebar einfach nur dauerhaft im Vordergrund ist, deswegen WinActivate, da sie in der Hilfe Datei geschreiben haben WinsetonTop könnte schwierigkeiten geben, stimmt das?

Naja zu meiner eigentlichen Frage, ich möchte dass er auch wenn ich nicht in dem AutoIt fenster also in der Gui bin, registriert wenn ich eine Taste auf der Tastatur drücke und dann $x erhöht, also das Programm soll zählen wie viele Tasten ich gedrückt habe.

Bitte euch ganz dolle um Hilfe?

Mit freundlichen Grüßen
*scarface*
10/28/2010 16:53 Al Kappaccino#2
Erm, IsPressed ist doch eine Globale abfrage? Zumindet muss ich das Fenster bei mir nicht aktiv haben

Edit:
Ahh...Fehler

Code:
    Case $GUI_EVENT_CLOSE
           
            If _IsPressed(31) Then
                $x = $x + 1
            EndIf
            GUICtrlSetData($Hits,$x)
Würde natürlich keinen Sinn machen, weil er im Prinzip nur den Tastendruck abfrägt wenn du die GUI beendest ôo
10/28/2010 17:00 *scarface*#3
Ouuuwww Stimmt... also muss ich das mit als extra Case einbauen oder?
10/28/2010 17:03 Al Kappaccino#4
Nein ...
Code:
While 1
          If _IsPressed(31) Then
                $x = $x + 1
            EndIf
            GUICtrlSetData($Hits,$x)

    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
           Exit
        
    EndSwitch
WEnd
10/28/2010 17:08 *scarface*#5
Ich habe gerade so versucht wie du es gesagt hast, jedoch wartet er nicht bis ich die Taste gedrückt habe, sondern zählt einfach direkt los bis ins unendliche, hast du dafür evtl. auch eine Antwort?
10/28/2010 17:13 eagly200#6
vielleicht:
Code:
$3 = 33
$TastenZahl
If  _IsPressed($3) then $TastenZahl +1
müsste aber auch irgendwie gehen, das man nich alle tasten extra machen muss...
10/28/2010 17:15 omer36#7
PHP Code:
#include <Misc.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$NCount GUICreate("Count"16833303219)
$Hits GUICtrlCreateLabel(""4015628)
GUISetState(@SW_SHOW)
GUISetState(@SW_ENABLE)


$x 0
While 1
    $nMsg 
GUIGetMsg()
    Switch 
$nMsg
        
Case $GUI_EVENT_CLOSE
            
Exit

    EndSwitch
    If 
_IsPressed(31Then
        Sleep
(200)
        
$x += 1
        GUICtrlSetData
($Hits$x)
    EndIf
WEnd 
10/28/2010 17:30 *scarface*#8
Jetzt funktioniert :) vielen dank!
10/28/2010 17:52 *scarface*#9
Code:
    If _IsPressed(31 Or 08 Or 09 Or 0C Or 0D Or 10 Or 11 Or 12 Or 13 Or 14 Or 
		1B Or 20 Or 21 Or 22 Or 23 Or 24 Or 25 Or 26 Or 27 Or 28 Or 29 Or 2A Or 
		2B Or 2C Or 2D Or 2E Or 30 Or 31 Or 32 Or 33 Or 34 Or 35 Or 36 Or 37 Or 
		38 Or 39 Or 41 Or 42 Or 43 Or 44 Or 45 Or 46 Or 47 Or 48 Or 49 Or 4A Or 4B 
		Or 4C Or 4D Or 4E Or 4F Or 50 Or 51 Or 52 Or 53 Or 54 Or 55 Or 56 Or 57 Or
		58 Or 59 Or 5A Or 5B Or 5C Or 60 Or 61 Or 62 Or 63 Or 64 Or 65 Or 66 Or 67 
		Or 68 Or 69 Or 6A Or 6B Or 6C Or 6D Or 6E Or 6F Or 70 Or 71 Or 72 Or 73 Or 
		74 Or 75 Or 76 Or 77 Or 78 Or 79 Or 7A Or 7B Or 90 Or 91 Or A0 Or A1 Or A2 Or A3 Or A4 Or A5 Or) Then
So nun habe ich wieder ein Problem... -.-
Ich habe alle Tasten in Codes dort eingegeben aber nun nimmt er die Buchstaben nicht an, woran liegt das?
10/28/2010 18:04 ~De@dly Silence~#10
Ich bin mir nicht sicher, aber ich bezweifle stark, dass du da einfach alle Tasten in ein _IsPressed reinklatschen kannst...
Ich würde es eher so machen:
Code:
 If _IsPressed(31) OR _IsPressed( 08 ) usw., usw., usw. Then
10/28/2010 18:38 omer36#11
if _ispressed(...) then
dies und das
elseif _ispresses(;;; ) then
das und dies
elseif ....
...
..
endif
10/28/2010 18:51 *scarface*#12
Also habe es jetzt in mehrere geschreiben, jedoch kommt er weiterhin nicht mit den Buchstaben klöar, geht es evtl. wenn ich sie in " Auführungszeichen setze?
10/28/2010 19:36 PenGuin :O#13
Code:
#include <Misc.au3>

Global $iCount = 0, $iOldHex

$hGUI = GUICreate("Zählen", 312, 58, 725, 328)
GUISetFont(12, 400, 0, "Arial")
$Count = GUICtrlCreateLabel("Count: 0", 64, 16, 100, 27)
GUICtrlSetFont(-1, 15, 400, 0, "Arial")
GUISetState()

$User32 = DllOpen("user32.dll")

While Sleep(50)
	_CheckKey($Count)
	If GUIGetMsg() = -3 Then ExitLoop
WEnd

DLLClose($User32)


Func _CheckKey($Control)
	For $i = 1 To 165
		$iHex = StringTrimLeft(Hex($i), 6)
		If _IsPressed($iHex) Then
			$iCount += 1
			GUICtrlSetData($Control, "Count: " & $iCount)
			Do
				Sleep(50)
			Until Not _IsPressed($iHex)
		EndIf
	Next
EndFunc
bitte.