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. BLinz

Beiträge von BLinz

  • Windows-Sicherheit Dialog Passwort ändern auf Server 2008 aufrufen

    • BLinz
    • 27. Juni 2017 um 18:18
    Zitat von Sonderbaar

    Minimales Kennwortalter ist bei 0

    Woher hast du den Wert?

    Ich würde nur der Ausgabe von

    gpresult /h Ergebnis.html

    trauen. Der Befehl erstellt im aktuellen Verzeichnis eine Html-Datei - sieht aus wie der Bericht in der Gruppenrichtlinienkonsole.
    Und du musst den Befehl als ein betroffener Benutzer ausführen!
    Einen der nicht nebenbei Domänen-Admin ist.


    Zitat von Sonderbaar

    Das Problem gäbe es garnicht erst, wenn dieser scheiß Bubble von MS a) größer wäre und b) länger sichtbar wäre (dieser verschwindet nach ca. 3s)

    Na, dann in die Hände gespuckt und Programmiert. Du kannst ja das AD abfragen (gibt es bestimmt mehr als eine Möglichkeit) und dann selbst einen Dialog einblenden

  • Windows-Sicherheit Dialog Passwort ändern auf Server 2008 aufrufen

    • BLinz
    • 27. Juni 2017 um 12:49
    Zitat von Sonderbaar

    Ja wird er, allerdings darf der User (aus welchen Gründen auch immer, ich habe keine Ahnung warum) dass Passwort dann nicht mehr ändern.

    Wird eine Domänenrichtlinie / Gruppenrichtlinie sein => Minimum Password Age
    Die steht oft auf 1 Tag. Wenn die auf 0 ist darf man sofort wieder das Kennwort ändern. Ansonsten 24h warten.

  • Windows-Sicherheit Dialog Passwort ändern auf Server 2008 aufrufen

    • BLinz
    • 27. Juni 2017 um 12:44

    Mhh, es scheint keinen direkten rundll32 Aufruf oder ähnliches zu geben.

    Ich hab das mal (vor so 8 Jahren) mal anders gelöst. Der Benutzer musste das ganze in die von mir erstellte GUI eingeben,
    die hat nach Prüfung dann das Programm pspasswd.exe von der kostenlosen Sysinternals Tools Suite aufgerufen.
    Das hatte ich aber so umständlich gemacht weil die Benutzer aus Domäne A ihre Kennwörter in der neuen Domäne B setzen sollten.

    Du könntest auch mit der Active Directory UDF das Kennwort aus dem Programm selbst ändern: Active Directory Funktionen - Neue Version 1.4.6.0 freigegeben!

    Oder du rufst lokal net user Benutzername NeuesPasswort /domain auf.
    Der Admin darf das für alle Benutzer, ein Benutzer zumindest für sich selbst.

    Die ganze Prüfung ob das ganze den Anforderungen entspricht musst du dann natürlich selbst machen.
    net use teilt dir aber über den Rückgabecode mit ob es geklappt hat oder nicht, 0 ist ok und alles andere ein Fehler

  • Automatisiertes Ausführen eines AutoIT Scriptes - Aufgabenplannung / Autostart / Batch

    • BLinz
    • 26. Juni 2017 um 23:18

    Also so ganz zufällig programmiere ich seit etwa 5 Wochen (mit Pausen) auch genau so ein Tool für Performance-Messungen, unter anderen auch von Programmen die in einer Citrix Sitzung laufen.
    Hier mal wie ich die Probleme gelöst habe:

    • Autologin: Ich habe hier 11 Testrechner nur für die Messungen. Für jede habe ich eine Gruppenrichtlinie erstellt in welcher die entsprechenden Registry-Schlüssel für das Autologin gesetzt werden.
      Die Gruppenrichtlinie ist jeweils auf den Rechner beschränkt (bei Sicherheitsfilterung die Benutzer rauswerfen und das Computerkonto eintragen),
      Für jeden Rechner gibt es einen eigenen Benutzer
    • Autostart: Ich habe mir einen kleinen Installer geschrieben (inklusive Eintrag in die Registry und Uninstaller) der das ganze an die richtigen Stellen kopiert. Der Autostart selbst wird mit einem Shortcut den ich für alle Benutzer des Rechners im Autostart / Startup Ordner anlege. Da startet das Programm dann relativ spät - aber nach einem Reboot ist das genau das was ich will.
    • AutoIt
      Local $s_Startup = RegRead("HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders", "Common Startup")
      Local $s_Destop = RegRead("HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders", "Common Desktop")
      Local $s_Target = "C:\zAppMon\Console"
      
      
      ;Etwas Code zum Kopieren, Zugriffsrechte und registry-Schlüssel
      ; ...
      ; ...
      
      
      FileCreateShortcut($s_Target & "\zAppMonConsole.exe", $s_Startup & "\zAppMonConsole.lnk", $s_Target, "/autostart")
      FileCreateShortcut($s_Target & "\zAppMonConsole.exe", $s_Destop & "\zAppMonConsole.lnk", $s_Target)
      Alles anzeigen

      Einfach mal in der Registry ansehen

    • Citrix: Meine Testbenutzer bekommen von allen Applikationen ihre eigene Citrix-Verknüpfungen. In denen wird nicht direkt die Citrix-App gestartet sondern ein weiteres AutoIt-Programm ("Client"). Dieses startet dann erst die eigentliche Applikation - und kann diese dann komplett steuern (Handle auf Controls geht quasi immer - und damit Tasten/Zeichen senden sowie Mausklicks)
      Die Citrix Sitzung wird von der "Console" gestartet die auf dem Rechner läuft, in der Registry stehen alle "Favoriten" des aktuellen Citrix Client drin (also diejenigen, die sich der Benutzer anlegt), siehe
      HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall. Bei Citrix Einträgen muss dann das Programm aus ShortcutTarget starten, als Parameter dann den LaunchString angeben
    • AutoIt
      Local $a_CitrixShortcuts[1][6]
      $a_CitrixShortcuts[0][0] = 0
      $a_CitrixShortcuts[0][1] = "Keyname"
      $a_CitrixShortcuts[0][2] = "LaunchString"
      $a_CitrixShortcuts[0][3] = "ShortcutTarget"
      $a_CitrixShortcuts[0][4] = "Displayname"
      $a_CitrixShortcuts[0][5] = "DisplayIcon"
      While 1
      	$i_CitrixUninstallCounter = $i_CitrixUninstallCounter + 1
      	$s_CitrixUninstallKey = RegEnumKey("HKCU\Software\Microsoft\Windows\CurrentVersion\Uninstall", $i_CitrixUninstallCounter)
      
      
      	If @error <> 0 Then
      		ExitLoop
      	EndIf
      	If $s_CitrixUninstallKey = "" Then
      		ExitLoop
      	Else
      		If RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Uninstall\" & $s_CitrixUninstallKey, "LaunchString") <> "" Then
      				$a_CitrixShortcuts[0][0] = $a_CitrixShortcuts[0][0] + 1
      				ReDim $a_CitrixShortcuts[ $a_CitrixShortcuts[0][0] + 1 ][6]
      				$a_CitrixShortcuts[ $a_CitrixShortcuts[0][0] ][1] = $s_CitrixUninstallKey
      
      
      				For $i = 2 To 5 Step 1
      					$a_CitrixShortcuts[ $a_CitrixShortcuts[0][0] ][$i] = RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Uninstall\" & $s_CitrixUninstallKey, $a_CitrixShortcuts[0][$i])
      				Next
      			EndIf
      		EndIf
      	WEnd
      	For $i = 1 to $a_CitrixShortcuts[0][0] Step 1
      		_zLogging('├─► Citrix Shortcut #' & $i & ': "' & $a_CitrixShortcuts[$i][4] & '"' & @CRLF)
      	Next
      Alles anzeigen
    • Der "Client" auf dem Citrix-Server holt sich per WMI die IP von dem Rechner der die Sitzung aufgebaut hat und verbindet sich per TCP mit diesen.
    • Console und Client führen dann in Absprache die Tests durch
    • Die Messergebnisse schicke ich dabei an unseren Monitoring-Server (Zabbix-Server) um später die Daten für Auswertungen zu haben.

    Also Kurz: Autostart-Ordner war bei mir ausreichend!

  • [gelöst] Textlänge in Pixel ermitteln

    • BLinz
    • 26. Juni 2017 um 13:21

    _StringWidth, Breite eines Labels herausfinden (vor dem Erstellen)

    So etwas?

    Oder auf Deutsch: TextMeter

  • Beispiel.exe verhindert einen Neustart, Lösungsansatz?

    • BLinz
    • 13. Juni 2017 um 13:15
    Zitat von Simon09

    Interessanter Ansatz den möglichen Restart bewusst abzubrechen um es dann selbst besser handeln zu können. Ich versuche das mal umzusetzen. Wie genau gebe ich dem AdLibRegister am besten mit dass er nur x Minuten "lauscht"? In AutoIT gibt es ja soweit ich weiß keine Schleifen? Und wie genau greife ich den ReturnValue von shutdown.exe /a ab, um ihn in AutoIT weiterzuverwerten?

    Mein Beispiel war die Antwort auf diese Frage - auch wenn das AdlibRegister etc. fehlt.
    Und ich hatte es schon so verstanden das er "das andere Programm" abbrechen möchte das ihm da "querschießt"

    Ein Shutdown wird ggf. mit Vorwarnzeit initiiert und dementsprechend früh abgefangen werden.

    Die beste Lösung wäre sicherlich beides zu machen, prüfen ob es einen Shutdown gibt und ob das Programm ein einsprechendes Signal bekommt

  • Beispiel.exe verhindert einen Neustart, Lösungsansatz?

    • BLinz
    • 12. Juni 2017 um 18:16

    Da ich gerade was ähnliches gemacht habe:

    shutdown /a setzt den Exit-Code korrekt.


    AutoIt
    $iResult = ShellExecuteWait("shutdown", "/a")
    If $iResult = 0 then
       ; Er hat einen Neustart / Herunterfahren abgebrochen
    Else
       ; Gab nichts zum abbrechen
    EndIf

    Wie üblich steht die 0 für "Erfolgreich ausgeführt" und Werte ungleich 0 für "Fehler".

  • Stottern unter Windows 10

    • BLinz
    • 12. Juni 2017 um 13:06
    Zitat von olfibits

    Meine Empfehlung ist bei sowas immer ComboFix (https://www.bleepingcomputer.com/download/combofix/)
    Hat bei Software-, USB-Stick-Problemen, hängendem PC und allem anderen immer zuverlässig geholfen. Vielleicht hilft das, auch wenn die anderen Hilfestellungn in etwas andere Richtungen gehen :)

    Also einen Virenscan ... mrt.exe ist aber auch schon in Windows eingebaut.

    Als "Administrator der Familie" immer gerne genommen um Zeit zu gewinnen ... starten und somit einige Stunden Zeit für anderes gewonnen.

  • File to Base64 String Code Generator v1.20 Build 2020-06-05

    • BLinz
    • 6. Juni 2017 um 12:55
    Zitat von UEZ

    Die Beispiele habe ich nicht aktualisiert. :whistling:

    Nicht nur, dass $ghGDIPDll nun $__g_hGDIPDll ist, Load_BMP_From_Mem ist auch integriert -> _GDIPlus_BitmapCreateFromMemory().

    Danke für Info, ich hatte zwar gesucht ob die auch drin ist, war mir aber nicht sicher. Somit kann das erste Beispiel dramatisch gekürzt werden ...

  • Kleines Desktop-Spiel (ChipHunter)

    • BLinz
    • 5. Juni 2017 um 20:49

    Der "Schießen" Button ist bei mir das gelbe Warndreieck (winzig) in einem grauen Kasten ... das sollte doch bestimmt anders aussehen.

  • Active Directory Funktionen - Neue Version 1.5.0.0 freigegeben!

    • BLinz
    • 5. Juni 2017 um 20:43
    Zitat von chrissi

    dsquery group -samid role* -limit 0 | dsget group -memberof

    Das wären dann ja alle Gruppen die mit "role" beginnen, richtig? Dann hat @water ja schon die richtige Antwort gegeben.

  • File to Base64 String Code Generator v1.20 Build 2020-06-05

    • BLinz
    • 5. Juni 2017 um 20:38
    Zitat von UEZ

    Erstes Beispiel: File to Base64 String Code Generator v1.20 Build 2015-01-20

    Ich bin mal so dreist und behaupte das dieses Beispiel nicht mehr funktioniert (das hatte ich nämlich schon getestet)
    Er meckert Global Const $IMAGE_BITMAP = 0 an ... und die unbekannte Variable $ghGDIPDll (undeclared global variable)

    Ok, also mal suchen, müsste ich doch selbst hinbekommen ...

    Hier die korrigierte Variante des ersten Beispiels die nun funktioniert (also mit aktuellen AutoIt 3.3.14.2):

    AutoIt: Example_Icons.au3
    #include <buttonconstants.au3>
    #include <guiconstantsex.au3>
    #include <gdiplus.au3>
    #include <memory.au3>
    ;coded by UEZ 2011 / changed for AutoIt 3.3.14.4 BLinz 2017
    
    
    _GDIPlus_Startup()
    ;~ Global Const $IMAGE_BITMAP = 0
    Global Const $STM_SETIMAGE = 0x0172
    Global $msg
    Global Const $hGUI = GUICreate("Example", 600, 250)
    Global Const $idLogo = GUICtrlCreatePic("", 215, 20, 169, 68)
    Global Const $idButton = GUICtrlCreateButton("", 266, 150, 78 , 81, $BS_FLAT + $BS_BITMAP)
    
    
    Global Const $hButton = GUICtrlGetHandle($idButton)
    
    
    Global Const $Bmp_Logo = Load_BMP_From_Mem(AutoIt_Logo(), True)
    _WinAPI_DeleteObject(GUICtrlSendMsg($idLogo, $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_Logo))
    Global Const $Bmp_Button = Load_BMP_From_Mem(Merlin(), True)
    _WinAPI_DeleteObject(_SendMessage($hButton, $BM_SETIMAGE, $IMAGE_BITMAP, $Bmp_Button))
    _WinAPI_UpdateWindow($hButton)
    GUISetState()
    
    
    While True
        $msg = GUIGetMsg()
        Switch $msg
            Case $idLogo
                MsgBox(0, "Information", "The picture has been clicked!")
            Case $idButton
                MsgBox(0, "Information", "the button has been clicked!")
            Case $GUI_EVENT_CLOSE
                _WinAPI_DeleteObject($Bmp_Logo)
                _WinAPI_DeleteObject($Bmp_Button)
                _GDIPlus_Shutdown()
                GUIDelete($hGUI)
                Exit
        EndSwitch
    WEnd
    
    
    ;======================================================================================
    ; Function Name:        Load_BMP_From_Mem
    ; Description:          Loads an image which is saved as a binary string and converts it to a bitmap or hbitmap
    ;
    ; Parameters:           $bImage:    the binary string which contains any valid image which is supported by GDI+
    ; Optional:             $hHBITMAP:  if false a bitmap will be created, if true a hbitmap will be created
    ;
    ; Remark:               hbitmap format is used generally for GUI internal images, $bitmap is more a GDI+ image format
    ;                       Don't forget _GDIPlus_Startup() and _GDIPlus_Shutdown()
    ;
    ; Requirement(s):       GDIPlus.au3, Memory.au3 and _GDIPlus_BitmapCreateDIBFromBitmap() from WinAPIEx.au3
    ; Return Value(s):      Success: handle to bitmap (GDI+ bitmap format) or hbitmap (WinAPI bitmap format),
    ;                       Error: 0
    ; Error codes:          1: $bImage is not a binary string
    ;                       2: unable to create stream on HGlobal
    ;                       3: unable to create bitmap from stream
    ;
    ; Author(s):            UEZ
    ; Additional Code:      thanks to progandy for the MemGlobalAlloc and tVARIANT lines and
    ;                       Yashied for _GDIPlus_BitmapCreateDIBFromBitmap() from WinAPIEx.au3
    ; Version:              v0.97 Build 2012-01-04 Beta
    ;=======================================================================================
    Func Load_BMP_From_Mem($bImage, $hHBITMAP = False)
        If Not IsBinary($bImage) Then Return SetError(1, 0, 0)
        Local $aResult
        Local Const $memBitmap = Binary($bImage) ;load image  saved in variable (memory) and convert it to binary
        Local Const $len = BinaryLen($memBitmap) ;get length of image
        Local Const $hData = _MemGlobalAlloc($len, $GMEM_MOVEABLE) ;allocates movable memory  ($GMEM_MOVEABLE = 0x0002)
        Local Const $pData = _MemGlobalLock($hData) ;translate the handle into a pointer
        Local $tMem = DllStructCreate("byte[" & $len & "]", $pData) ;create struct
        DllStructSetData($tMem, 1, $memBitmap) ;fill struct with image data
        _MemGlobalUnlock($hData) ;decrements the lock count  associated with a memory object that was allocated with GMEM_MOVEABLE
        $aResult = DllCall("ole32.dll", "int", "CreateStreamOnHGlobal", "handle", $pData, "int", True, "ptr*", 0) ;Creates a stream object that uses an HGLOBAL memory handle to store the stream contents
        If @error Then SetError(2, 0, 0)
        Local Const $hStream = $aResult[3]
        $aResult = DllCall($__g_hGDIPDll, "uint", "GdipCreateBitmapFromStream", "ptr", $hStream, "int*", 0) ;Creates a Bitmap object based on an IStream COM interface
        If @error Then SetError(3, 0, 0)
        Local Const $hBitmap = $aResult[2]
        Local $tVARIANT = DllStructCreate("word vt;word r1;word r2;word r3;ptr data; ptr")
        DllCall("oleaut32.dll", "long", "DispCallFunc", "ptr", $hStream, "dword", 8 + 8 * @AutoItX64, _
                                               "dword", 4, "dword", 23, "dword", 0, "ptr", 0, "ptr", 0, "ptr", DllStructGetPtr($tVARIANT)) ;release memory from $hStream to avoid memory leak
        $tMem = 0
        $tVARIANT = 0
        If $hHBITMAP Then
            Local Const $hHBmp = _GDIPlus_BitmapCreateDIBFromBitmap($hBitmap)
            _GDIPlus_BitmapDispose($hBitmap)
            Return $hHBmp
        EndIf
        Return $hBitmap
    EndFunc   ;==>Load_BMP_From_Mem
    
    
    ;~ Func _GDIPlus_BitmapCreateDIBFromBitmap($hBitmap)
    ;~     Local $tBIHDR, $Ret, $tData, $pBits, $hResult = 0
    ;~     $Ret = DllCall($__g_hGDIPDll, 'uint', 'GdipGetImageDimension', 'ptr', $hBitmap, 'float*', 0, 'float*', 0)
    ;~     If (@error) Or ($Ret[0]) Then Return 0
    ;~     $tData = _GDIPlus_BitmapLockBits($hBitmap, 0, 0, $Ret[2], $Ret[3], $GDIP_ILMREAD, $GDIP_PXF32ARGB)
    ;~     $pBits = DllStructGetData($tData, 'Scan0')
    ;~     If Not $pBits Then Return 0
    ;~     $tBIHDR = DllStructCreate('dword;long;long;ushort;ushort;dword;dword;long;long;dword;dword')
    ;~     DllStructSetData($tBIHDR, 1, DllStructGetSize($tBIHDR))
    ;~     DllStructSetData($tBIHDR, 2, $Ret[2])
    ;~     DllStructSetData($tBIHDR, 3, $Ret[3])
    ;~     DllStructSetData($tBIHDR, 4, 1)
    ;~     DllStructSetData($tBIHDR, 5, 32)
    ;~     DllStructSetData($tBIHDR, 6, 0)
    ;~     $hResult = DllCall('gdi32.dll', 'ptr', 'CreateDIBSection', 'hwnd', 0, 'ptr', DllStructGetPtr($tBIHDR), 'uint', 0, 'ptr*', 0, 'ptr', 0, 'dword', 0)
    ;~     If (Not @error) And ($hResult[0]) Then
    ;~         DllCall('gdi32.dll', 'dword', 'SetBitmapBits', 'ptr', $hResult[0], 'dword', $Ret[2] * $Ret[3] * 4, 'ptr', DllStructGetData($tData, 'Scan0'))
    ;~         $hResult = $hResult[0]
    ;~     Else
    ;~         $hResult = 0
    ;~     EndIf
    ;~     _GDIPlus_BitmapUnlockBits($hBitmap, $tData)
    ;~     Return $hResult
    ;~ EndFunc   ;==>_GDIPlus_BitmapCreateDIBFromBitmap
    
    
    Func AutoIt_Logo()
        Local $AutoIt_Logo
        $AutoIt_Logo &= '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'
        $AutoIt_Logo &= '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'
        $AutoIt_Logo &= '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'
        $AutoIt_Logo &= 'cy5hgUkAqHEOcABh1yoABOpwVLGVSVcAZYpQ1AQvsBMAfYoZ69AEe4AABTHzZgA0ABsA4AsP0D+WCrMAHmBImEED/eUAEPEKAC5Qr50AsAqkCpDX8AkABkALbxAGofAARVJrC0FzsPcAYFi0kLW+KgUAV7kGwvCmLQAABxcLbAPRD9IAig0JkADkmQEA4LAuGogXHQAAA85gLntAGOMAxBSD0AEJMAYAd4AXCTAANDAAdEtwBTKQBF8AAAlYME6EAQMAotMEAgADIzAAAAlQB/81lpIA/wAEqUAkrQMAHIMQGom3BCAA0wH6kgSD0L0A3QoHQNQQ0uAAC+zgAs7gDAgAgAb+iKqVe7kAW1APiCABUQsAOJ/bDVpgA2EAAAG0wKsQywkAczALZ9AJzuAAAiwgAObDU6AA6Q9CYAXqMAEALgAHwICzWYMADxoHtuyAAScA1gS+QIMIgAAAVtACPoABOzAAAVFQryEsAIsAdG4u8AL4W68AL6DCTNByJvAAuFaAADjQYggAMAE+IABgsAcATHAbWfOnGwAAtkF8bdzRBEAAELZEOwEUCwcAMqB4jDsMGXAAvy7gAssgAnwA4HR6EASWCwEAAQxBUXs4CIwACFTAwDNQAHoAIAW4hpk0cMYA7DBnLmQ2WUMAAzS8AzIgA0AA/+CzYvMAzuAAC4icyEAgeZkA0AQykAHfIgAAMhAAe9AIwIAAyIi8yIuUCQgABQSJfMpA8AAA8NNyrmECviAACZLgCwKwA2AA8ACpMHkzkQkAD6AOkhDJigwABoqXA00QB7MAcsq/LMYOIQYAauADL9ACLeAAAgiAAmuMqkEA0Kqw8Az18EAAP7DN1xNHEAAACzNQCOnVx6sAsAzOzA7zwQ8ATUB3AuFIlfQASEP8D+5cSXgAQCQttwdxkM8Ae3BQTPDOP+sAnRH2zpMHGcIAjAd7AAL5HAcAILAH69YxYTEAz5GUbSGSA1cAgG30PFwPkQMA0rADPsAOzgwAzfybCAqgB4IAMA4zAAungAsAXPQETxBHzxAADm4wDkGgBz0A/4CNa9AF5twAAi8Axhk8m7IAswRAHdSbw0gAQh3Uf5QDNMcABOc5c0VX1EAAHRY50NRF/UcAjDRESs0E58MA1Ljx01PNFlEA7dRUndHVIAAAHe3MLUAEZ1AAA+jwCuSgB4UAYNJuEA6nMNcA4QDTqCDOt/AACokwByKwAdwAcM4+sANxcJ4AQw0SUR3WG5EAA4pddIgtFGIAYA0CAAfs8AIAzayPJUBvPUAADkcQBIWACp4A7dmFUAhHMFMA61UDQxABE6AA0ywAB4K91AMABCyR8dg7kAEAAEDZPrwMUcAABYuQCK7QA7cAcATADdy3QA4ArwANiwANSFAAgzqNpxggA3EA0EevDduxXQ0AQCAJPsACto0AxstwATeARW0A/wANsiAL0PAA3WiABDzwDZ0A0AKTzQI+EL4AILDURifd3SEARA8gALTNAuwAkN8vMAEemg4Av9AFQ9AFZ/AACzywDVbQwy8AwA4sAAAZAAwAARAIWR3d8p0AMplgDWAALgAAwAL4PdnOIAwAy0AEII4ANMAAnwmu4AxuAkAA8NznU9gT/iYAslMNpAAEJoAAAT6Q4Rue3zgAnt8aDgAzLAAAKa7O89LYLS4AIlGdCdUQCAEAIAMmsA4Z4AMANQ4AUM7jPpAAAetgApv83C4AdAXsPOTAUuQAV6AKpPCsQLAAA8AgAGb+yZMA3GiBAORaLuQAXI4pi50JV/AA5aqgCk8KAqQAAAKBoArqfD4Ac66+Ev7mmNIA1HI+5+syRHMAIO4rgC7ojF4AEIp92IxddIoA3eiUXumWfukAmJ7pmr7pnB4AEAA7'
        $AutoIt_Logo  = _Base64Decode($AutoIt_Logo)
        Local $tSource = DllStructCreate('byte[' & BinaryLen($AutoIt_Logo) & ']')
        DllStructSetData($tSource, 1, $AutoIt_Logo)
        Local $tDecompress
        _WinAPI_LZNTDecompress($tSource, $tDecompress)
        $tSource = 0
        Return Binary(DllStructGetData($tDecompress, 1))
    EndFunc   ;==>AutoIt_Logo
    
    
    Func Merlin()
        Local $Merlin
        $Merlin &= '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'
        $Merlin &= 'OZ54QIDDNkMgcVa9lHDvBwQEII8AgJTwgB0gM0LrCTzIYIo5eqSwRAgQpPKKBFNk45QxU9grQSpePNBAAvYAckAJhgT/Me0G2DhhxwMQXDGLEEdssccm1dSjwAWAOJWP1GsHAUoKLOAiAAGAfAABDzFggI0VL8hTwgEh5KIKOCxgkkwwCqzd9lD1XKG2AvXU0kEf65RiD+d7LwHHCBj8wEPPPYsgzO6DYOLwvb3o1AwuqdwbDSCLALNFKJvrvXcKJzABxxQ9AwKIACLkMUwfHUACgU8SQBA9TJu8fy8BS3BRxg0JGJA38iFIhCAYcADzAYIA9hDAEgrghlgIIgQPs9cUQPASKDQAEK94xQU+IAB9+EEK+gjAA37nPa354AAESOEBE2iAFKTDBwnImk8uIAAtgOsk14DBGlpggFQcwAAzGEIB/xjAgAgIIAQh8N4Bp2APbqWQhQxoQToYIAAIlGACj1jDGm6IQxjokAcG8MCqBlCAASTgAYK4QhLNRwABuPF3bTTAAwbgh0dM4AFQgMYadMhFlCTiC87gRTh80AI/BKAABQiACEyRDDWu0I1uTKEADGCALWjhEUawBS9EsQYy9BEliDhFIVCAAmV8oQD6KEADFAkJVSgiBJKkJCTdKII9uIALjyDDKNsAh6y0hgp0gEMDBnCNRNwgFLmYxSweKUsB5AN9odCDC4iQDnLg4DiKIgoSspCBFWQgDvIgphkSUYoOzCIZv3OjLEUQDEWAAhQdWAcR4ODNFVSAHKgaChLekf+BDNThFqMYwASkwYYOdEAIwRCBOilJSXsoQhUdoAEQhtGINERhBbdAgVOQgALWkCEDUBhAA1hAAyEIQRiQZChDH2AARUSUBtJoRBTYsYI4oGA5Q7GGP7LzhSTgogAzWMAiPOEJA6T0AUhl6BKEIQSJSmEP7BhCGvxRCKdQog47hQY0GABULTTAAyJg6UojgNQHiOAFQtCDHtjAg058oQ7kSII3skKJRtAiCZxApBa0UIAEkHWsESArS9vxggSMQg9wSActCqGLuc7FDsDgxDV24AO+BuCvcoxAAjYb2Ah4wAMJ8EAlYjEEdXDiHogIzDDigYw+mIEFPkikX8u62QD/bPa2tdVHA4aADH54ZC6IYEE/+vAJcLghtgywLVKXkIAAONe5t3UuV4fAiXT8di6XQMYnzrEFNPA1uZu9Ai48EAB93OC5zyViAaSgjk5cNytg4IcdzDAIHlR2iLb1QB4wUQkSVGIR50UvA8iohXLkMjAqSAcXCmAGO6DBAmVMrn5pkIsjAMETAZYuVwtQYGc8IjDGMMEEGpACalgAwikYgD5G4QkgsIEGpbgBEZMbAPVy2AgWSAeIRVyACczAAnwtgDxKAYQOsOHIeZDxjGes13RYAFdzMYQFJkDlGfghyAyoxB7McGQagKMS+mBAmJkM1HQYQQsI3usMZqCFKyNyacCyWAQbznEEM7hAyWSeQJuvoALNwAIKUNBCC6b85hvAgQ2J2MEO5LFkG0/AAipILXNOAQYLxBaRN1hEOxqgygWseQYNaEBQfZCCFHxIBW8otTwYPYAUGGITIIi1rGP9BplB6da4TkhAAAA7'
        Return Binary(_Base64Decode($Merlin))
    EndFunc   ;==>Merlin
    
    
    Func _WinAPI_LZNTDecompress(ByRef $tInput, ByRef $tOutput, $iBufferSize = 0x800000)
        Local $tBuffer, $Ret
        $tOutput = 0
        $tBuffer = DllStructCreate('byte[' & $iBufferSize & ']')
        If @error Then Return SetError(1, 0, 0)
        $Ret = DllCall('ntdll.dll', 'uint', 'RtlDecompressBuffer', 'ushort', 0x0002, 'ptr', DllStructGetPtr($tBuffer), 'ulong', $iBufferSize, 'ptr', DllStructGetPtr($tInput), 'ulong', DllStructGetSize($tInput), 'ulong*', 0)
        If @error Then Return SetError(2, 0, 0)
        If $Ret[0] Then Return SetError(3, $Ret[0], 0)
        $tOutput = DllStructCreate('byte[' & $Ret[6] & ']')
        If Not _WinAPI_MoveMemory(DllStructGetPtr($tOutput), DllStructGetPtr($tBuffer), $Ret[6]) Then
            $tOutput = 0
            Return SetError(4, 0, 0)
        EndIf
        Return $Ret[6]
    EndFunc   ;==>_WinAPI_LZNTDecompress
    
    
    ;~ Func _WinAPI_MoveMemory($pDestination, $pSource, $iLenght)
    ;~     DllCall('ntdll.dll', 'none', 'RtlMoveMemory', 'ptr', $pDestination, 'ptr', $pSource, 'ulong_ptr', $iLenght)
    ;~     If @error Then Return SetError(5, 0, 0)
    ;~     Return 1
    ;~ EndFunc   ;==>_WinAPI_MoveMemory
    
    
    Func _Base64Decode($input_string)
        Local $struct = DllStructCreate("int")
        Local $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $input_string, "int", 0, "int", 1, "ptr", 0, "ptr", DllStructGetPtr($struct, 1), "ptr", 0, "ptr", 0)
        If @error Or Not $a_Call[0] Then Return SetError(1, 0, "")
        Local $a = DllStructCreate("byte[" & DllStructGetData($struct, 1) & "]")
        $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $input_string, "int", 0, "int", 1, "ptr", DllStructGetPtr($a), "ptr", DllStructGetPtr($struct, 1), "ptr", 0, "ptr", 0)
        If @error Or Not $a_Call[0] Then Return SetError(2, 0, "")
        Return DllStructGetData($a, 1)
    EndFunc   ;==>_Base64Decode
    Alles anzeigen

    War nur das ersetzen von $ghGDIPDll durch $__g_hGDIPDll und das auskommentieren von Funktionen die zwischenzeitlich in der Standard GDIPlus.au3 vorhanden sind (Teile sind ja auch von dir).


    Also ist Load_BMP_From_Mem das was ich brauche ... mit diesem _WinAPI_DeleteObject / _SendMessage Konstrukt.

    Danke, ich teste mal ein wenig
    BLinz

    PS: Was mache ich denn beim SyntaxHighlight falsch? Alles grau ...

  • File to Base64 String Code Generator v1.20 Build 2020-06-05

    • BLinz
    • 5. Juni 2017 um 14:47

    Ich bräuchte mal ein Beispiel für Icons (.ICO) die ich massenhaft verwende.
    Ich nutze bisher nicht GDI+ sondern erstelle die Buttons ganz normal mit GUICtrlCreateButton und setze das Icon mit GUICtrlSetImage.

    Ich habe mir zwar einiges hier im Forum schon angesehen ... und früher (>4 Jahre) mal eine "resources.au3" dafür genutzt die nicht mehr läuft.

    Für ein kurzes Code-Beispiel wäre ich sehr dankbar.

    Danke
    BLinz

  • Stottern unter Windows 10

    • BLinz
    • 5. Juni 2017 um 14:29

    Um zum Problem zurück zu kommen:

    Aus Erfahrung kann ich dir sagen das es nur eine Kleinigkeit ist.
    Die große Kunst ist es, diese Kleinigkeit zu finden - oder aber das Problem erfolgreich (und dauerhaft) zu umschiffen.

  • Stottern unter Windows 10

    • BLinz
    • 4. Juni 2017 um 16:32
    Zitat von alpines

    Mein Windows 7 werde ich allerdings erst ersetzen, wenn Microsoft ein Betriebssystem rausbringt, was nur annährend die selbe Qualität hat wie Windows 7 sie für mich hat.

    Naja, hast ja noch bis zum 14. Januar 2020 Zeit. Da - angeblich - nach Windows 10 nichts mehr kommen soll hast du ja noch genug Zeit für Entscheidungen.
    Ich muss schon aus beruflichen Gründen immer am Ball bleiben. Ich habe auch meinen Spaß mit den neueren Versionen (und das war ohne Sarkasmus gemeint)

  • Kleines Desktop-Spiel (ChipHunter)

    • BLinz
    • 4. Juni 2017 um 11:04
    Zitat von Musashi

    Ich baue in meine Skripte daher immer einen Skalierungsfaktor ein, um dies halbwegs auszugleichen.

    Cooler Gedanke ... muss doch gleich mal meine GUIs nach und nach anpassen!

  • Stottern unter Windows 10

    • BLinz
    • 4. Juni 2017 um 10:57
    Zitat von Xorianator

    Das ist doch der Punkt. Windows tut was Anderes als Linux, und dass ich mich weigere meine Hardware zu tauschen, habe ich doch eigentlich schon gut genug zum Standpunkt gebracht.
    Was passend gemacht werden muss, mit Allem, so wie es derzeit ist, ist Windows. Nicht meine Hardware.

    Du sollst deine Hardware nicht tauschen sondern durch abstöpseln etc. den Fehler eingrenzen.
    Hier wurden viele Vorschläge gemacht für einen Anfang einer möglichen Fehlersuche.
    Durch "Zauber Zauber Zauber" wird die Kiste nun auch nicht plötzlich fehlerfrei laufen. Vielleicht nach dem nächsten Windows-Update.
    Jeder Hersteller den wir wegen Support kontaktieren prüft als erstes ob wir auf der aktuellen Firmware/Software/Treiber laufen. Wenn nein sollen wir das erst einmal machen.
    Schreib doch mal was für ein Mainboard, CPU und Grafikkarte du hast (genaue Typen!), ich bin recht gut darin Google die richtigen Fragen zu stellen (also die Suchergebnisse Stück für Stück einzugrenzen),
    eventuell findet sich da was zu deinem Problem jenseits von "Microstutter"


    Zitat von BugFix

    BLinz: Bei deiner systematischen Fehlersuche hast du aber vergessen: Immer nur eine Änderung/Überprüfung vornehmen und dann erneut testen, ansonsten hast du u.U. den Fehler "weggesucht", was dir zwar temporär hilft, aber nicht wirklich sinnvoll ist, falls das Problem erneut auftritt.

    Ähh sorry, das hatte ich als Selbstverständlichkeit vorausgesetzt. Gerne auch die "Hälfte/Hälfte" Vorgehensweise - 50% der Geräte abgklemmen, prüfen ob der Fehler noch da ist, dann die anderen 50%. Im Anschluß die 50% noch mal wieder halbieren und so weiter.


    Zitat von alpines

    Oder man benutzt Windows7 weiter, weil es einfach besser ist :D

    Nö, das ist doch noch eine schöne Umschreibung für <Augenzwinkern>"Ich habe keine Lust mich mit dem neuen zu befassen"</Augenzwinkern>
    Ständig haben wir neue Android oder iOS Versionen (mit neuen Icons und Bedienungen), die Linux-Distributionen wechseln auch alle Naselange den Desktop.
    Trotzdem würde ich deshalb kein Android 2.3 oder ein Ubuntu 12.04 mehr einsetzen.
    Und alles kann man nach seinen Vorstellungen anpassen - wenn man will oder meint es tun zu müssen. Ich nutze z.B. Start10 statt des Windows 10 Startmenüs und Cortana wurde zum schweigen verdammt.

  • Stottern unter Windows 10

    • BLinz
    • 3. Juni 2017 um 21:52
    Zitat von Xorianator

    Nein! Immer noch, das Setup hat unter Win 8.1 funktioniert, und warum sollte ich Win 8 testen? Das hat ja gar keinen Sinn oder Relevanz. Ich brauche (bzw. möchte) ja Windows 10, nicht Windows 8, 8.1, oder 7.

    Würde ich ja auch nicht testen :) Sondern wenn mit einem Jungfreulichen W10. Apropo, welche W10 Version ist es denn? Edition und Versionsnummer. Welche Hardware?
    Schon was von den anderen Punkten? Steckverbindungen am und im Rechner? Trennen aller Peripherie-Geräte? Mal alles bis auf die Boot-Platte entfernen? CPU Temp/Check/HW-Info? BIOS? Mall alle RAM Module bis auf eines, dann ggf. RAM Tauschen? Windows nutzt den RAM anders als Linux. Was sagt der Gerätemanager? SMART-Infos der Festplatten geprüft?

    Stell dir deinen Rechner als Gartenschlauch vor aus dem kein Wasser kommt. Gut, erst prüft man den Wasserhahn, dann die Düse am Schlauchende. Wenn es beides nicht war muss man leider den ganzen verdammten Schlauch ablaufen.

  • Stottern unter Windows 10

    • BLinz
    • 3. Juni 2017 um 21:31
    Zitat von Xorianator

    Müsste sagen, dass ich überrascht wäre, wenn ich es nicht gewusst hätte: Keine, wirklich gar keine Probleme. Nicht mal den Hauch eines Lags. Kann damit sämtliche Peripherie usw ausschließen, wie gesagt, ich bin mir nahezu sicher, dass das Problem ein Windows 10 exklusive Problem ist.

    Jein. Es könnte ein Beweis sein das es nur ein W10 Problem ist. W8 steht noch aus. Und selbst wenn W8 geht ...
    Oder ein W10 Treiberproblem. Um das "alles mal abziehen" wirst du nur herumkommen wenn du das Problem vorher findest.

    Meine Regel Nr. 1 bei IT-Problemen: "Daran kann es nicht liegen! GIBT ES NICHT!"
    Faulheit bei der Fehlersuche wird bestraft. Fehler durch Schlussfolgerungen statt ausprobieren zu finden ebenfalls.

    Erst vor einigen Monaten gab es ein riesiges Problem bei einem Kunden, der ganze Mailserver-Cluster hing.

    8 Leute haben sich die Config-Dateien angesehen - und für Fehlerfrei befunden, davon 2 vom Herstellersupport. Keiner der 8 ist auf den Vorschlag eingegangen die Konfiguration neu zu erstellen.
    Der 9. hat die Config einfach noch mal komplett neu erstellt und es ging.

    Weil die Konfig-Dateien im ANSI-Format waren statt in UTF8 konnten diese nicht gelesen werden. Ein Woche im Projekt verloren.

    Zudem prüfst du (scheinbar?) das einfachste nicht: Schon in die Ereignisanzeige geschaut?
    Windows-Taste drücken und einfach "Ereignis" eintippen.

    BLinz

    PS: Ich hoffe mein Ton kommt nicht falsch rüber. Aber ich sitze oft beim Kunden wo etwas nicht geht, ich mir alles ansehe und mir ständig einer die Schulter lugt und erklärt das er das schon geprüft hätte und es daran nicht liegen könne.

  • Kleines Desktop-Spiel (ChipHunter)

    • BLinz
    • 3. Juni 2017 um 21:21

    Mhh, es fehlen noch Punktabzüge für das Danebenschießen. Der Punktestand ergibt sich somit nur durch die Spielzeit.

    Und die Highscore-Liste im 80er Jahre Style (3 Buchstaben!)

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™