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

Beiträge von Scritch

  • Messagebox in GUI

    • Scritch
    • 8. April 2011 um 12:02

    Ich möchte gerne noch eine Schleife einbauen, die prüft ob das Laufwerk eingebunden wurde. Und wenn es eingebunden wurde, soll die Meldung im GUI kommen, ohne das halt ein weiteres Fenster aufploppt.

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GUIListBox.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <File.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt("GUIOnEventMode", 1)

    [/autoit] [autoit][/autoit] [autoit]

    $Form1 = GUICreate("Netzlaufwerke", 307, 141, 192, 110)

    [/autoit] [autoit][/autoit] [autoit]

    $Buchstabe = GUICtrlCreateGroup("Buchstabe", 16, 16, 81, 113)
    $buchstabe = GUICtrlCreateList("", 32, 32, 49, 84)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlSetData(4, "x:|y:|z:")

    [/autoit] [autoit][/autoit] [autoit]

    $pcname = GUICtrlCreateGroup("YF-Nummer", 104, 16, 97, 57)
    $yf = GUICtrlCreateInput("yf7sl", 112, 40, 81, 21)
    GUICtrlCreateGroup("", -99, -99, 1, 1)

    [/autoit] [autoit][/autoit] [autoit]

    $freigab = GUICtrlCreateGroup("Freigabe", 208, 16, 81, 113)
    $freigabe = GUICtrlCreateList("", 224, 32, 49, 84)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlSetData(10, "c$|d$|e$")

    [/autoit] [autoit][/autoit] [autoit]

    $einbinden = GUICtrlCreateButton("Einbinden", 104, 80, 100, 20, $WS_GROUP)
    GUICtrlSetData($einbinden, "Einbinden")
    GUICtrlSetOnEvent($einbinden, "einbinden")

    [/autoit] [autoit][/autoit] [autoit]

    $oeffnen = GUICtrlCreateButton("Laufwerk öffnen", 104, 105, 100, 20, $WS_GROUP)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState()
    ;Wenn eingebunden, kann gleich geöffnet werden

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_exit")
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    ;Case $msg = $ButtonDrucker
    ; MsgBox(0,"Test",GUICtrlRead($cList))
    EndSelect
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    func einbinden()
    Global $buchstabe1 = GUICtrlRead($buchstabe)
    Global $freigabe1 = GUICtrlRead($freigabe)
    Global $yf1 = guictrlread($yf)
    DriveMapAdd($buchstabe1, "\\" & $yf1 & "\" & $freigabe1)
    EndFunc

    [/autoit]
  • Messagebox in GUI

    • Scritch
    • 8. April 2011 um 11:36

    Moin, moin,

    ich brauche eine Messagebox in meinem GUI. Dabei möchte ich nicht, dass sich die Nachricht in einem separatem Fenster öffnet, sondern direkt im GUI angezeigt wird. Geht das?

  • Gezielt Prozesse starten/stoppen

    • Scritch
    • 6. April 2011 um 10:06

    Moin, moin,

    ich stehe mal wieder vor eonem kleinen Problem. Und zwar möchte ich auf einem entfernten Rechner Dienste starten/stoppen/Autostarttyp ändern.

    Mit

    [autoit]

    ProcessList

    [/autoit]


    kann ich mir die laufenden Prozesse samt PID ja anzeigen lassen. Soweit, sogut. Habe ich den richtigen namen eines Prozesses weiss ich auch schon wie ich den Prozess starte und stoppe etc.

    [autoit]

    Local $commandName = "psservice \\" & $pcname[$z] & " setconfig Remote-Registrierung demand"
    ConsoleWrite($commandName & @crlf) ;diese Zeilen sind nur zur Kontrolle
    Run($commandName, "", @SW_HIDE)
    ;Startet den Dienst
    Local $commandName = "sc \\" & $pcname[$z] & " " & "start RemoteRegistry"
    Run(@ComSpec & " /c " & $commandName, "", @SW_HIDE)

    [/autoit]

    Soweit alles tutti. Wenn ich mir nun die Dienste anschaue unter Verwalten, haben die ja ganz normale Namen. z. B. Geschützter Speicher. Wenn ich mir den Dienst aber uns ProcessList anschaue, heisst er dort lsass.
    Viele Dienste die Laufen haben als ausführdatei die svchost.exe. Wenn ich unter ProcessList jetzt einen bestimmten Prozess beenden möchte, der die svchost.exe als EXE hat, weiss ich nicht welchen ich beenden muss. Das wiederum kann ich ja über die PID rausfinden. Welche PID aber der Dienst hat, den ich suche, weiss ich nicht. Und das möchte ich herausfinden!

    Eine andere Sache in diesem Zusammenhang vll.: Kann ich Werte von der Kommandozeile an AutoIt übergeben?

  • PDF erstellen + zusammenfügen

    • Scritch
    • 6. April 2011 um 08:28

    Holla,

    stand vor kurzem vor der selben Problematik. Ich habe es auch mit einem pdf-Drucker gemacht. Aber wenn du nichts installieren darfst, ist es natürlich blöd. Kennst du den PDF-Grabber? Vll. gibt es den als mobile Version, ohne dass du was installieren brauchst. Damit kann man auch Exceldokumente in pdf's umwandeln. Um dann 350 Dokumente zu Drucken, kannst du ja was mit AutoIt machen, im Quick n' Dirty Stil. Einfach mit Mouseclicks und so. Brauchste danach ja sicher eh nicht wieder.
    Ich habe so auch paar hundert Dokumente bearbeitet...

  • Software im Hintergrund installieren

    • Scritch
    • 16. März 2011 um 12:12

    Achso, alles klar. Und dann kann ich für die installation ganz normal die ControlClicks verwenden und so?

    Edit: Glaube das war quatsch. Die Installation läuft dann ja von selbst, richtig? Wie ist das mit Infos die ich an die Installation übergeben möchte, dass ich zum Beispiel keine Toolbar für meinen Browser haben möchte oderso, die Sachen halt die standardmäßig mit installiert werden? Also bräuchte ich ja sowas wie eine .ini. Auch für den Installationspfad etc.

  • Software im Hintergrund installieren

    • Scritch
    • 16. März 2011 um 11:53

    Nochmal hierzu: wie kann ich die installation mit AutoIt denn silent anstoßen, wenn ich weiß wie die Silentparameter sind?

  • Dateien mit neuestem Datum kopieren

    • Scritch
    • 15. Februar 2011 um 11:29

    Was auch gehen würde, und vll. einfacher wäre: Alle Dateien mit dem heutigen Datum kopieren.

    Edit:
    Habe da mal was gebastelt, was meinen Ansprüchen genügt:

    Spoiler anzeigen
    [autoit]

    #Include <Date.au3>
    #include <file.au3>
    #include <array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    DirCreate(@ScriptDir & '\' & StringFormat('%s.%s.%s', @MDAY, @MON, @YEAR))
    $date = _DateTimeFormat(_NowCalc(), 2)
    ;MsgBox(1, "lala", $date)

    [/autoit] [autoit][/autoit] [autoit]

    $filesarray = @ScriptDir
    $arrayderfiles = _FileListToArray($filesarray)
    ;_ArrayDisplay($arrayderfiles)

    [/autoit] [autoit][/autoit] [autoit]

    for $a = 1 to ubound($arrayderfiles) - 1
    $file = @ScriptDir & "\" & $arrayderfiles[$a]
    $t = filegettime($file, 1)
    $yyyymd = $t[2] & "." & $t[1] & "." & $t[0]
    If $yyyymd = $date Then
    filecopy($file, $date)
    ;MsgBox(0, "Erstelldatum von notepad.exe", $yyyymd)
    EndIf
    Next

    [/autoit]
  • Dateien mit neuestem Datum kopieren

    • Scritch
    • 15. Februar 2011 um 09:28
    Zitat

    Hallo Scritch,

    die Lösung würde sicher auch andere interessieren, kannt du sie bitte eintellen,

    mfg autoBert


    Moin,
    war ein Fehler, habe mich verklickt. Eine Lösung habe ich noch nicht. Werde mir das von misterspeed nachher mal anschauen. Danke schonmal dafür.

  • Dateien mit neuestem Datum kopieren

    • Scritch
    • 14. Februar 2011 um 16:13

    Ich habe einen Ordner mit allerhand Textdateien drin. Der Inhalt ändert sich immer in bestimmten Abständen. ich möchte aus diesem ordner nun die beiden Dateien kopieren, die das neueste Datum haben. Das geht sicher, nur wie?

  • Nach Textteilen suchen

    • Scritch
    • 7. Februar 2011 um 12:58

    Habs hinbekommen, danke euch beiden :)

  • Nach Textteilen suchen

    • Scritch
    • 4. Februar 2011 um 14:07

    moin,

    ich möchte in einem bestimmten Verzeichnis ateien suchen. Heißt eine z. B. Apfelsaft.txt möchte ich nach Apfel suchen können und dann trotzdem die Datei angezeigt/ausgegeben bekommen. Wie stelle ich das an?

  • Alle Rechnernamen aus bestimmten IP-Bereich

    • Scritch
    • 24. Januar 2011 um 15:26

    Okay, ist ja schonmal ein Anfang. Danke dir erstmal :)

  • Alle Rechnernamen aus bestimmten IP-Bereich

    • Scritch
    • 24. Januar 2011 um 14:53

    Moin,

    kann ich alle Rechner aus einem bestimmten IP-Bereich und einem bestimmten Subnetz per Autoit-Script auslesen?

  • Array oder non-Array - das ist hier die Frage

    • Scritch
    • 21. Januar 2011 um 09:03

    Guten Morgen,

    ich wollte eine Auswertung des freien Speicherplatzes bei uns in der Firma machen. Dazu benutze ich dieses Script:

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    #include <File.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Dim $pcname[1] = ["pcname"]
    Global $log = @ScriptDir & "\log_HDD-Partition.csv"
    _FileCreate($log)
    Sleep(1500)
    FileOpen($log, 1)
    FileWrite($log, "PC" & ";" & "Freier Speicher C:" & @CRLF)
    For $z = 0 To UBound($pcname) - 1
    If FileExists("\\" & $pcname[$z] & "\d$\partitionen.ini") Then
    Local $hdd = "\\" & $pcname[$z] & "\d$\partitionen.ini"
    Dim $ahdd
    _FileReadToArray($hdd, $ahdd)
    For $j = 0 to 1
    _ArrayDelete($ahdd, $j)
    Next

    For $y = 0 To UBound($ahdd) - 1
    $ahddfrei = StringSplit($ahdd[$y], 'frei:', 1)
    $isarray = IsArray($ahddfrei)
    if $isarray <1 then ExitLoop
    For $i = 1 To 2
    _ArrayDelete($ahddfrei, 0)
    Next
    ;_ArrayDisplay($ahddfrei)
    FileWrite($log, $pcname[$z] & ";" & $ahddfrei[$y] & @CRLF)
    Next
    EndIf
    Next
    FileClose($log)

    [/autoit]


    Dazu sei gesagt, dass in den .ini's die Partitionen drinnenstehen, ich aber nur die Größe von c: brauche. So steht es in der .ini drin:

    Spoiler anzeigen

    C:, NTFS, 125,5 GB, frei: 97,4 GB
    D:, NTFS, 23,5 GB, frei: 21,9 GB

    Das Script funktioniert soweit einwandfrei, bricht aber dann nachdem ca. 1/4 des PC's abgearbeitet wurden, ab. Die Fehlermeldung besagt: Subscript used with non-Array variable.
    Wundern tut mich das, dass er echt am Anfagn einwandfrei läuft. Habe dann da die Abfrage mit "ob Array, oder nicht?" eingebaut, aber irgendwie funktioniert das nicht wie es oll :pinch:

  • Nur Textteile auswerten

    • Scritch
    • 20. Januar 2011 um 09:02

    Super, danke euch beiden :)

  • Nur Textteile auswerten

    • Scritch
    • 19. Januar 2011 um 11:16

    Hallo,

    wenn ich etwas in ein Array lese, z. B. "10 mal 10 ergibt 100" und ich nur mit der 100 arbeiten möchte, wie schaffe ich das das zu trennen? Also quasi mit den letzten 3 Stellen der ersten Zeile?

  • Arrayeinträge an Funktion übergeben

    • Scritch
    • 18. Januar 2011 um 12:16

    Hallo. Ich versuche mal mein Problem zu schildern. Also: Ich habe eine Installationsroutine gebaut, für die Installation von verschiedenen Druckermodellen bei uns in der Firma. Allerdings ist das so wie es derzeit ist, nicht das Optimum, es funktioniert aber. Um das Skript bischen übersichtlicher zu gestalten, kann man eine ganze Ecke an Code sparen. Dafür habe ich auch eine Idee, weiß sie aber nicht umzusetzen.
    Hier mal Teile zum Code:

    Spoiler anzeigen
    [autoit]

    $Combo1 = GUICtrlCreateCombo("Drucker auswählen", 30, 250, 140, 25)
    GUICtrlSetData($Combo1, "Lexmark E232d|Lexmark E240d|Lexmark E350d|Lexmark C532N", "Drucker auswählen") ;Was ist im Dropdownmenü enthalten?
    GUICtrlSetOnEvent($Combo1, "Combo1")

    [/autoit] [autoit][/autoit] [autoit]

    Func Combo1()
    $read = GUICtrlRead($Combo1)
    If $read = "Lexmark E232d" Then
    Global $driver_x86 = "E232.exe"
    Global $driver_path = @ScriptDir & "\tmp\"
    Global $driver_inf = $driver_path & "LMAAL2DA.INF"
    Global $driver_current = "Lexmark E232"
    Global $driver_old = "Lexmark E232"
    Global $print_vbs = $driver_path & "vbs.exe"
    Global $print_port = "LPT1:"
    Global $script_v = FileGetVersion(@ScriptFullPath)

    [/autoit] [autoit][/autoit] [autoit]

    Global $driver
    Global $driver_processor
    Global $driver_typ
    If Not FileExists($driver_path) Then
    DirCreate($driver_path)
    EndIf
    FileInstall("./vbs.exe", $print_vbs, 1)
    $driver = $driver_path & $driver_x86
    $driver_processor = "Intel"
    FileInstall("./E232.exe", $driver, 1)
    entpacken()
    RunWait('rundll32 printui.dll,PrintUIEntry /if /b "Lexmark E232" /f "' & $driver_inf & '" /r "' & $print_port & '" /m "' & $driver_current & '"')
    _del_Driver()
    EndIf
    If $read = "Lexmark E240d" Then
    Global $driver_x86 = "E240.exe"
    Global $driver_path = @ScriptDir & "\tmp\"
    Global $driver_inf = $driver_path & "LMAAX2DA.INF"
    Global $driver_current = "Lexmark E240"
    Global $driver_old = "Lexmark E240"
    Global $print_vbs = $driver_path & "vbs.exe"
    Global $print_port = "LPT1"
    Global $script_v = FileGetVersion(@ScriptFullPath)

    [/autoit] [autoit][/autoit] [autoit]

    Global $driver
    Global $driver_processor
    Global $driver_typ
    If Not FileExists($driver_path) Then
    DirCreate($driver_path)
    EndIf
    FileInstall("./vbs.exe", $print_vbs, 1)
    $driver = $driver_path & $driver_x86
    $driver_processor = "Intel"
    FileInstall("./E240.exe", $driver, 1)
    entpacken()
    RunWait('rundll32 printui.dll,PrintUIEntry /if /b "Lexmark E240" /f "' & $driver_inf & '" /r "' & $print_port & '" /m "' & $driver_current & '"')
    _del_Driver()
    EndIf;Hier kommen noch ca. 10 andere Drucker wo sich Druckertyp und Druckeranschluss unterscheiden

    [/autoit]

    Ich habe gezählt: 360 Zeilen sind es derzeit für die installation, weil es sich andauernd wiederholt... Meine Idee jetzt: Ich schreibe die Dinge die sich unterscheiden, also Druckername, .exe-Datei des Druckers, .inf-Datei und Druckeranschlussname jeweils in ein Array. Wähle ich jetzt z. B. den ersten Eintrag aus der DropDown Box aus, werden automatisch die Einträge die an Stelle 1 des jeweiligen Arrays stehen, an den besagten Stellen eingefügt. Irgendwie liegts mir "auf der Zunge", aber ich komme nicht drauf :pinch:

    Edit: ich glaube mir ist da was eingefallen...

  • Array in List

    • Scritch
    • 11. Januar 2011 um 12:38

    Ok. Danke euch beiden. Nächste Frage in dieser Sache: Ich habe nun die Werte meines Arrays dort stehen und kann sie auch anklicken. Wie mache ich das, dass eine Aktion ausgeführt wird, wenn ich z. B. den 2. Wert anklicke, und dann mit einem Button bestätige. Quasi etwas aus der Liste auswählen, und dann löschen. Bei Comboboxen bekomme ich es ja noch auf die Reihe, aber so?
    Da ja immer etwas anderes in das Array eingelesen wird (Also andere Werte) stehe gerade etwas auf dem Schlauch...

  • Array in List

    • Scritch
    • 10. Januar 2011 um 14:31

    Ich möchte die Werte die ich in einem Array stehen habe gerne in einer ListBox angezeigt bekommen und später auch damit weiterarbeiten...
    Ich bekomme es aber nur so hin, dass max. eine Zeile dort angezeigt wird :(

    [autoit]

    For $i = 1 to 20
    $var = RegEnumVal("HKEY_USERS\.DEFAULT\Software\Microsoft\Windows NT\CurrentVersion\PrinterPorts", $i);Liest den Schlüssel
    If @error <> 0 Then ExitLoop
    _ArrayAdd($adrucker, $var)
    next
    GUICtrlCreateList ($adrucker, 230, 190 , 140, 100)

    [/autoit]

    Wieso funktioniert das nicht?

  • Dienste starten und beenden

    • Scritch
    • 30. Dezember 2010 um 17:06

    Super, funktioniert. Danke :)
    Aber warum geht das mit dem Run-Befehl, und warum geht meine Version nicht?

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™