Ja, dachte ich mir schon... bin in etwa zu 50% fertig... aber momentan habe ich viel um die Ohren... Bruder im Krankenhaus, mein bester Freud auch... mir geht es auch nicht sonderlich gut... gedulde dich noch ein paar Tage.
Beiträge von Bitnugger
-
-
-
Mehr Waffen... eine Schrotflinte oder eine Bombe als alternative Waffe scheint mir aus grafischer Sicht eine lösbare Aufgabe zu sein... viel problematischer dabei ist aber sicher, den Schwierigkeitsgrad bei den verschiedenen Waffen gleich zu halten. Oder aber man nimmt für jeden Level eine andere Waffe...
-
Ich kann die Seite auch nicht laden...
Die Domain "www.antons.eu" ist nicht über https verfügbar.@Slowly hat seinen Server falsch konfiguriert... dass muss er selbst korrigieren.
-
Wie kann ich das UDF bekommen?
-
Bitnugger: Da hast du es dir aber ziemlich kompliziert gemacht
Einen Großteil deines Codes kannst du eindampfen, wenn du GuiGetCursorInfo verwendest, um die ID zu ermitteln, über der sich die Maus bewegt.Oh ja. Dieses Beispiel hatte ich noch aus alten Zeiten als Code-Schnipsel hier rum liegen. GUIGetCursorInfo... wieso ich diese Funktion immer wieder aus den Augen verliere, ist mir ein Rätsel.
Hier die stark gekürzte Version...
StatusBar
AutoIt
Alles anzeigen;-- TIME_STAMP 2017-06-21 10:52:41 v 0.1 #Region ;************ Includes ************ #Include <Array.au3> #include <GUIConstantsEx.au3> #include <GuiStatusBar.au3> #include <WinAPIShellEx.au3> #EndRegion ;************ Includes ************ Global $g_hStatus, $g_aParts[5] = [150, 220, 1150, 1230, -1] Global $g_aIcons[4][3] = [['imageres.dll', 76, -1], ['imageres.dll', 77, -1], ['imageres.dll', 118, -1], ['setupapi.dll', 1, -1]], $g_aCursor, $g_idFocus Global $g_aText = [ 'Das ist ein ganz ganz langer Text, der garantiert nicht in das kleine Feld passt.', _ 'Dieser Text ist noch viel länger, aber auch das ist nicht wirklich tragisch, solange er denn in die Statusbar passt... und falls dass auch nicht reicht, kann man den Text ja scrollen! ;-)', _ 'Dieser Text wird nicht in der Statusbar angezeigt! /-('] Global $g_hGUI = GUICreate('Test', 1280, 100) Global $g_idInput1 = GUICtrlCreateInput($g_aText[0], 10, 10, 220, 20) Global $g_idInput2 = GUICtrlCreateInput($g_aText[1], 240, 10, 260, 20) Global $g_idInput3 = GUICtrlCreateInput($g_aText[2], 510, 10, 320, 20) Global $g_idLabel = GUICtrlCreateLabel('Bewege die Maus über die Input-Controls oder aktiviere eines und ändere den Text...', 10, 50, 1180, 22) GUICtrlSetFont(-1, 12) GUISetState() $g_aCursor = GUIGetCursorInfo($g_hGUI) $g_hStatus = _GUICtrlStatusBar_Create($g_hGUI) _GUICtrlStatusBar_SetParts($g_hStatus, $g_aParts) _StatusBar_SetText(_WinAPI_GetClassName(GUICtrlGetHandle($g_idInput1)), $g_idInput1, $g_aText[0]) For $i = 0 To UBound($g_aIcons) -1 Step 1 $g_aIcons[$i][2] = _WinAPI_ShellExtractIcon($g_aIcons[$i][0], $g_aIcons[$i][1], 16, 16) _GUICtrlStatusBar_SetIcon($g_hStatus, $i, $g_aIcons[$i][2]) Next While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit Case $GUI_EVENT_MOUSEMOVE $g_aCursor = GUIGetCursorInfo($g_hGUI) $g_idFocus = $g_aCursor[4] Switch $g_idFocus Case $g_idInput1, $g_idInput2 _StatusBar_SetText(_WinAPI_GetClassName(GUICtrlGetHandle($g_idFocus)), $g_idFocus, GUICtrlRead($g_idFocus)) Case Else _StatusBar_SetText() EndSwitch EndSwitch WEnd Func _StatusBar_SetText($sPart1 = '', $sPart2 = '', $sPart3 = '') _GUICtrlStatusBar_SetText($g_hStatus, 'ClassName: ' & $sPart1) _GUICtrlStatusBar_SetText($g_hStatus, 'ID: ' & $sPart2, 1) _GUICtrlStatusBar_SetText($g_hStatus, $sPart3, 2) _GUICtrlStatusBar_SetText($g_hStatus, 'X: ' & StringRight(' ' & $g_aCursor[0], 6), 3) _GUICtrlStatusBar_SetText($g_hStatus, 'Y: ' & StringRight(' ' & $g_aCursor[1], 6), 4) EndFunc
-
Oder so...
StatusBar
AutoIt
Alles anzeigen;-- TIME_STAMP 2017-06-21 06:48:49 v 0.1 #Region ;************ Includes ************ #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <GuiStatusBar.au3> #include <EditConstants.au3> ;~ #include <WinAPI.au3> #EndRegion ;************ Includes ************ Global $g_hStatus, $g_tStruct = DllStructCreate($tagPOINT) ; Create a structure that defines the point to be checked. Global $aParts[3] = [150, 220, -1] Global $sMsg1 = 'Das ist ein ganz ganz langer Text, der garantiert nicht in das kleine Feld passt.' Global $sMsg2 = 'Dieser Text ist noch viel länger, aber auch das ist nicht wirklich tragisch, solange er denn in die Statusbar passt... und falls dass auch nicht reicht, kann man den Text ja scrollen! ;-)' Global $sMsg3 = 'Dieser Text wird nicht in der Statusbar angezeigt! /-(' Global $hGUI = GUICreate('Test', 1200, 100) Global $idInput1 = GUICtrlCreateInput($sMsg1, 10, 10, 220, 20) Global $hInput1 = ControlGetHandle($hGUI, '', $idInput1) Global $idInput2 = GUICtrlCreateInput($sMsg2, 240, 10, 260, 20) Global $hInput2 = ControlGetHandle($hGUI, '', $idInput2) Global $idInput3 = GUICtrlCreateInput($sMsg3, 510, 10, 320, 20) Global $idLabel = GUICtrlCreateLabel('Bewege die Maus über die Input-Controls oder aktiviere eines und ändere den Text...', 10, 50, 1180, 22) GUICtrlSetFont(-1, 12) GUISetState() GUIRegisterMsg($WM_COMMAND, '_WM_COMMAND') $g_hStatus = _GUICtrlStatusBar_Create($hGUI) _GUICtrlStatusBar_SetParts($g_hStatus, $aParts) _StatusBar_SetText(_WinAPI_GetClassName($hInput1), $idInput1, $sMsg1) Global $ahIcons[2], $hWnd, $sFocus $ahIcons[0] = _WinAPI_LoadShell32Icon(23) ; Extracts an icon from the shell32.dll file $ahIcons[1] = _WinAPI_LoadShell32Icon(12) _GUICtrlStatusBar_SetIcon($g_hStatus, 0, $ahIcons[0]) _GUICtrlStatusBar_SetIcon($g_hStatus, 1, $ahIcons[1]) While 1 Switch GUIGetMsg() Case $GUI_EVENT_MOUSEMOVE ;~ ConsoleWrite('$GUI_EVENT_MOUSEMOVE' & @CRLF) _Position() $hWnd = _WinAPI_WindowFromPoint($g_tStruct) Switch $hWnd Case $hInput1 _StatusBar_SetText(_WinAPI_GetClassName($hInput1), $idInput1, GUICtrlRead($idInput1)) Case $hInput2 _StatusBar_SetText(_WinAPI_GetClassName($hInput2), $idInput2, GUICtrlRead($idInput2)) Case $hGUI $sFocus = ControlGetFocus($hGUI) Switch _WinAPI_GetDlgCtrlID(ControlGetHandle($hGUI, '', $sFocus)) Case $idInput1 _StatusBar_SetText(_WinAPI_GetClassName($hInput1), $idInput1, GUICtrlRead($idInput1)) Case $idInput2 _StatusBar_SetText(_WinAPI_GetClassName($hInput2), $idInput2, GUICtrlRead($idInput2)) Case Else _StatusBar_SetText() EndSwitch Case Else _StatusBar_SetText() EndSwitch Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd Func _WM_COMMAND($hWnd, $iMsg, $wParam, $lParam) Local $iIDFrom = _WinAPI_LoWord ($wParam) Local $iCode = _WinAPI_HiWord ($wParam) Switch $iIDFrom Case $idInput1, $idInput2 Switch $iCode Case $EN_CHANGE, $EN_SETFOCUS _StatusBar_SetText(_WinAPI_GetClassName(ControlGetHandle($hGUI, '', $iIDFrom)), $iIDFrom, GUICtrlRead($iIDFrom)) Case $EN_KILLFOCUS ConsoleWrite('$EN_KILLFOCUS: ' & ControlGetFocus($hGUI) & @CRLF) EndSwitch Case Else _StatusBar_SetText() EndSwitch ;~ ConsoleWrite('$iIDFrom = ' & $iIDFrom & @CRLF) ;~ ConsoleWrite('$iCode = ' & $iCode & @CRLF) ;~ ConsoleWrite('$idInput = ' & $idInput & @CRLF) ;~ ConsoleWrite('$EN_CHANGE = ' & $EN_CHANGE & @CRLF) Return $GUI_RUNDEFMSG EndFunc ;==>_WM_COMMAND Func _StatusBar_SetText($sPart1 = '', $sPart2 = '', $sPart3 = '') _GUICtrlStatusBar_SetText($g_hStatus, 'ClassName: ' & $sPart1) _GUICtrlStatusBar_SetText($g_hStatus, 'ID: ' & $sPart2, 1) _GUICtrlStatusBar_SetText($g_hStatus, $sPart3, 2) EndFunc Func _Position() Local $aMousePos = MouseGetPos() DllStructSetData($g_tStruct, "x", $aMousePos[0]) DllStructSetData($g_tStruct, "y", $aMousePos[1]) EndFunc ;==>Position
-
Es wäre viel schöner, wenn die Lautstärke mit dem Mausrad in Einzelschritten geändert werden könnte... denn die Grobeinstellung kann man ja mit einem Mausklick an die gewünschte Stelle machen. Mit einer Skala am unteren Rand wäre es perfekt.
Mir ist aufgefallen, dass die Versionsangabe im Archivname nicht identisch mit der im Quellcode ist... die letzte Stelle fehlt.BrainfuckF:\_Scripts\AutoIt\Games\ChipHunter>ls -lh *.zip -rw----rwa$ 1 Bitnugger 5.6M Jun 20 22:56 ChipHunter__v1_5_1.zip
Wäre schön, wenn die (Zahlen) identisch wären, weil man dann via Script viel einfacher überprüfen kann, ob ein Update gemacht werden muss.
In Zeile 1000 hast du einen Schreibfehler: "für das Testen der Versionen"
Was noch fehlt, ist eine "Chef-Taste"...
-
Hier noch eine andere Möglichkeit, um sicherzustellen, dass eine Funktion nur einmal ausgeführt wird...
RunOnce
AutoIt
Alles anzeigen#Region ;************ Includes ************ #Include <WinAPIShPath.au3> #Include <Date.au3> #EndRegion ;************ Includes ************ ;-- TIME_STAMP 2017-06-16 23:18:30 v 0.1 Global $g_LogFile = _WinAPI_PathRemoveExtension(@ScriptName) & '.log' OnAutoItExitRegister("_Exit") ; Mach irgendwas... ; Funktion _Exit() nur einmal ausführen! Func _Exit() Local Static $bExit = False If $bExit = False Then $bExit = True If @exitMethod = $EXITCLOSE_BYSUTDOWN Then ; 4 = close by Windows shutdown Local $hFile = FileOpen($g_LogFile) FileWriteLine($hFile, _NowCalc() & "OnAutoItExitRegister Funktion wurde aufgerufen; eingeleiteter Neustart wird nun erzwungen!" & @CRLF) FileClose($hFile) ; Das Beenden von Windows wegen evtl. hängender Prozesse erzwingen... Local $iTimeout = 30 ; Standardwert ist 30s Run('shutdown.exe /r /f /t ' & $iTimeout) EndIf EndIf EndFunc ;==>_Exit
-
Rechtsklick zum Pausieren und Linksklick zum Abdrücken. Fällt da jemanden was auf?
@Oscar - ist dir das entgangen?
-
Mit aktiviertem WindowBlinds werden dann wohl die relevanten Funktionen des Betriebssystems umgebogen, wodurch das Ergebnis dann anders ausfällt. Wenn ich WindowBlinds deaktiviere (Unload WindowBlinds) wird das Kontextmenü auch mit den Werten -285 korrekt angezeigt, aktiviere ich es wieder, wird es (auch mit dem Windows Default Style) wieder falsch angezeigt.
-
Auf technet.microsoft.com (mein vorheriger Post) steht...
MenuHeight
Specifies the height of menu bars.
MenuWidth
Specifies the width of menu bar buttons. -
Perfekt!
Einen kleiner Schönheitsfehler habe ich aber noch finden können...
Die Datei FFEx.au3 wird zwar auch als UTF-8 (SciTE und Notepad++) erkannt, aber ein Umlaut (ist nur der eine) wird nicht korrekt angezeigt.
362 ; Beschreibung ..: Schließt alle Tabs, auÃer dem Aktiven.
362 ; Beschreibung ..: Schließt alle Tabs, außer dem Aktiven. (oder einfach "ausser") -
Hast Du bei Windows irgendwas besonderes eingestellt? Oder einen Windows Tweaker?
Ja... ich habe WindowBlinds installiert und den Style Trio 10 eingestellt... die Werte (nicht manuell geändert) bleiben aber unverändert, wenn ich WindowBlinds deaktiviere und das System auf den Default-Style zurücksetze.
Edit:
; MenuHeight
https://technet.microsoft.com/en-us/library/cc938233.aspx
; MenuWidth
https://technet.microsoft.com/en-us/library/cc938234.aspxEdit2: Habe es gerade überprüft... wenn ich den Style Trio 10 wieder einstelle, werden die Werte von -270 auf -285 gesetzt!
-
OnAutoItExitRegister("_Exit")
AutoIt
Alles anzeigen#Region ;************ Includes ************ #Include <WinAPIShPath.au3> #Include <Date.au3> #EndRegion ;************ Includes ************ ;-- TIME_STAMP 2017-06-16 19:24:24 v 0.1 Global $g_LogFile = _WinAPI_PathRemoveExtension(@ScriptName) & '.log' OnAutoItExitRegister("_Exit") ; Mach irgendwas... ; Wenn du es mit dem externen Befehl Shutdown.exe machen willst... Func _Exit() OnAutoItExitUnRegister("_Exit") ; Funktion _Exit() nicht noch einmal ausführen! If @exitMethod = $EXITCLOSE_BYSUTDOWN Then ; 4 = close by Windows shutdown Local $hFile = FileOpen($g_LogFile) FileWriteLine($hFile, _NowCalc() & "OnAutoItExitRegister Funktion wurde aufgerufen; eingeleiteter Neustart wird nun erzwungen!" & @CRLF) FileClose($hFile) ; Das Beenden von Windows wegen evtl. hängender Prozesse erzwingen... Local $iTimeout = 30 ; Standardwert ist 30s Run('shutdown.exe /r /f /t ' & $iTimeout) EndIf EndFunc ;==>_Exit ; Wenn du es mit der nativen AutoIt-Funktion Shutdown() machen willst... Func _Exit() OnAutoItExitUnRegister("_Exit") ; Funktion _Exit() nicht noch einmal ausführen! If @exitMethod = $EXITCLOSE_BYSUTDOWN Then ; 4 = close by Windows shutdown Local $hFile = FileOpen($g_LogFile) FileWriteLine($hFile, _NowCalc() & "OnAutoItExitRegister Funktion wurde aufgerufen; eingeleiteter Neustart wird nun erzwungen!" & @CRLF) FileClose($hFile) ;~ Hier kannst du nun wählen... ;~ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;~ Neustart erzwingen, wenn ein Prozess das Beenden von Windows verhindert! ;~ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;~ HungAppTimeout = 5s - nach dieser Zeit kommt die Warnmeldung... ;~ WaitToKillAppTimeout = 20s - nach dieser Zeit wird der Neustart erzwungen... ;~ WaitToKillServiceTimeout = 20s - nach dieser Zeit wird der Neustart erzwungen... ;~ $iHungAppTimeout = RegRead('HKCU\Control Panel\Desktop', 'HungAppTimeout') ;~ $iWaitToKillAppTimeout = RegRead('HKCU\Control Panel\Desktop', 'WaitToKillAppTimeout') ;~ $iWaitToKillServiceTimeout = RegRead('HKLM\SYSTEM\CurrentControlSet\Control', 'WaitToKillServiceTimeout') ; (#RequireAdmin) ;~ RegWrite('HKCU\Control Panel\Desktop', 'HungAppTimeout', 'REG_SZ', '5000') ; Default ;~ RegWrite('HKCU\Control Panel\Desktop', 'WaitToKillAppTimeout', 'REG_SZ', '20000') ; Default ;~ RegWrite('HKLM\SYSTEM\CurrentControlSet\Control', 'WaitToKillServiceTimeout', 'REG_SZ', '20000') ; Default (#RequireAdmin) Shutdown(BitOR($SD_REBOOT, $SD_FORCEHUNG)) ; Hier wird 20s gewartet... (Default) ;~ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;~ Neustart ohne Verzögerung erzwingen! ;~ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Shutdown(BitOR($SD_REBOOT, $SD_FORCE)) EndIf EndFunc ;==>_Exit
-
-
Ja... Microsoft Windows 10 X64 [Version 1703 (Build 15063.413)]
-
Wenn ein Installer ein Reboot einleitet, ist der ExitCode dann sicher $EXITCLOSE_BYSUTDOWN, also 4?
Ja. Bevor Windows einen ShutDown einleitet, wird in der Registry vermerkt, ob und wie dieser ausgeführt werden soll. AutoIt liest diesen Wert aus und setzt das Makro @exitCode dann entsprechend.
Anstelle des externen Befehls Shutdown.exe kannst du auch AutoIt bemühen...
...doch so kannst du kein Timeout mit angeben! Die Timeouts kannst du aber in der Registry setzen bzw. ändern... siehe Anhang. Ist ein Key nicht vorhanden, verwendet Windows den Defaultwert.
Wenn du doch lieber die Shutdown.exe verwenden willst, weil du das Timeout explizit mit angeben willst, was in dem Fall dann auch zu empfehlen ist, sollte es nicht kleiner als der Defaultwert sein.
Vor Ausführung des Shutdowns (egal ob mit AutoIT oder externem Befehl) musst du die Funktion OnAutoItExitUnRegister("_Exit") ausführen, anderfalls wird die Funktion _Exit() erneut aufgerufen!
Process Constants - Auszug aus der Datei ..\Includes\AutoItConstants.au3
AutoIt; Process Constants ; Indicates the type of shutdown Global Const $SD_LOGOFF = 0 ; Logoff Global Const $SD_SHUTDOWN = 1 ; Shutdown Global Const $SD_REBOOT = 2 ; Reboot Global Const $SD_FORCE = 4 ; Force Global Const $SD_POWERDOWN = 8 ; Power down Global Const $SD_FORCEHUNG = 16 ; Force shutdown if hung Global Const $SD_STANDBY = 32 ; Standby Global Const $SD_HIBERNATE = 64 ; Hibernate
Ist das mit dem BYSUTDOWN eigentlich ein Typo in der AutoIt Dokumentation und soll BYSHUTDOWN heißen?
OnAutoItExitRegister Constants - Auszug aus der Datei ..\Includes\AutoItConstants.au3
AutoIt; OnAutoItExitRegister Constants Global Const $EXITCLOSE_NORMAL = 0 ; Natural closing. Global Const $EXITCLOSE_BYEXIT = 1 ; close by Exit function. Global Const $EXITCLOSE_BYCLICK = 2 ; close by clicking on exit of the systray. Global Const $EXITCLOSE_BYLOGOFF = 3 ; close by user logoff. Global Const $EXITCLOSE_BYSUTDOWN = 4 ; close by Windows shutdown.
Brainfuck
Alles anzeigenHKCU\Control Panel\Desktop Key Data type Range Default value AutoEndTasks REG_SZ 0|1 0 HungAppTimeout REG_SZ Milliseconds in decimal 5000 ( 5 seconds) WaitToKillAppTimeout REG_SZ Milliseconds in decimal 20000 (20 seconds) AutoEndTasks..................: https://technet.microsoft.com/de-de/library/cc978604.aspx HungAppTimeout................: https://technet.microsoft.com/de-DE/library/cc978614.aspx WaitToKillAppTimeout..........: https://technet.microsoft.com/de-DE/library/cc978624.aspx HKLM\SYSTEM\CurrentControlSet\Control Key Data type Range Default value WaitToKillServiceTimeout REG_SZ Milliseconds in decimal 20000 (20 seconds) WaitToKillServiceTimeout......: https://technet.microsoft.com/de-de/library/cc976045.aspx
Alle Klarheiten beseitigt? -
Das soll doch bestimmt nicht so aussehen, oder?
-
Rechtsklick zum Pausieren und Linksklick zum Abdrücken. Fällt da jemanden was auf?
Hehe.. ja!
Man kann nun das Hintergrundbild ändern
Super! Das wollte ich auch angesporchen haben, hat sich ja nun aber erledigt...