1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. alpines

Beiträge von alpines

  • Frage zur Gui bzw GUICtrlSetState

    • alpines
    • 8. März 2017 um 22:13
    Zitat von Rigobert

    Global $arFuellung[$Anzahl]
    For $i = 0 To UBound($arFuellung) -1
    If $i = 0 Then
    $wahl[0][1] = 'Nichts gewählt'
    EndIf
    GUICtrlSetState($arFuellung[$i], 80)
    Next
    For $i = 0 To UBound($arFuellung) -2 Step 2
    GUICtrlSetState($arFuellung[0], 80)
    GUICtrlSetState($arFuellung[0], $GUI_CHECKED)
    Next

    Alles anzeigen

    Dieser Teil will sich mir absolut nicht erschließen.

    Du erstellst ein globales Array mit einer bestimten Anzahl und versuchst dann die States zu setzen.
    Schau mal mit _ArrayDisplay() nach ob das Array auch wirklich voll ist, normalerweise müsste es wegen der Neu-Deklaration leer sein.

    Außerdem ist die 2. For-Schleife mir ebenfalls schleierhaft, du gehst durchs Array aber veränderst nur den Index 0.

  • _FTP_FilePut im Passiv mode => Fehler 12003

    • alpines
    • 8. März 2017 um 22:11

    Ist denn eine entsprechende Portfreigabe im Router aktiviert worden?

  • Frage zur Gui bzw GUICtrlSetState

    • alpines
    • 8. März 2017 um 21:37

    Was soll deiner Meinung nach bei einem State von 80 denn passieren? Sind das die Konstanten zusammenaddiert?

  • Habe ein Switch Case Problem

    • alpines
    • 8. März 2017 um 21:36
    Zitat von Damion

    Das wars schon, oder immer noch Denkknoten!?

    Nein so nicht ganz. Die Id ist ja nicht dein 0ter Arrayindex.
    Du müsstest in einer Schleife das Array durchgehen und schauen ob [$aktuellerIndex][0] gleich der MsgId ist.

    Zitat von Damion

    Was ist die SB ??

    Das ist die ShoutBox im Portal.

  • Habe ein Switch Case Problem

    • alpines
    • 8. März 2017 um 21:06

    Na, du switcht doch die Variable $nMsg von GUIGetMsg und schaust ob das die selbe ist wie in $Menue[0][0] to $Menue[5][0].
    Wäre es da nicht naheliegend einfach die MsgId zu nehmen und damit das Array durchzugehen?

  • Win XP Bildschirmschonersperre/Willkommensbildschirm anmelden

    • alpines
    • 8. März 2017 um 20:03
    Zitat von MCshinok

    Weiter so und vielen Herzlichen Dank!

    Dafür sind wir rund um die Uhr hier! :)

  • Win XP Bildschirmschonersperre/Willkommensbildschirm anmelden

    • alpines
    • 8. März 2017 um 19:36
    Zitat von bazii

    1. Möchtest Du gar nicht erst, dass der Bildschirmschoner aktiv wird?

    2. Möchtest Du den Sperrbildschirm (Bildschirmschoner) per Script deaktivieren?

    Zitat von MCshinok

    hauptsache der pc ist gesperrt und wird durch mein skrit entsperrt.

    Er will es dadurch entsperren. Bei dem Standardbildschirmschoner würde ich mir allerdings keine allzugroßen Hoffnungen machen.
    Man kann sicherlich einen eigene Desktopsperre bauen (je nach dem wie sicher es sein muss) um sie mit dem Script zu deaktivieren, dann kann man komplett auf den von Windows verzichten.

  • Win XP Bildschirmschonersperre/Willkommensbildschirm anmelden

    • alpines
    • 8. März 2017 um 18:20

    Ist das der Standard Bildschirmschoner oder einer von dem Heizungsserverprogramm?
    Wenn es der Standard Bildschirmschoner ist bezweifle ich das du da überhaupt was eingeben kannst.

  • Habe ein Switch Case Problem

    • alpines
    • 8. März 2017 um 13:31

    Habe ich in der SB doch schon erwähnt. Case $aArray[0] To $aArray[UBound($aArray) - 1] mit der Voraussetzung das die Controls in der Reihenfolge erstellt sind.

  • Remote CMD mit Session Key

    • alpines
    • 7. März 2017 um 20:13
    Zitat von Candyland

    @alpines meinte mal zu mir es sei wichtig eine art Formatierung über das script zu legen, damit es leichter zu lesen ist & ordentlicher erscheint.
    Ich habe versucht mir einen Kopf darüber zu machen wie ich den Code in absätze einteile. Soetwas habe ich vorher noch nie getan & hätte deshalb gerne ein paar tipps von euch.

    Es ist einfacher als es sich wirklich anhört.

    Was ich hier sehr häufig bei Anfängen beobachte ist das sie entweder ihren Code extrem weit auseinanderziehen und aus den benötigten vier Codezeilen bei einer Funktion 58 machen oder sie quetschen alles immer untereinander ohne mal eine Zeile frei zu lassen obwohl das die Lesbarkeit erhöht und das Wiedereinfinden zu einem späteren Zeitpunkt vereinfacht.

    Das hier ist zum Beispiel GRAUENHAFTER Code, sowas sollte man nie produzieren:

    Es fehlen gute Variablenbezeichnungen, es sind viel zu viele Includes enthalten und alles ist untereinander gequetscht.

    Spoiler anzeigen
    AutoIt
    #include <ButtonConstants.au3>
    #include <ComboConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 227, 162, 192, 124)
    $Label1 = GUICtrlCreateLabel("Zahl 1:", 40, 16, 37, 17)
    $Label2 = GUICtrlCreateLabel("Zahl 2:", 40, 48, 37, 17)
    $Input1 = GUICtrlCreateInput("", 80, 16, 121, 21)
    $Input2 = GUICtrlCreateInput("", 80, 48, 121, 21)
    $Label3 = GUICtrlCreateLabel("Rechenart:", 16, 80, 57, 17)
    $Combo1 = GUICtrlCreateCombo("Addition", 80, 80, 121, 25)
    GUICtrlSetData(-1, "Subtraktion|Multiplikation|Division|Modulo")
    $Button1 = GUICtrlCreateButton("Rechnen", 16, 104, 185, 41)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    
    
    While 1
    	$nMsg = GUIGetMsg()
    	Switch $nMsg
    		Case $GUI_EVENT_CLOSE
    			Exit
    		Case $Button1
    			$zahl1=GUICtrlRead($Input1)
    			$zahl2=GUICtrlRead($Input2)
    			$rechenart=GUICtrlRead($Combo1)
    			If $rechenart="Addition" Then
    				$ergebnis=$zahl1+$zahl2
    			ElseIf $rechenart="Subtraktion" Then
    				$ergebnis=$Zahl1-$zahl2
    			ElseIf $rechenart="Multiplikation" Then
    				$ergebnis=$Zahl1*$zahl2
    			ElseIf $rechenart="Division" Then
    				$ergebnis=$Zahl1/$zahl2
    			ElseIf $rechenart="Modulo" Then
    				$ergebnis=Mod($zahl1,$Zahl2)
    			EndIf
    			MsgBox(0,"ergebnis:",$ergebnis)
    
    
    	EndSwitch
    WEnd
    Alles anzeigen

    Der Code hier ist formatiert. Er ist in Absätzen geschrieben: Sachen die zusammengehören sind zusammen.
    Die Variablenbenennungen sind gut und man erkennt was in ihnen gespeichert wird und wie man sieht konnte man ohne großen Aufwand so ziemlich jedes Include wegfallen lassen.

    Spoiler anzeigen
    AutoIt
    $hGUI = GUICreate("Form1", 227, 162, 192, 124)
    
    
    GUICtrlCreateLabel("Zahl 1:", 40, 16, 37, 17)
    GUICtrlCreateLabel("Zahl 2:", 40, 48, 37, 17)
    
    
    $hZahl1 = GUICtrlCreateInput("", 80, 16, 121, 21)
    $hZahl2 = GUICtrlCreateInput("", 80, 48, 121, 21)
    
    
    GUICtrlCreateLabel("Rechenart:", 16, 80, 57, 17)
    $hRechenart = GUICtrlCreateCombo("Addition", 80, 80, 121, 25)
    GUICtrlSetData(-1, "Subtraktion|Multiplikation|Division|Modulo")
    
    
    $hRechnen = GUICtrlCreateButton("Rechnen", 16, 104, 185, 41)
    GUISetState(@SW_SHOW)
    
    
    While Sleep(10)
    	Switch GUIGetMsg()
    		Case -3
    			Exit
    
    
    		Case $hRechnen
    			$iZahl1 = GUICtrlRead($hZahl1)
    			$iZahl2 = GUICtrlRead($hZahl2)
    			$sRechenart = GUICtrlRead($hRechenart)
    
    
    			$fErgebnis = 0
    
    
    			Switch $sRechenart
    				Case "Addition"
    					$fErgebnis = $iZahl1 + $iZahl2
    
    
    				Case "Subtraktion"
    					$fErgebnis = $iZahl1 - $iZahl2
    
    
    				Case "Multiplikation"
    					$fErgebnis = $iZahl1 * $iZahl2
    
    
    				Case "Division"
    					$fErgebnis = $iZahl1 / $iZahl2
    
    
    				Case "Modulo"
    					$fErgebnis = Mod($iZahl1, $iZahl2)
    			EndSwitch
    
    
    			MsgBox(0, "Ergebnis:", $fErgebnis)
    	EndSwitch
    WEnd
    Alles anzeigen


    Wie man sieht kann man, wenn man wenig Zeit und Aufmerksamkeit beim Schreiben des Codes aufbringt, hübschen Code schreiben den man auch nach langer Zeit versteht.
    Wartungsarbeiten sind wesentlich einfacher und es macht einfach mehr Spaß.

  • Schachuhr

    • alpines
    • 7. März 2017 um 15:15

    Der Text der da gepastet wurde ist Base64-Encoded. Hier mal das ganze dekodiert und korrekt formatiert im Anhang da sonst die Website zu lange laden würde.

    Dateien

    Counter.au3 772,71 kB – 222 Downloads
  • Fehlerfall Abfangen

    • alpines
    • 7. März 2017 um 14:54
    Zitat von JohnLocklay

    Jetzt habe ich mir gedacht es wäre nicht schlecht das wenn der Pfad
    zum Programm als ungültig erkannt wird

    Das musst du dann selber prüfen ob der Pfad überhaupt korrekt ist. Sollte der Pfad nicht korrekt sein taucht ja eine MsgBox von Windows auf das das Programm nicht gefunden werden konnte.
    Wenn du Fenstertitel vergleichen willst, dann kannst du dir deren Titel mit WinGetTitle holen. Verwendest du als Titel bei WinGetTitle "[active]", so returnt er dir den Titel des aktuell aktiven Fensters.

  • Schachuhr

    • alpines
    • 7. März 2017 um 14:11
    Zitat von AutoMit

    ansonsten vertröste ich meine Bekannte

    Warum nicht einfach was schlichtes was funktioniert? Sollte keine 2 Stunden dauern.
    Du kannst es ja später noch schicker machen wenn du die Zeit hast.

  • Schachuhr

    • alpines
    • 7. März 2017 um 13:51
    Zitat von AutoMit

    Ich habe mehrere Scripte ausprobiert und die Schwierigkeit scheint vor allem darin zu bestehen, dass die Anzeige beim Runterzählen der Sekunden flackert. Das erzeugt Augenkrebs

    Wenn man das richtig macht dann flackert das nicht. Wenn du auf Gdi+ setzt solltest du einen Buffer verwenden.

    Zitat von AutoMit

    Beim Versuch, das zu testen, gibt es folgende Fehlermeldung:


    Variable used without being declared.:
    DllCall($ghGDIPDll, "uint", "GdipSetPenLineJoin", "hwnd", $hPen, "int", 2)
    DllCall(^ ERROR

    Das liegt daran das einige Variablen in UDFs mit steigender AutoIt-Version umbenannt wurden um Konflikte mit selbstgeschriebenen Scripten zu vermeiden.
    Die $ghGDIPDll wurde umbenannt in $__g_hGDIPDll.

    So funktioniert das ganze schon wieder:

    Er macht das ganze mit einem Buffer (BitmapCreateFromGraphics, ImageGetGraphicsContext) und schreibt da alles rein. Wenn er fertig mit dem zeichnen ist schreibt er alles im Buffer auf das GraphicsElement und cleart anschließend den Buffer. So wird nicht nacheinander alles auf die Graphics gezeichnet sondern alles in einem Rutsch welches das flackern unterbindet.

    AutoIt
    #include <GDIPlus.au3>
     #include <Date.au3>
     #include <GUIConstantsEx.au3>
     #include <WindowsConstants.au3>
    
    
     Opt('MustDeclareVars', 1)
     Opt('GUIOnEventMode', 1)
    
    
     _GDIPlus_Startup()
    
    
     Global $iWidth = 500
     Global $iHeight = 140
    
    
     Global $days, $hour, $hour2, $Mins, $secs
    
    
     Global $iColor_BG = 0xFF008000
     Global $iColor_TextFill = 0xFFFFAA00
     Global $iColor_TextFill2 = 0xFFFF0000
     Global $iColor_TextFill3 = 0xFF0000FF
     Global $iColor_TextFill4 = 0xFF353535
     Global $iColor_TextBorder = 0xFFA00000
    
    
     Global $hGui = GUICreate("GDI+", $iWidth, $iHeight)
     GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
     Global $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGui)
     Global $hBmpBuffer = _GDIPlus_BitmapCreateFromGraphics($iWidth, $iHeight, $hGraphics)
     Global $hGfxBuffer = _GDIPlus_ImageGetGraphicsContext($hBmpBuffer)
     _GDIPlus_GraphicsSetSmoothingMode($hGfxBuffer, 2)
     _GDIPlus_GraphicsClear($hGfxBuffer, $iColor_BG)
    
    
     Global $hPen = _GDIPlus_PenCreate($iColor_TextBorder, 3)
     DllCall($__g_hGDIPDll, "uint", "GdipSetPenLineJoin", "hwnd", $hPen, "int", 2)
     Global $hBrush = _GDIPlus_BrushCreateSolid($iColor_TextFill)
     Global $day, $hour, $hour2, $Mins, $secs
    
    
    
    
     GUIRegisterMsg($WM_PAINT, "WM_PAINT")
     GUIRegisterMsg($WM_ERASEBKGND, "WM_ERASEBKGND")
    
    
     GUISetState()
    
    
     Global $hMatrix = _GDIPlus_MatrixCreate()
     Global $tLayout = _GDIPlus_RectFCreate(0, 0, 0, 0)
     Global $hFormat = _GDIPlus_StringFormatCreate()
     Global $hFamily = _GDIPlus_FontFamilyCreate("Arial")
     Global $hPath = _CreatePath("88 - 88:88:88")
    
    
    
    
     Global $sText, $sTextOld
     Global $fStep = 0
    
    
     While 1
     _TicksToTime(_DateDiff('s', _NowCalc(), "2018/01/01 00:00:00") * 1000, $hour, $Mins, $secs)
     If $hour >23 Then
     $days = StringFormat("%02i", $hour / 24); volle Tage
     $hour = $hour - ($days*24); volle Tage abziehen
     Else
     $days = 0
     EndIf
     $sText = StringFormat("%02i - %02i:%02i:%02i", $days, $hour, $Mins, $secs)
    
    
     If $sText <> $sTextOld Then
     $sTextOld = $sText
     DllCall($__g_hGDIPDll, "uint", "GdipResetPath", "hwnd", $hPath)
     DllCall($__g_hGDIPDll, "uint", "GdipAddPathString", "hwnd", $hPath, "wstr", $sText, "int", -1, "hwnd", $hFamily, "int", 1, "float", 100, "ptr", DllStructGetPtr($tLayout), "hwnd", $hFormat)
     DllCall($__g_hGDIPDll, "uint", "GdipTransformPath", "hwnd", $hPath, "hwnd", $hMatrix)
     EndIf
    
    
     $fStep += 0.01
     _Draw(Abs(Sin($fStep)))
     Sleep(10)
     WEnd
    
    
    
    
     Func _Draw($fScale)
     _GDIPlus_GraphicsClear($hGfxBuffer, $iColor_BG)
    
    
     DllCall($__g_hGDIPDll, "uint", "GdipTranslateWorldTransform", "hwnd", $hGfxBuffer, "float", -$iWidth / 2, "float", -$iHeight / 2, "int", False)
     DllCall($__g_hGDIPDll, "uint", "GdipScaleWorldTransform", "hwnd", $hGfxBuffer, "float", $fScale, "float", $fScale, "int", True)
     DllCall($__g_hGDIPDll, "uint", "GdipTranslateWorldTransform", "hwnd", $hGfxBuffer, "float", $iWidth / 2, "float", $iHeight / 2, "int", True)
    
    
     DllCall($__g_hGDIPDll, "uint", "GdipDrawPath", "hwnd", $hGfxBuffer, "hwnd", $hPen, "hwnd", $hPath)
     DllCall($__g_hGDIPDll, "uint", "GdipFillPath", "hwnd", $hGfxBuffer, "hwnd", $hBrush, "hwnd", $hPath)
    
    
     DllCall($__g_hGDIPDll, "uint", "GdipResetWorldTransform", "hwnd", $hGfxBuffer)
    
    
     _GDIPlus_GraphicsDrawImage($hGraphics, $hBmpBuffer, 0, 0)
     EndFunc ;==>_Draw
    
    
    
    
    
    
     Func _CreatePath($sText)
    
    
     Local $tBounds = _GDIPlus_RectFCreate(0, 0, 0, 0)
    
    
     Local $aResult = DllCall($__g_hGDIPDll, "uint", "GdipCreatePath", "int", 0, "int*", 0)
     If @error Or Not IsArray($aResult) Then Return SetError(1, 1, False)
     Local $hPath = $aResult[2]
    
    
     DllCall($__g_hGDIPDll, "uint", "GdipAddPathString", "hwnd", $hPath, "wstr", $sText, "int", -1, "hwnd", $hFamily, "int", 1, "float", 100, "ptr", DllStructGetPtr($tLayout), "hwnd", $hFormat)
     DllCall($__g_hGDIPDll, "uint", "GdipGetPathWorldBounds", "hwnd", $hPath, "ptr", DllStructGetPtr($tBounds), "hwnd", 0, "hwnd", 0)
    
    
    
    
     _GDIPlus_MatrixTranslate($hMatrix, -DllStructGetData($tBounds, "X"), -DllStructGetData($tBounds, "Y"))
     _GDIPlus_MatrixScale($hMatrix, $iWidth / DllStructGetData($tBounds, "Width"), $iHeight / DllStructGetData($tBounds, "Height"), True)
     DllCall($__g_hGDIPDll, "uint", "GdipTransformPath", "hwnd", $hPath, "hwnd", $hMatrix)
    
    
     Return $hPath
     EndFunc ;==>_CreatePath
    
    
    
    
    
    
    
    
    
    
     Func WM_PAINT($hWnd, $uMsgm, $wParam, $lParam)
     _GDIPlus_GraphicsDrawImage($hGraphics, $hBmpBuffer, 0, 0)
     Return $GUI_RUNDEFMSG
     EndFunc ;==>WM_PAINT
    
    
     Func WM_ERASEBKGND($hWnd, $uMsgm, $wParam, $lParam)
     _GDIPlus_GraphicsDrawImage($hGraphics, $hBmpBuffer, 0, 0)
     Return True
     EndFunc ;==>WM_ERASEBKGND
    
    
     Func _Exit()
     _GDIPlus_FontFamilyDispose($hFamily)
     _GDIPlus_StringFormatDispose($hFormat)
     DllCall($__g_hGDIPDll, "uint", "GdipDeletePath", "hwnd", $hPath)
     _GDIPlus_PenDispose($hPen)
     _GDIPlus_BrushDispose($hBrush)
     _GDIPlus_GraphicsDispose($hGfxBuffer)
     _GDIPlus_BitmapDispose($hBmpBuffer)
     _GDIPlus_GraphicsDispose($hGraphics)
     _GDIPlus_Shutdown()
     Exit
     EndFunc
    Alles anzeigen
  • Schachuhr

    • alpines
    • 7. März 2017 um 13:28
    Zitat von AutoMit

    Leider ist die _CountDown.au3 von BugFixdown.

    Er hat doch das Script gepostet in seinem Beitrag. Kopiers doch einfach raus?

  • Schachuhr

    • alpines
    • 7. März 2017 um 13:03
    Zitat von AutoMit

    (PS: kurze Frage zu den Forumsregeln - darf man per Link Bilder einer anderen Seite einfügen?)

    Ja. Externe Links sind nur in den Signaturen beschränkt und müssen von Mods/Admins abgesegnet werden.

    Selbst wenn es sowas bereits gibt wäre das doch eine gute Übung, dass selber zu programmieren oder?
    Es gibt sicherlich schon Schachuhren als Programme (aber eher in anderen Sprachen).

  • AutoIt - Das Multitalent

    • alpines
    • 7. März 2017 um 10:07
    Zitat von bazii

    Na ja, jetzt kommt es darauf an, was Du unter Techno verstehst

    Zitat von Cape-City

    Dein UgaUgaUgaUgaBummBumm sind DubStep Elemente.

    https://www.youtube.com/watch?v=J5pI6ZNQ6Jc

    Das ist der Song und das ist kein Techno. Dubstep würde ich jetzt nicht zu 100% sagen. Das ist eher dieser neumodische EDM-Schnickschnack.
    Sollte jetzt jemand um die Ecke gelaufen kommen und behaupten das Techno doch EDM sei dann vergesse ich mich!

  • Automatische Installation von OCS Inventory

    • alpines
    • 7. März 2017 um 09:57

    Ich weiß nicht ob du die ControlClicks richtig verwendest.
    Der 3. Parameter ist die controlId und die wird normalerweise in dem Stil angegeben: "[CLASS:Button; INSTANCE:1]" oder "[ID:5]".
    AutoIt-WindowInfo hat ein Feld bei Summary mit "Advanced Class". Das kannst du meistens eigentlich kopieren.

  • AutoIt - Das Multitalent

    • alpines
    • 6. März 2017 um 22:45
    Zitat von bazii

    Die Techno-Musik ist ffurchtbar scheusslich für mich!

    In welchem Universum hast du in irgendeiner Stelle in dem Video Techno-Musik gehört?

  • AutoIt - Das Multitalent

    • alpines
    • 6. März 2017 um 19:38
    Zitat von Cape-City

    Mal schauen ob man nachträglich noch einen Text einblenden kann.

    Musst jetzt nicht alles perfekt und genau richtig haben. Ich wollte es nur gesagt haben da normalerweise von Calltips geredet wird und ich Lookahead so gut wie nie lese.

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™