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

Beiträge von wolkenloser

  • *.dll-Dateien

    • wolkenloser
    • 27. Januar 2006 um 20:57

    Hi Markus,

    meist kommst Du über das Problem zur DLL.

    Beispiel Du suchst nach einer Möglichkeit irgendetwas zu machen und stellst fest, das geht mit Autoit nicht mit Boardmitteln. Dann Googelt wan für gewöhnlich nach dieser Funktionaltät und findet möglicherweise den Hinweiß das man das mit xyz.dll machen kann.

    Wenn Du glück hast, hatt das gleiche schon mal jemand gelößt, wenn nein kannst Du selber versuchen die DLL mit den entsprechenden Parametern zu füttern um als Rückgabe, das zu bekommen was Du suchst.

    Mir fällt gerade die Funktion ein, die ein Bild in die Zwischenablage kopieren kann. Autoit kann das nur mit TEXT. Wenn Dich das interessiert guck dir hier den Threat mit dem Screenshot-Tool an (was noch nicht fertig ist....ups).

  • HOTFIXCHECK für SP2

    • wolkenloser
    • 27. Januar 2006 um 20:48

    ..hab ich da gerad etwas übersehen ?
    egal

    HOTFIXCHECK für XP mit SP2:

    C
    #include <file.au3>
    #include <Process.au3>
    #include <Date.au3>
    #include <Constants.au3>
    #include <Array.au3>
    
    
    Opt("RunErrorsFatal",0)
    Opt("TrayIconDebug", 1); zeigt am trayicon welchen Befehl  das Script gerade Ausführt
    $hotfix_inifile = @TempDir & "\hotfix.ini"
    $hotfix_sp1_dir = "\server\!Patch_pakete\Windows\XP\spk1\WinBoard.org_UpdatePack_1.17_XP\Data"
    $hotfix_sp2_dir = "\server\!Patch_pakete\Windows\XP\spk2\WinBoard.org_UpdatePack_2.12_XP\Data"
    
    
    = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix"
    $reg_hotfix = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates\Windows XP\SP3"
    
    
    
    
    dim $KB_read
    dim $hotfixfind
    dim $hotfixfile
    dim $search2
    dim $abbruch
    dim $hotfix_dir
    dim $mylist
    dim $Form1
    dim $anzahl_Patches
    dim $strArr
    Dim $mapdrive
    dim $installierte_Patches
    Global $zaehler
    
    
    
    
    ;--- HOTKEY für Abbruch -----
    HotKeySet("!{ESC}","abbruch")
    
    
    
    
    ; --- Programm ablauf
    OS_CHECK()
    Hotfix_auslesen_xp()
    Hotfix_delta_installieren()
    
    
    
    
    ;--- Funktionen
    Func OS_CHECK()
    
    
    If @OSTYPE   = "WIN32_WINDOWS"  Then Exit; keine WIN 9x Unterstützung
    If @OSVersion  =   "WIN_2000"   Then Exit; keine WIN2000 Unterstützung
    If @OSVersion = "WIN_XP" Then
    if @OSServicePack = "Service Pack 1" then $hotfix_dir = $hotfix_sp1_dir
    if @OSServicePack = "Service Pack 2" then $hotfix_dir = $hotfix_sp2_dir
    EndIf
    EndFunc 
    
    
    Func Abbruch()
    EnvSet("Abbruch",1)
    MsgBox(4096,"!!! ACHTUNG !!!","Die Update- Aktion wird nach dem nächsten Patch abgebrochen",4)
    EndFunc 
    
    
    Func Hotfix_auslesen_xp()
    
    
    FileDelete($hotfix_inifile) ; Neustart
    FileChangeDir ($hotfix_dir) ; Pfad zu den ausgepackten Hotfixes
    $search2 = FileFindFirstFile("*-x86-*.exe"); Suchmuster für Patchfiles
    If $search2 = -1 Then
    MsgBox(0, "Error", "Keine Patchfiles gefunden - Bitte das Quellverzeichnis überprüfen")
    Run("Explorer " & $hotfix_dir)
       Exit 
    
    
    Else
    ;--- Liste der Hotfixes im Hotfixverzeichnis nach Muster KB?????? erstellen
    While 1
     $hotfixfind = FileFindnextFile($search2)  ; erstes Patchfile;~ MsgBox(0, "", $hotfixfind) 
      if @error = 1 Then ExitLoop
     $KB_STRING = StringSplit($hotfixfind,"-x86-",1) ;KB Nummer isolieren 1;~ MsgBox(0, "", $KB_STRING[1]) 
     $KB_STRING2 = StringSplit($KB_STRING[1],"-",1) ;KB Nummer isolieren 2;~ MsgBox(0, "", $KB_STRING2[2]) 
     IniWrite($hotfix_inifile,"HOTFIX",$KB_STRING2[2],1);KB Nummer in INI-File schreiben
    WEnd
    FileClose($search2); Close the search handle
    EndIf
    
    
    
    
    ;--- bereis installierte Patches wieder aus der INI-Datei löschen
    $y = 1; Startwert für $y'ten Eintrag
    
    
    Do
     $prgkey_read = RegEnumKey($reg_hotfix, $y);Liest den Namen der installierten KB's aus der Registry aus.
    ;~    MsgBox(0,"Hotfix",$prgkey_read)
      if  $prgkey_read > "" then 
       IniDelete($hotfix_inifile,"HOTFIX",$prgkey_read); entfernet die installierten Patches aus der INI-Datei
    
      EndIf 
     $y = $y + 1
    Until $prgkey_read= "";alle Keys ausgelesen
    
    
    EndFunc
    
    
    
    
    
    
    Func Liste_anzeigen()
    ;--- GUI erzeugen - Patchliste
    $Form1 = GUICreate("Update Übersicht", 120, 440, 10 , 10) 
    $mylist = GUICtrlCreateList("",5 ,15, 110, 430) 
    GUISetState()
    
    
    $deltafile = IniReadSection($hotfix_inifile,"HOTFIX")
    For $i = 1 To $deltafile[0][0]
     GUICtrlSetData($mylist,$deltafile[$i][0])
       Next
    EndFunc
    
    
    
    
    
    
    Func Hotfix_delta_installieren()
    
    
    If DriveGetType($hotfix_dir) = 'Network' And DriveGetType($hotfix_dir) <> 'Unknown' Then
    $mapdrive = DriveMapAdd("*", $hotfix_dir)
    EndIf
    ;~ DriveMapAdd("B:", $hotfix_dir)
    FileChangeDir( $mapdrive)
    
    
    ;--- neue Methode mit 1D Array
    $var = IniReadSection($hotfix_inifile,"HOTFIX"); INI Datei in 2D Array einlesen
    If @error Then 
       exit_error_func()
    Else
    ;--- ARRAY von 2D nach 1D wandeln, Thanks To ARI
     $anzahl_Patches = $var[0][0]
     For $i = 1 To $var[0][0]
      $strArr = $strArr & '|' & $var[$i][0]
     Next
     
     If StringLeft($strArr , 1) = '|' Then
      $strArr = StringTrimLeft($strArr, 1)
     EndIf
     
     $arrNewArr = StringSplit($strArr, '|')
     _ArraySort( $arrNewArr)
     
     
    ;--- $hotfix_inifile sortiert zurückschreiben
     FileDelete($hotfix_inifile); erst löschen
     For $i = 1 To $arrNewArr[0]
       IniWrite($hotfix_inifile,"HOTFIX",$arrNewArr[$i],1)
      Next
     
     
    ;--- sortiertes Array - Patches nacheinander installieren
     For $i = 1 To $arrNewArr[0];$arrNewArr[0] entspricht der Anzahl der zu instalierenden Patches
    
       Liste_anzeigen()
       $zaehler= $i
    
       $search = FileFindFirstFile("*" & $arrNewArr[$i] & "*"); Suche nach dem Patch mit der KB-Nummer
        If @error Then ExitLoop
       $deltafile = FileFindNextFile($search)   ; Name des kompletten Files finden
      ;~ MsgBox(0,"",$deltafile)
       FileClose($search)
       SplashTextOn("Windowsupdate",$deltafile & " wird jetzt installiert", 500, 50, @DesktopWidth/2-250, 10)
       RunWait($deltafile & ' -u -z')
       IniDelete($hotfix_inifile,"HOTFIX",$arrNewArr[$i]); installieren Patch aus der INI-Datei entfernen
       SplashOff()
       GUICtrlDelete($mylist)
       GUIDelete($Form1)
    
       $var2 = EnvGet("abbruch")      ; IF (Abbruch Variable durch HOTKEY ausgelößt) THEN Abarbeitung beenden
        if $var2 == 1 Then 
         MsgBox(4096,"Windowsupdate", "Das Update wird auf Anforderung abgebrochen" & @LF &  "Beim nächsten LOGIN wird an dieser Stelle angeknüpft",4)
         exitfunc()
        EndIf
    
      Next
    EndIf
    
    
    
    
    
    
    
    
    EndFunc 
    
    
    Func exitfunc()
    Run($mapdrive & "\qchain.exe") 
    EnvSet
    DriveMapDel($mapdrive)
    MsgBox(0,"!!! Bitte Computer neustarten !!!","Es wurden " & $zaehler & " von " & $anzahl_Patches & " Updates installiert " & @CR & @CR &  "Abbhänigkeiten wurden geprüft um sicherzustellen, dass nach dem Neustart des Computers nur die neuesten Versionen einer Datei installiert wurde." & @CR & @CR & "!!! Bitte Computer neustarten !!!")
    Exit 
    EndFunc 
    
    
    
    
    Func exit_error_func()
    DriveMapDel($mapdrive)
    MsgBox(4096,"FEHLER","Es ist ein Fehler beim WINDOWSUPDATE aufgetreten, bitte informieren Sie ihren Administrator",5)
    Exit 
    EndFunc
    Alles anzeigen
  • HOTFIXCHECK für SP2

    • wolkenloser
    • 27. Januar 2006 um 20:46

    Hallo,

    Ich habe in den letzten Tagen mit Hilfe von ari auf Windows-unatteded ein Script entwickelt das eine ähnliche Funktion wie ein SUS Server abbildet, allerdings ohne Server.
    Das Ganze ist recht einfach aber effektiv gehalten.
    Man kann hiermit eine Vielzahl von Rechnern innerhalb kurzer Zeit patchen und zwar egal welche Patches bereits installiert wurden.
    Aufgrund von unterschiedlicher Namensgebung und verschiedener Varianten der Ablage der Hotfix Informationen der Patches für XP mit Service Pack1, ist hier erstmal nur die Funktion für XP mit Service Pack2 integiert.

    Alles was man braucht ist eine Sammlung der entpackten Patches die man installieren will. Ich habe z.B das letzte Paket von Winboard.org zugrundegelegt.
    Das muß man entpacken und den Ordner wo die Patches liegen in das Script als Quell-Pfad angeben und schon kann's losgehen.

    Manch einer könnte sich jetzt fragen: wozu das ganze dann kann ich doch gleich ein solches Paket installieren.

    Nutzen wird es demjenigen bringen, der mehrere Rechner mit unterschiedlichen Hotfixständen hat und diese auf möglichst einfache weise aktuell halten will.
    Ein großer Vorteil ist die Geschwindigkeit mit der Überprüft wird, ob es noch nicht installierte Patches gibt. Wenn ich z.B die INSTALL.CMD des Updatepacks ausführe, dauert es schon einige Minuten bis man angezeigt bekommt, das alle Patches schon installiert sind.
    Mit diesem Script dauert das gleiche ca. 1-2 Sekunden, so das man diese Abfrag auch in einem täglichen Loginscript abfragen kann, ohne das es wirklich stört.

    Guck es Euch bei Interesse mal an, es ist recht gut auskomentiert und somit hoffendlich nachfollziehbar warum an welcher Stelle was gemacht wird.

    Ich habe vor das auch noch für XP - SPK1 zu erweitern falls jemand hier Interesse bekundet

    Anbei noch ein Screenshot, das Script dann im nächsten posting....moment...wo ist den der Button geblieben...mhm.. dann kein Screenshot..

  • GUICtrlCreateList -> Eintrag löschen

    • wolkenloser
    • 25. Januar 2006 um 18:19
    Zitat

    Original von peethebee

    Edit: sehr viel einfacher ist es, ein eindimensionales Array zu sortieren, also einfach die Werte der ersten Dimension in ein neues Array kopieren.

    peethebee

    Daran habe ich auch gedacht, aber wie geht das denn nun schon wieder ?

    Kann es sein das ein Array max 64 Einträge haben darf.
    dann geht es sowie so nicht.....

  • GUICtrlCreateList -> Eintrag löschen

    • wolkenloser
    • 25. Januar 2006 um 18:16

    das mit der Datei hat nicht geklappt.

    Hier mal eine Beispiel:

    Code
    [HOTFIX]
    KB898458=1
    KB908521=1
    KB885835=1
    KB890859=1
    KB893066=1
    KB886677=1
    KB899587=1
    KB900930=1
    KB884020=1
    KB898461=1
    KB888113=1
    KB890047=1
    KB896423=1
    KB894391=1
    KB901214=1
    KB887472=1
    KB900485=1
    KB908519=1
    KB890046=1
    KB885836=1
    KB900725=1
    KB899591=1
    KB899588=1
    KB910437=1
    KB885894=1
    KB887742=1
    KB893756=1
    KB873339=1
    KB890175=1
    KB885523=1
    KB887797=1
    KB896428=1
    KB896424=1
    KB884883=1
    KB886185=1
    KB893086=1
    KB888302=1
    KB896358=1
    KB905749=1
    KB890831=1
    KB902400=1
    KB885222=1
    KB905414=1
    KB899589=1
    KB886716=1
    KB905915=1
    KB898900=1
    KB912919=1
    KB901017=1
    KB907865=1
    Alles anzeigen
  • GUICtrlCreateList -> Eintrag löschen

    • wolkenloser
    • 25. Januar 2006 um 18:06

    das Array erstelle ich mit

    $var = IniReadSection($hotfix_inifile,"HOTFIX")

    das Ergebnis ist ein 2 Dimensionales Array.

    Könntest Du mir mal ein BSP für den richtigen Syntax geben (nicht den aus der Hilfe, der funktioniert nicht)


    ich häng mal ne INI Datei zum Probieren an.

  • GUICtrlCreateList -> Eintrag löschen

    • wolkenloser
    • 25. Januar 2006 um 16:16

    Danke für den Denkanstoß

    Ich mache das jetzt mit einer Inidatei :)
    Geht prima, aber ich habe da noch ein Problem.
    Die Einträge müssen sortiert sein.

    Also brauche ich eine Möglichkeit die Einträge einer INI Datei auszulesen und dann sortiert wieder wegzuschreiben.

    hast Du da auch was für mich ?

    Hier mein Code

    Code
    Func GUI()
    
    $Form1 = GUICreate("Liste", 185, 440, 10 , 10)
    $mylist = GUICtrlCreateList("",15 ,15, 160, 430)
    GUISetState()
    
    
    $var = IniReadSection($hotfix_inifile,"HOTFIX")
    If @error Then 
    ;~     MsgBox(4096, "", "Fehler beim lesen der Datei:" & $hotfix_inifile)
    Else
        For $i = 1 To $var[0][0]
    ;~      MsgBox(4096, "", "Key: " & $var[$i][0] & @CRLF & "Value: " & $var[$i][1])
    			GUICtrlSetData($mylist,$var[$i][0])
        Next
    EndIf
    
    
    EndFunc
    Alles anzeigen
  • Problem mit FileWriteLine

    • wolkenloser
    • 25. Januar 2006 um 14:01

    oder hier nachfragen :)

  • AutoItGUIBuilder

    • wolkenloser
    • 25. Januar 2006 um 13:59

    Du musst in der Libary in der die Funktion steht in der betreffenden Zeile (steht beides in der Fehlermeldung) einfach auskommentieren (;)

    Wobei eigendlich die betreffend Funktion beim einspielen der BETA Version getauscht werden müßte. Ich weiß aber nicht ob das automatsich passiert

    Vielleicht ist das bisher nur niemanden aufgefallen ??

    Eigendlich sollte man solche Fehler in englischen Forum posten, dann sollten die Entwickler die Libaries angepassen.

  • GUICtrlCreateList -> Eintrag löschen

    • wolkenloser
    • 25. Januar 2006 um 13:53

    hat keiner einen TIP ?

  • Problem mit FileWriteLine

    • wolkenloser
    • 25. Januar 2006 um 11:52

    nimm einfach
    '
    anstelle von
    "

    Code
    FileWriteLine ( 'C:\test.txt', 'testtext("abcdefgh.testtext", "testext"); ')
  • GUICtrlCreateList -> Eintrag löschen

    • wolkenloser
    • 25. Januar 2006 um 08:51

    Hi Leute,

    Ich fülle eine LIST mit einer Schleife.

    Kann mir einer veraten wie ich geziehlt einen Eintag aus der Liste wieder löschen kann ?


    BSP:
    $mylist = GUICtrlCreateList("erster eintrag", 176,32,121,97)
    GUICtrlSetData($mylist,"nächster eintrag")
    GUICtrlSetData($mylist,"eintrag3")
    GUICtrlSetData($mylist,"eintrag4")


    Jetzt will ich "eintrag3" wieder entfernen.

    Leider gibts kein GUICtrl_DELETE_Data($mylist,"eintrag3").


    Wer weiß wie es geht ?

  • AutoItGUIBuilder

    • wolkenloser
    • 24. Januar 2006 um 20:58
    Zitat

    Original von Markus
    Leider hab ich irgendwie einen Fehler mit der compilten Version. Die *.au3 Version geht, die *.exe nicht, da kommt ein "function name error".

    Hi,
    Welche Function ?
    Soweit ich weiß sind seit der 0.94 die Funktionen DLLSTRUCT_DELETE (o.ä.) rausgeflogen sind

  • AutoItGUIBuilder

    • wolkenloser
    • 23. Januar 2006 um 22:57

    Hi
    Sieht soweit erstmal gut aus, aber irgendwie raff ich das nicht.

    Ich versuche eine Button zu erstellen, das klappt soweit. Doch wenn ich da ein paarmal drauf geklickt habe ist er nur noch mit der Umrandung zu sehn und im Baufester werden die CONTOL VERÄNDERN Felder aktiv.
    Da komm ich dann nicht mehr raus.....

  • info zu pc

    • wolkenloser
    • 23. Januar 2006 um 21:45

    Guter Job,

    das werden einige bestimmt gut brauchen können!
    Den Tip mit der Grafikkarte kann ich gerade gut gebrauchen :)

  • Versionsverwaltung

    • wolkenloser
    • 21. Januar 2006 um 19:46

    Ich zumindest etwas gefunden was hilfreich ist.

    Bei Scite steht in den AU3 Optionen in Zeile14:

    backup.files=0

    Wenn man den Wert ändert werden zumindest entsprechend der Zahl BAK Dateien angelegt.

    Wenn ich das richtig verstehe ist dahinter ja auch nur irgendein Script, Vielleicht kann mann das ja so anpassen das wir das bekommen was gewünscht ist.

    Jetzt fehlt das Passende Konzept:

    Vielleicht könnte man ja eine Versionsvariable einführen.
    beim Speichern sollte dann eine Abfrage kommen, ob die Versionsnummer nach einem vorgegebenen Schema "hochgezählt" werden soll.
    Entsprechend wird die Variable angepasst und das letzte Script bekommt im Dateinamen die Vorhergehende Versionsnummer.
    So hat das aktuelle Scrpt immer den gleichen Namen, ohne Versionsnummer, dei steht aber in der Variablen.


    könnt Ihr mir noch folgen ?! :-)))

  • Neue Sektion

    • wolkenloser
    • 20. Januar 2006 um 17:31

    Na, alles was man so bekommt, wie die UDF Sektion von Windows-Unatended.de eben.

    Vielleicht fallen uns ja auch noch ein paar andere nützliche Features ein ....

  • Versionsverwaltung

    • wolkenloser
    • 20. Januar 2006 um 15:01

    Hi
    Wer kennt das nicht:
    Man entwickelt ein Script und macht ein paaar weitreichende änderungen. Je nach Umpfang des Scripts merkt man aber leider nicht, das eine ander Funktion auf einmal nicht mehr funktioniert.

    Jetzt wäre es sehr nützlich wenn man eine Automatische Versionsverwaltung hätte und man entsprechend ein paar Schritte zurück könnte...............wenn mann doch nur auf den Code von letzter Woche zurückgreifen könnte.....?!?


    Hat jemand da ein funktionierendes Konzept ???

  • Neue Sektion

    • wolkenloser
    • 20. Januar 2006 um 14:56

    Hallo, aus aktuellem Anlass die Frage/Bitte:
    Könennw ir hier eine Filebase für UDF´s usw... zu schaffen.

    Im Unattended Forum geht es gerade um die verknüpfung der Autoit Sektion mit diesem Forum, was ich auch begrüßen würde.
    Uns fehlen allerdings noch ein paar nützliche Features !

  • Userspace für Screenshots usw....

    • wolkenloser
    • 20. Januar 2006 um 14:53

    Hallo,

    diese Frage geht in erster Linie an GUNFOOD (bist Du im Urlaub ?)

    Können wir es hier so einrichten das man die Möglichkeit hat Screenshots hier direkt hochladen kann, ohne exta Webspace zum verlinken benutzen zu müssen ?

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™