|
You last visited: Today at 06:49
Advertisement
Tastenzähl Bot
Discussion on Tastenzähl Bot within the AutoIt forum part of the Coders Den category.
10/28/2010, 16:48
|
#1
|
elite*gold: 0
Join Date: May 2009
Posts: 127
Received Thanks: 21
|
Tastenzähl Bot
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
|
#2
|
elite*gold: 179
Join Date: Oct 2009
Posts: 7,853
Received Thanks: 8,558
|
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
|
#3
|
elite*gold: 0
Join Date: May 2009
Posts: 127
Received Thanks: 21
|
Ouuuwww Stimmt... also muss ich das mit als extra Case einbauen oder?
|
|
|
10/28/2010, 17:03
|
#4
|
elite*gold: 179
Join Date: Oct 2009
Posts: 7,853
Received Thanks: 8,558
|
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
|
#5
|
elite*gold: 0
Join Date: May 2009
Posts: 127
Received Thanks: 21
|
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
|
#6
|
elite*gold: 0
Join Date: Jul 2010
Posts: 450
Received Thanks: 78
|
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
|
#7
|
elite*gold: 0
Join Date: Mar 2009
Posts: 2,317
Received Thanks: 1,255
|
PHP Code:
#include <Misc.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> $NCount = GUICreate("Count", 168, 33, 303, 219) $Hits = GUICtrlCreateLabel("", 4, 0, 156, 28) GUISetState(@SW_SHOW) GUISetState(@SW_ENABLE)
$x = 0 While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit
EndSwitch If _IsPressed(31) Then Sleep(200) $x += 1 GUICtrlSetData($Hits, $x) EndIf WEnd
|
|
|
10/28/2010, 17:30
|
#8
|
elite*gold: 0
Join Date: May 2009
Posts: 127
Received Thanks: 21
|
Jetzt funktioniert  vielen dank!
|
|
|
10/28/2010, 17:52
|
#9
|
elite*gold: 0
Join Date: May 2009
Posts: 127
Received Thanks: 21
|
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
|
#10
|
elite*gold: 0
Join Date: Aug 2006
Posts: 409
Received Thanks: 150
|
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
|
#11
|
elite*gold: 0
Join Date: Mar 2009
Posts: 2,317
Received Thanks: 1,255
|
if _ispressed(...) then
dies und das
elseif _ispresses(;;; ) then
das und dies
elseif ....
...
..
endif
|
|
|
10/28/2010, 18:51
|
#12
|
elite*gold: 0
Join Date: May 2009
Posts: 127
Received Thanks: 21
|
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
|
#13
|
elite*gold: 2
Join Date: Mar 2008
Posts: 1,778
Received Thanks: 1,222
|
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.
|
|
|
All times are GMT +1. The time now is 06:50.
|
|