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

Beiträge von BugFix

  • Compare im Edit_Fenster

    • BugFix
    • 17. Februar 2017 um 13:54

    Warum nutzt du nicht gleich Powershell für die Abfrage - wenn ich das richtig interpretiere, willst du die Gruppenzugehörigkeit für 2 Member vergleichen. Kommt nur drauf an, ob du die Übereinstimmungen oder Unterschiede suchst.

    Komplexe PS-Skripte lassen sich aus AutoIt heraus super ausführen (wie ich nach zweitägigem K(r)ampf endlich herausgefunden habe). :D

    Spoiler anzeigen
    AutoIt
    $sRet = _PowerShell_Run( _
    	'[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")' & @CRLF & _
    	'$MB = [System.Windows.Forms.MessageBox]' & @CRLF & _
    	'$out = ""' & @CRLF & _
    	'$out += "Hallo"' & @CRLF & _
    	'$out += " Welt!"' & @CRLF & _
    	'$result = $MB::Show("$out","WPS >> AutoIt",0)' & @CRLF _
    	)
    
    
    
    
    Func _PowerShell_Run($_sCmd, $_iOutput=0)
    	Local Const $sKey32 = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell"
    	Local Const $sKey64 = "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell"
    	Local Static $sKey = @CPUArch = 'X64' ? $sKey64 : $sKey32
    	Local Static $sPSexe = RegRead($sKey, 'Path')
    	Local $sPathTMP = StringFormat('%s\__%s%s%s%s%s%s%s.ps1', @TempDir, @YEAR, @MON, @MDAY, @HOUR, @MIN, @SEC, @MSEC)
    	Local $fH = FileOpen($sPathTMP, 2+8+128)
    	FileWrite($fH, $_sCmd)
    	FileClose($fH)
    	Local $sRun = StringFormat('%s -ExecutionPolicy UnRestricted -File %s', $sPSexe, $sPathTMP)
    	Local $iPID = Run($sRun, @ScriptDir, @SW_HIDE, 0x2)
    	If $_iOutput = 1 Then
    		Local $sOut
    		Do
    			$sOut &= StdoutRead($iPID)
    		Until @error
    		StdioClose($iPID)
    	Else
    		While ProcessExists($iPID)
    			Sleep(350)
    		WEnd
    	EndIf
    	FileDelete($sPathTMP)
    	Return ($_iOutput = 1 ? $sOut : 1)
    EndFunc
    Alles anzeigen

    Edit: zum Vergleich existiert eine eigene AD-Funktion: Compare two users groups membership

  • Zeitansage (Standard Std:Min und Umgangssprachlich)

    • BugFix
    • 17. Februar 2017 um 10:18
    Zitat von AutoMit

    Obwohl das Script funktioniert, ist die Variable "$oTalk" leer - warum?

    ConsoleWrite (@ScriptLineNumber & @TAB & "$oTalk = " & $oTalk & @CRLF)

    Weil man ein Objekt nicht ausgeben kann. Ein Objekt hat Eigenschaften und Methoden mit denen man arbeitet.
    Ob das Objekt existiert kann getestet werden mit If IsObj($oTalk) Then ConsoleWrite('SAPI.SpVoice - Objekt erstellt.' & @CRLF)

    Zu den anderen Fragen kann ich im Moment nichts beitragen.

  • Navigation in Gui per TAB

    • BugFix
    • 14. Februar 2017 um 10:52

    Leg die TAB-Funktionalität generell auf Accelerator-Keys, dann kannst du das unabhängig vom System definieren und egal in welcher Reihenfolge die Controls erstellt wurden.

    Muster:

    AutoIt
    <#include <WinAPI.au3>
    
    
    $hGui = GUICreate('Test')
    $in3 = GUICtrlCreateInput('', 295, 10, 50, 20)
    $in2 = GUICtrlCreateInput('', 180, 10, 50, 20)
    $in1 = GUICtrlCreateInput('', 65, 10, 50, 20)
    
    
    $lb3 = GUICtrlCreateLabel('Input 3', 240, 13, 50, 17)
    $lb2 = GUICtrlCreateLabel('Input 2', 125, 13, 50, 17)
    $lb1 = GUICtrlCreateLabel('Input 1', 10, 13, 50, 17)
    $idDummy = GUICtrlCreateDummy()
    
    
    Global $aAccKey[1][2] = [['{TAB}', $idDummy]]
    GUISetAccelerators($aAccKey)
    
    
    
    
    GUISetState()
    
    
    While True
    	Switch GUIGetMsg()
    		Case -3
    			Exit
    		Case $idDummy
    			_Dummy()
    	EndSwitch
    WEnd
    
    
    
    
    Func _Dummy()
    	Local Static $aTabFocus[3] = [$in1, $in2, $in3] ; Reihenfolge bei TAB
    	Local $iFokus = _WinAPI_GetDlgCtrlID(ControlGetHandle($hGui, '', ControlGetFocus($hGui)))  ; aktueller Fokus - wenn nicht in TAB-Liste, wird erstes Element der Liste angesprungen
    	Local $iIndex = UBound($aTabFocus)
    	For $i = 0 To UBound($aTabFocus) -1
    		If $aTabFocus[$i] = $iFokus Then
    			$iIndex = $i
    			ExitLoop
    		EndIf
    	Next
    	$iIndex += 1   ; nächstes Element der Liste wählen
    	If $iIndex = UBound($aTabFocus) Then $iIndex = 0
    	ControlFocus($hGui, '', $aTabFocus[$iIndex])
    EndFunc
    Alles anzeigen

    Edit: Include eingefügt

  • _LogFile - Einfach LogFiles erstellen und schreiben

    • BugFix
    • 3. Februar 2017 um 08:38
    Zitat von Kanashius

    Ob man mehrere Logfiles möchte ist natürlich persönliche Meinung

    Das ist eher konzeptabhängig. Wenn jedes Event geloggt wird ist es durchaus auch sinnvoll, im Interesse der besseren Auswertbarkeit, Logs für allgemeine Events und Events für Fehler zu trennen.

  • _LogFile - Einfach LogFiles erstellen und schreiben

    • BugFix
    • 2. Februar 2017 um 12:27

    Logdaten werden u.U. in hoher Frequenz geschrieben. Insofern ist es nicht sinnvoll bei jedem Schreibvorgang die Datei zu öffnen, dann zu schreiben und die Datei zu schliessen.
    Besser:
    - globale Variable für das File-Handle $_g_fHwndLog
    - eine Funktion z.B. _Log_Init(optionaler_Dateiname), die das $_g_fHwndLog für FileOpen verwendet
    - Logfunktion _Log_Write(Msg), die das offene Handle nutzt
    - Shutdown-Funktion _Log_ShutDown(), die mit OnAutoItExitRegister() $_g_fHwndLog schliesst.

    Falls verschieden Logdateien gleichzeitig bedient werden sollen, kann kein globales HWnd verwendet werden, sondern muß beim Init als Return aufgefangen und bei jedem Schreibvorgang übergeben werden, ebenso beim Shutdown.

  • GuiCtrlColorChooser - Moderne Farbauswahl (Version 1.0)

    • BugFix
    • 1. Februar 2017 um 16:10
    Zitat von Mars

    ich glaube BugFix hatte eine UDF zur Umrechnung von Farbsystemen

    Genau: https://autoit.de/index.php/Thre…6614#post126614

  • AutoIT Script - Dateien in dieses mit einfügen / kompilieren?

    • BugFix
    • 31. Januar 2017 um 18:15

    Batches mit AutoIt aufzurufen ist ziemlich sinnfrei. Portiere die Inhalte der Batch zu AutoIt.

  • reguläre Suche - Verzeichnisnamen

    • BugFix
    • 31. Januar 2017 um 15:34
    AutoIt
    ; == Wie schreibt man, dass man das erste Vorkommen von "\ beliebige Zeichen \" bzw. das letzte Vorkommen von "\ beliebige Zeichen \" bzw. das xte Vorkommen von "\ beliebige Zeichen \ in dem String sucht?
    ; StringInString - suchen von vorn mit positiver Zahl oder von hinten mit negativer Zahl für occurence
    
    
    Local $Verzeichnis_mit_den_Daten = "d:\test\01\05\01\01\test.txt"
    
    
    ; Bsp.: 2. '\'´von hinten
    $iPos = StringInStr($Verzeichnis_mit_den_Daten, '\', 0, -2)
  • FolderStruct - Ordnerstruktur in Datei speichern / aus Datei erstellen

    • BugFix
    • 30. Januar 2017 um 22:39

    In diesem Thread hatte ich ein Lösungsvariante basierend auf meiner UDF zum Speichern/Wiederherstellen von Treeview-Inhalten verwendet.
    Jetzt habe ich das zusammengedampft und eine Lösung zum direkten Speichern von Ordnungsstrukturen eines Root-Pfades und der Umkehraktion: Ordnerstruktur in einem Ziel-Pfad aus einer Strukturdatei anlegen.
    Das ist z.B. nützlich, wenn ich auf mehreren PC dieselbe Verwaltungsstruktur haben möchte, sodass jeder User Daten auf Anhieb im vertrauten Ordner findet. Problemlos ist, wenn im Zielpfad bereits gleichnamige Ordner vorhanden sind - diese bleiben erhalten.

    Strukturdatei per Hand


    Eine Strukturdatei kann durchaus auch von Hand erstellt werden, d.h. ich muß nicht zwingend zuerst im Explorer alle Ordner mit Unterordnern erstellen um daraus die Strukturdatei zu erstellen. Dabei ist aber zwingend deren Aufbau zu beachten.
    In jeder Zeile steht:
    Orderstring<TRENNER>Ordnername
    Orderstring:
    ein Zähler je Anzahl Ordner in einer Pfadtiefe wird zu einem String gebildet
    ..Root\A = "1"
    ..Root\A\1 = "1.1"
    ..Root\B = "2"
    ..Root\B\1 = "2.2" !! erster Ordner unter B - ABER der 2. in dieser Pfadtiefe
    ..Root\B\1\1 = "2.2.1"
    ..Root\B\1\2 = "2.2.2"
    ..Root\B\1\3 = "2.2.3"
    ..Root\C = "3"
    ..Root\C\1 = "3.3"
    ..Root\C\1\1 = "3.3.4"
    ..Root\C\1\2 = "3.3.5"

    <TRENNER>:
    Das Zeichen von Opt("GUIDataSeparatorChar") - Standard "|"

    Ordnername:
    Der Name des Ordners

    Die resultierende Strukturdatei müsste also lauten:
    1|A
    1.1|1
    2|B
    2.2|1
    2.2.1|1
    2.2.2|2
    2.2.3|3
    3|C
    3.3|1
    3.3.4|1
    3.3.5|2




    Funktionen:

    _FolderStruct_WriteToFile
    Gets the structure of folders from a given root path and write this to an file

    _FolderStruct_CreateFromFile
    Creates folder in the same structure like the given structure file in a given target path

    _FolderStruct_PathDepth
    Sets a new value for the maximum possible path depth or gets the current one.

    Details s. Funktionsheader

    Dateien

    FolderStruct.au3 8,15 kB – 307 Downloads
  • Frage zur ListView

    • BugFix
    • 29. Januar 2017 um 18:20
    Zitat von Mikki

    Könnt Ihr mir helfen?

    Sicher, dann zeig uns mal deinen Code um den Fehler zu finden.

  • Anlegen vieler Verzeichnisse und Unterverzeichnisse aus Dateiliste möglich?.

    • BugFix
    • 28. Januar 2017 um 22:02

    Also du kannst das schon per Hand schreiben. Die Strukturreihenfolge muß natürlich irgendwie kenntlich gemacht werden.
    Meine UDF enthält die Funktionen um aus den Ordnungsnummern den übergeordneten Ordner lesen zu können, du kannst also auch händisch die Datei anlegen.
    Wichtig ist, dass in jeder Spalte der Ordnungszahlen fortlaufend gezählt wird, also nicht bei jedem Ordner wenn er einen Unterordner bekommt, wieder bei 1 anfangen, sondern Hochzählen von der letzten Zahl dieser Ebene. An meiner Musterdatei wird das erkenntlich.

  • Anlegen vieler Verzeichnisse und Unterverzeichnisse aus Dateiliste möglich?.

    • BugFix
    • 28. Januar 2017 um 21:38

    Also:

    Zuerst legst du einmalig die Ordnerstruktur an auf deinem PC, z.B. im Ordner "Muster" sind alle Ordner mit ihren Unterordnern in deiner gewünschten Systematik.
    Nun rufst du die Funktion _FolderStructToFile("Pfad\zu\Muster", "Pfad\für\Strukturdatei")
    Während die Funktion läuft, wird für dich unsichtbar eine GUI mit Treeview erstellt, die Ordnerstruktur aus "Muster" dort abgebildet und anschliessend in die Datei "Pfad\für\Strukturdatei" geschrieben.
    Wenn du jetzt z.B. für "Mama" diese Ordnerstruktur anlegen möchtest rufst du die Funktion
    _CreateStructFromFile("Lw:\Ordner_Mama, "Pfad\für\Strukturdatei") auf.
    Die Funktion erstellt wieder intern unsichtbar eine GUI mit Treeview und lädt dort die gespeicherte Struktur. Dann wird gemäß der Vorlage Ordner für Ordner erstellt (wobei bei einem bereits evtl. vorhandenem Ordner aus der Vorlage dieses erkannt und dann kein neuer erstellt wird).

    Die Struktur-Datei solltest du nicht von Hand bearbeiten, zu schnell könnten Fehler in den Ordnungsnummern auftauchen.

  • Anlegen vieler Verzeichnisse und Unterverzeichnisse aus Dateiliste möglich?.

    • BugFix
    • 28. Januar 2017 um 19:22

    OK, Bsp. im Anhang.

    Wie du siehst, nutze ich den "Umweg" über ein Treeview. Hängt einfach damit zusammen, dass ich die UDF dafür erstellt hatte und es somit die einfachste Umsetzung ist. Natürlich könnte man das auch ändern und den Direkten Weg wählen (Ordner-Struktur in Datei lesen / aus Datei Ordner erstellen).

    Dateien

    __FolderStruct.au3 12,48 kB – 382 Downloads
  • Autoit Wrappers #AutoIt3Wrapper_Res_Description=

    • BugFix
    • 28. Januar 2017 um 14:14
    Zitat von alpines

    Im Kontextmenu müsste wenn du auf das Script rechtsklickst

    Wozu so umständlich?
    Im geöffneten SciTE: Ctrl+F7

  • Anlegen vieler Verzeichnisse und Unterverzeichnisse aus Dateiliste möglich?.

    • BugFix
    • 28. Januar 2017 um 14:05

    Du kannst die Struktur einmalig erstellen und dann in einer Textdatei speichern. Hatte dazu mal eine UDF erstellt.
    Bei der UDF geht es zwar vorrangig um das Auslesen und Abspeichern der Struktur eines Treeview und Befüllen des Treeview wiederum aus der gespeicherten Struktur, aber das kannst du analog umsetzen zum Erstellen von Ordnerstrukturen.

    Dateien

    GuiTreeviewFromToFile.au3 8,79 kB – 408 Downloads
  • Einlesen von riesigen Excel Tabellen

    • BugFix
    • 26. Januar 2017 um 15:40
    Zitat von xGreenryder

    Sobald man allerdings an gewerbliche Tätigkeiten heran geht hat man sehr schnell eine Schadensersatzklage am Hals, sollte da etwas schief gehen.

    Es gibt dafür ein klares Prozedere, um Probleme zu vermeiden:
    - Zusammenarbeit mit dem Qualitäts Management Beauftragten (zwingend erforderlich)
    - Erstellung des Formulars Softwarevalidierung für den gewünschten Zweck
    - Enthalten ist: Was soll die Software tun? Zustand vorher/nachher. Wie sollen Tests ablaufen, wer testet, und wie oft soll getestet werden?
    - Wenn alles erfolgreich, wird das Formular abgezeichnet und somit grünes Licht für den Einsatz gegeben

    Wenn an den Bestandsdaten gearbeitet wird, versteht es sich eigentlich von selbst, dass festgeschrieben wird: Datensicherung vor jedem Einsatz der Software.

    Übrigens ist jeder Furz, der automatisiert wird als Software zu betrachten und MUSS somit der Softwarevalidierung unterliegen (inkl. der Folgevalidierung alle 3 Jahre).

  • Kurze Anfängerfrage, Imagesearch, warum geschieht hierbei nichts? Selbst kein Error

    • BugFix
    • 25. Januar 2017 um 15:39
    Zitat von 4bsolute

    #include <ImageSearch2015.au3>

    Kein Standard-Include, somit musst du dich an den Ersteller der UDF wenden, ich kenne diese nicht.

    Zitat von 4bsolute

    erkennt er mir den Dateipfad des Bilds automatisch oder muss ich das auch im script extra aufführen?

    Wenn das Bild zufällig im Ordner des AutoIt-Skriptes liegt, wird es gefunden (keine Pfadangabe=Skriptverzeichnis), ansonsten ist die Pfadangabe erforderlich (in jeder Funktion, die eine Dateiangabe erfordert).

  • Comodo - Update AV-Datenbank manuell

    • BugFix
    • 23. Januar 2017 um 19:29

    He Leute, nur kein Streß.

    Candyland, sicher war dein Gedanke gut gemeint. Aber ehe hier jemand ein Skript zum Mausschubsen schreibt, fallen uns eher die Finger ab.
    Sowas ist derart unsicher und daher eher eine Zeitbombe, da du nie sicher sein kannst, was dein Mausgeklicke wirklich anrichtet.

  • OutlookEX - _OL_MaiLSignatureCreate - Linie Zeichnen

    • BugFix
    • 22. Januar 2017 um 21:01
    Zitat von alpines

    Jeder Mailanbieter sollte das auch erkennen und den HTML-Text parsen.

    Vielleicht etwas OT - aber ich habe mir extra einen Mail-Client zugelegt, der HTML nicht anzeigen kann (Sylpheed), da ich den ganzen Formatierungskram in Mails nicht ausstehen kann.
    Ein Mail-Body ist ein TEXT-Feld. Dabei soll es bleiben. Für alles andere gibt es Anhänge.

  • Problem mit _StringBetween bei XML files

    • BugFix
    • 22. Januar 2017 um 20:46
    Zitat von FlolRitXX

    Hat das etwas mit diesen Arrays zu tun

    Ja. Ergebnis ist ein Array, also anzeigen z.B. mit _ArrayDisplay
    Mehr über Arrays kannst du aus meinem Array-Tut (s. Signatur) erfahren.

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™