Also bei mir funktioniert die _InetGetSource variante:
[autoit]$sHTML = BinaryToString(InetRead("http://aion.yg.com/item/bla?id=100000276"))
ConsoleWrite($sHTML & @CRLF)
Also bei mir funktioniert die _InetGetSource variante:
[autoit]$sHTML = BinaryToString(InetRead("http://aion.yg.com/item/bla?id=100000276"))
ConsoleWrite($sHTML & @CRLF)
HotKeySet("{P}", "_pause")
HotKeySet("{W}", "_weiter")
HotKeySet("{ESC}", "_ende")
$pause = 0
While Sleep(200)
If Not $pause Then
ProcessClose("chrome.exe")
ProcessClose("firefox.exe")
ProcessClose("iexplore.exe")
EndIf
WEnd
Func _pause()
$pause = 1
EndFunc ;==>_pause
Func _weiter()
$pause = 0
EndFunc ;==>_weiter
Func _ende()
Exit
EndFunc
Braucht man dafür #RequireAdmin oder nicht?
Kommt auf das Zielverzeichnis an.
Für welceh Funktionen genau braucht man eigentlich #RequireAdmin?
Für alle die Administratorrechte verlangen.
FileCopy usw?
Siehe Frage 1.
Andere Funktionen die Adminrechte benötigen wären zb RegWrite.
Les das bitte nochmal:
https://autoit.de/index.php?page=Forumrules
@Mods: Bitte closen
und wie bekommt man da die gui weg also das man nur das bild sehn kann.
http://www.autoitscript.com/forum/index.php?showtopic=102961
Du brauchst die Vollversion von Scite:
http://www.autoitscript.com/cgi-bin/getfil…iTE4AutoIt3.exe
$sText = "Zeile1" & @CRLF & "Zeile2" & @CRLF & "Zeile3" & @CRLF & "Zeile4" & @CRLF & "Zeile5" & @CRLF & "Zeile6" & @CRLF & "Zeile7"
[/autoit][autoit][/autoit][autoit]; Möglichkeit 1:
[/autoit][autoit][/autoit][autoit]$sText_Neu = StringReplace($sText, StringLeft($sText, StringInStr($sText, @CRLF, 0, 5) + 1), "")
MsgBox(0, "Mit StringReplace", $sText_Neu)
; Möglichkeit 2:
Local $aSplit = StringSplit($sText, @CRLF, 3), $sText_Neu
For $i = 5 To UBound($aSplit) - 1
$sText_Neu &= $aSplit[$i] & @CRLF
Next
MsgBox(0, "Mit StringSplit (Arrays)", $sText_Neu)
Hallo,
Habe gerade auch so eine Funktion gebraucht:
#include <GDIPlus.au3>
InetGet("http://upload.wikimedia.org/wikipedia/commons/7/7a/Basketball.png",@ScriptDir & "\Ball.png")
$hGUI = GUICreate("")
$cBasketball = GUICtrLCreatePng($hGUI,@ScriptDir & "\Ball.png",20,20)
GUISetState()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
Case $cBasketball
MsgBox(0,"","Du hast den Ball angeklickt!")
EndSwitch
WEnd
Func GUICtrlCreatePng($hWnd, $sPath, $iX, $iY) ; SEuBo
_GDIPlus_Startup()
Local $hScrDC, $hMemDC, $hBitmap, $hOld, $pSize, $tSize, $pSource, $tSource, $pBlend, $tBlend, $hGUI
Local $hImage = _GDIPlus_ImageLoadFromFile($sPath), $iWidth = _GDIPlus_ImageGetWidth($hImage), $iHeight = _GDIPlus_ImageGetHeight($hImage)
$hGUI = GUICreate("", $iWidth, $iHeight, $iX, $iY, 0x80000000, BitOR(0x40, 0x80000), $hWnd)
$cLabel = GUICtrlCreateLabel("", 0, 0, $iWidth, $iHeight)
GUICtrlSetBkColor(-1, -2)
GUISetState(@SW_SHOWNOACTIVATE, $hGUI)
$hScrDC = _WinAPI_GetDC(0)
$hMemDC = _WinAPI_CreateCompatibleDC($hScrDC)
$hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
$hOld = _WinAPI_SelectObject($hMemDC, $hBitmap)
$tSize = DllStructCreate("int X;int Y")
$pSize = DllStructGetPtr($tSize)
DllStructSetData($tSize, "X", $iWidth)
DllStructSetData($tSize, "Y", $iHeight)
$tSource = DllStructCreate("int X;int Y")
$pSource = DllStructGetPtr($tSource)
$tBlend = DllStructCreate("byte Op;byte Flags;byte Alpha;byte Format")
$pBlend = DllStructGetPtr($tBlend)
DllStructSetData($tBlend, "Alpha", 255)
DllStructSetData($tBlend, "Format", 1)
_WinAPI_UpdateLayeredWindow($hGUI, $hScrDC, 0, $pSize, $hMemDC, $pSource, 0, $pBlend, $ULW_ALPHA)
_WinAPI_ReleaseDC(0, $hScrDC)
_WinAPI_SelectObject($hMemDC, $hOld)
_WinAPI_DeleteObject($hBitmap)
_WinAPI_DeleteDC($hMemDC)
GUISwitch($hWnd)
_GDIPlus_ImageDispose($hImage)
_GDIPlus_Shutdown()
Return SetError(0,$hGUI,$cLabel)
EndFunc ;==>GUICtrlCreatePng
danke für deine Antwort, da muss die datei trotzdem erstellt werden, also da komme ich nich drum rum und die paar kilobyte sin dan auch egal
Für Bilder:
https://autoit.de/index.php?page=Thread&threadID=19313
Für Sounds:
Play Chip Sound from Memory
Man braucht garnix iwo speichern ....
Ich hab nicht umsonst "dreckige Tricks" gesagt. Das ganze ist sehr instabil (lass mal zum Spaß die Parameter der _GUIGetMsg() Funktion weg :P)
Ich kann dein Problem mit AdlibRegister aber nicht nachvollziehen.
Ohne dein Script zu sehen kann ich da leider nicht viel zu sagen.
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <Timers.au3>
#include <WindowsConstants.au3>
Global $x = 0
[/autoit] [autoit][/autoit] [autoit]#region ### START Koda GUI section ### Form=
$Fenster = GUICreate("Server Manager", 810, 330, 275, 234)
$Input_Message = GUICtrlCreateInput("", 30, 55, 200, 20)
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetBkColor(-1, 0x716F64)
$Button_Send = GUICtrlCreateButton("Send", 250, 55, 40, 20)
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetBkColor(-1, 0x716F64)
$ListView_Online = GUICtrlCreateListView("Online Users", 32, 100, 90, 200)
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetBkColor(-1, 0x716F64)
$ListView_Banned = GUICtrlCreateListView("Banned Users", 132, 100, 90, 200)
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetBkColor(-1, 0x716F64)
$ListView_Verlauf = GUICtrlCreateListView("Von|An|Text", 250, 100, 520, 200)
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetBkColor(-1, 0x716F64)
GUICtrlCreatePic(@ScriptDir & "\vistatrends_wallpaper_avantzone.jpg", 0, 0, 812, 332, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
GUICtrlCreateLabel("Verlauf", 450, 55, 100, 20, $SS_CENTER)
GUICtrlSetFont(-1, 14, 800, 0, "Arial")
GUICtrlSetColor(-1, 0x27A9FF)
GUICtrlSetBkColor(-1, $gui_bkcolor_transparent)
GUICtrlCreateLabel("AutoIt Server Management", 180, 16, 250, 26, $SS_CENTER)
GUICtrlSetFont(-1, 14, 800, 0, "Arial")
GUICtrlSetColor(-1, 0x27A9FF)
GUICtrlSetBkColor(-1, $gui_bkcolor_transparent)
GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###
GUICtrlCreateListViewItem("Server|Alle|[12:04:34]Jetzt wird ein Packet vom Server an Alle Benutzer die Online sind gesendet", $ListView_Verlauf)
_Timer_SetTimer($Fenster, 10, "_GUIGetMsg")
AdlibRegister("_AdlibTest",250)
While Sleep(10)
WEnd
Func _GUIGetMsg($hWnd, $Msg, $iIDTimer, $dwTime)
#forceref $hWnd, $Msg, $iIDTimer, $dwTime
$x += 1
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $x = ' & $x & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
$Msg = GUIGetMsg()
Switch $Msg
Case -3
_Timer_KillAllTimers($Fenster)
Exit
EndSwitch
EndFunc ;==>_GUIGetMsg
Func _AdlibTest()
Local Static $iCnt = 0
$iCnt += 1
ConsoleWrite(@CRLF & @CRLF & @CRLF & "+========================> TEST #" & $iCnt & @CRLF & @CRLF & @CRLF)
EndFunc ;==>_AdlibTest
@mazZ:
Nein, das ist schon okey.
Alle Werte außer "" und 0 werden als TRUE interpretiert. Diese Schreibweise ist deswegen vollkommen okey.
$iVar = ""
If $iVar Then MsgBox(0, "", '$iVar = ""')
$iVar = 1
If $iVar Then MsgBox(0, "", "$iVar = 1")
$iVar = -1
If $iVar Then MsgBox(0, "", "$iVar = -1")
$iVar = 0
If $iVar Then MsgBox(0, "", "$iVar = 0")
$iVar = "Hallo!"
If $iVar Then MsgBox(0, "", '$iVar = "Hallo!"')
LG
Es hätte auch einfach genügt im Script im Startpost ein $play = 0 nach dem Send() einzufügen.
Meine Lösung(en):
[autoit]WinWait("[REGEXPTITLE:Benutzer auf|Z:\]")
[/autoit][autoit][/autoit][autoit]; oder
[/autoit][autoit][/autoit][autoit]Do
Sleep(10)
Until WinExists("Benutzer auf") Or WinExists("Z:\")
Hmm... diesen Quelltext mit den Sprungmarken finde ich ja mal so richtung unübersichtlich. Ich als Anfänger Steige da gar nicht durch
Genau das meine ich.
Mit schlauem einsatz von Funktionen und Schleifen meine ich, dass du die Aktionen deines Programms in Funktionen auslagern sollst. Ohne deinen Code zu sehen kann ich dir aber nicht wirklich was dazu sagen.
Aber ContinueLoop solltest du dir trotzdem mal anschauen - das ist das Gegenstück zu ExitLoop und springt zum beginn einer Schleife zurück, das funktioniert dann auch über mehrere Schleifenebenen hinweg.
Übrigens sagt mir meine Intuition dass es hier um einen Bot geht. Deswegen weise ich dich mal auf die Forenregeln hin, und möchte dich im Falle des Falles bitten, nochmals google nach dem, für deine Zwecke richtigen, Forum zu suchen.
LG
Goto ist böse. Und nichts was man mit Goto machen kann, kann man mit dem schlauen einsatz von funktionen und schleifen nicht auch.
Wenn du aber unbedingt wirrren und unverständlichen Code (Dank GoTo) haben willst, dann kannst du Sprungmarken Simulieren.
[autoit]$Sprungmarke = True
$ZweiteSprungmarke = True
MsgBox(0, "", "Hier sind wir vorbei")
While $Sprungmarke ; Sprungmarke initialisieren
MsgBox(0, "", "Wir haben die erste Sprungmarke erreicht")
If MsgBox(4, "", "Zurückspringen? (Mit Ja zurückspringen)") = 6 Then ContinueLoop
If MsgBox(4, "", "Bist du sicher? (Mit Nein zurückspringen)") = 7 Then ContinueLoop
While $ZweiteSprungmarke
MsgBox(0, "", "Wir haben die zweite Sprungmarke erreicht")
If MsgBox(1, "", "Es wird jetzt zu der ersten Sprungmarke gesprungen (Mit Ok zurückspringen)") = 1 Then ContinueLoop 2
If MsgBox(1, "", "Dann wengistens zu der zweiten? (Mit Ok zurückspringen)") = 1 Then ContinueLoop
$ZweiteSprungmarke = False
WEnd
$Sprungmarke = False ; Endlosschleife verhindern (Danach muss direkt das Wend folgen)
WEnd ; ab hier kannn man nicht mehr zurückspringen
Aaaah, das macht schon mehr Sinn.
Das ist Windows Verhalten, das man nur mit dreckigen Tricks umgehen kann:
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <Timers.au3>
#include <WindowsConstants.au3>
Global $x = 0
[/autoit] [autoit][/autoit] [autoit]#region ### START Koda GUI section ### Form=
$Fenster = GUICreate("Server Manager", 810, 330, 275, 234)
$Input_Message = GUICtrlCreateInput("", 30, 55, 200, 20)
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetBkColor(-1, 0x716F64)
$Button_Send = GUICtrlCreateButton("Send", 250, 55, 40, 20)
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetBkColor(-1, 0x716F64)
$ListView_Online = GUICtrlCreateListView("Online Users", 32, 100, 90, 200)
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetBkColor(-1, 0x716F64)
$ListView_Banned = GUICtrlCreateListView("Banned Users", 132, 100, 90, 200)
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetBkColor(-1, 0x716F64)
$ListView_Verlauf = GUICtrlCreateListView("Von|An|Text", 250, 100, 520, 200)
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetBkColor(-1, 0x716F64)
GUICtrlCreatePic(@ScriptDir & "\vistatrends_wallpaper_avantzone.jpg", 0, 0, 812, 332, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
GUICtrlCreateLabel("Verlauf", 450, 55, 100, 20, $SS_CENTER)
GUICtrlSetFont(-1, 14, 800, 0, "Arial")
GUICtrlSetColor(-1, 0x27A9FF)
GUICtrlSetBkColor(-1, $gui_bkcolor_transparent)
GUICtrlCreateLabel("AutoIt Server Management", 180, 16, 250, 26, $SS_CENTER)
GUICtrlSetFont(-1, 14, 800, 0, "Arial")
GUICtrlSetColor(-1, 0x27A9FF)
GUICtrlSetBkColor(-1, $gui_bkcolor_transparent)
GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###
GUICtrlCreateListViewItem("Server|Alle|[12:04:34]Jetzt wird ein Packet vom Server an Alle Benutzer die Online sind gesendet", $ListView_Verlauf)
_Timer_SetTimer($Fenster, 10, "_GUIGetMsg")
While Sleep(10)
WEnd
Func _GUIGetMsg($hWnd, $Msg, $iIDTimer, $dwTime)
#forceref $hWnd, $Msg, $iIDTimer, $dwTime
$x += 1
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $x = ' & $x & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
$msg = GUIGetMsg()
Switch $msg
Case -3
_Timer_KillAllTimers($Fenster)
Exit
EndSwitch
EndFunc ;==>_GUIGetMsg
LG
Kann ich leider nicht nachvollziehen. Bei mir läuft die Schleife Problemlos weiter.
Wofür braucht man denn sowas?!
Ich schweife jetzt mal ein bisschen aus:
Moderne Onlinespiele haben meistens einen sog. Hackshield. Eine zusätzliche Software, die dem Spiel beiliegt, und virtuelle Mausklicks, Tastenanschläge usw. blockiert.
Dazu nutzen diese Hackshields verschiedene Vorgehensweisen. Die einen lesen bestimmte Speicherbereiche aus und erkennen "böswillige" Programme; Die anderen "hooken" bestimmte DLLs und fangen somit Virtuelle Klicks ab, bevor sie überhaupt ausgeführt werden. Wieder andere nutzen beide, und nochmal andere ganz andere Methoden.
Die Möglichkeiten sind da natürlich recht ausgiebig. Damit wären wir aber bei dem Thema "Überwachungssoftware" auf jedem Rechner.
Nun frage ich mich aber: Wenn das ganze über ein WebInterface läuft, wie willst du diese Aktionen dann mit AutoIt erkennen? Sollte der Thread nicht eher in einem PHP Forum oder so sein?
Vielleicht sollte zuerstmal ein Captcha System eingebaut werden.
#region ### START Koda GUI section ###
$GUI_main = GUICreate("", 420, 227, 193, 125)
$GUI_input = GUICtrlCreateEdit("", 8, 8, 401, 129)
GUICtrlSetData(-1, "Hier den gewünschten Begriff, Text oder Zahl hineinschreiben.")
$GUI_output = GUICtrlCreateInput("", 8, 176, 289, 21)
$GUI_button_Kalkulieren = GUICtrlCreateButton("Kalkulieren", 8, 145, 401, 25)
#endregion ### END Koda GUI section ###
GUISetState()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_button_Kalkulieren
GUICtrlSetData($GUI_output, StringLen(GUICtrlRead($GUI_input)))
Case -3
Exit
EndSwitch
WEnd