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

Beiträge von Schnuffel

  • eingebundenes Powershell macht plötzlich Probleme

    • Schnuffel
    • 19. Mai 2024 um 10:35

    ich sehe das Problem in den doppelten Hochkomma

    Code
    'Get-ADComputer -Filter "OperatingSystem -like ''*Windows 10*''"
  • Ausführung eines externen Programms mit aktivem Account.

    • Schnuffel
    • 8. Mai 2024 um 16:32

    ich würde auch sagen, dass child-Prozesse die selben Sicherheitstoken haben wie der aufrufende Prozess selbst besitzt. Wäre ja auch die Frage, welche Token soll der aufzurufende Prozess denn sonst haben. Eine Sicherheitseinstellung die administrative Token bei child-prozessen entfernt ist mir nicht bekannt.

  • Mit Autoit eine BIOS Option ändern?

    • Schnuffel
    • 26. April 2024 um 18:16

    ich mache das für HP Geräte damit: https://ftp.ext.hp.com/pub/caps-softpaq/cmit/HP_BCU.html

    Gibt es bei allen nahmhaften Herstellern

    Kann man mit Batch, PowerShell WMI und Co. nutzen.

    Die Portierung zu autoit sollte ein Klacks sein.

  • Umlaute in Dateien aus DOS-Befehlen

    • Schnuffel
    • 3. März 2024 um 15:29

    hier noch ein Ansatz. Aber bitte erst ausprobieren an einem nicht so großen Verzeichnis...

    AutoIt
    #include <Array.au3>
    #include <File.au3>
    Global $sHDD, $sfoldername, $aOutput, $aTemp
    $sHDD = "C:\"
    $sfoldername = "Users"
    RunWait(@ComSpec & " /c " & "dir " & $sHDD & $sfoldername & " /A:D /Q /S /B > output.txt", @DesktopDir, @SW_HIDE)
    _FileReadToArray(@DesktopDir & "\output.txt", $aOutput)
    ;If FileExists(@DesktopDir & "\output.txt") Then FileDelete(@DesktopDir & "\output.txt")
    
    Global $aArray2[$aOutput[0] + 1][5]
    $aArray2[0][0] = $aOutput[0]
    $aArray2[0][1] = "Owner"
    $aArray2[0][2] = "Size"
    $aArray2[0][3] = "Files Count"
    $aArray2[0][4] = "Dir Count"
    For $i = 1 To $aOutput[0]
    	$aArray2[$i][0] = $aOutput[$i]
    	$aArray2[$i][1] = _GetOwner($aOutput[$i])
    	$aTemp = DirGetSize($aOutput[$i], 3)
    	If Not @error Then
    		$aArray2[$i][2] = $aTemp[0]
    		$aArray2[$i][3] = $aTemp[1]
    		$aArray2[$i][4] = $aTemp[2]
    	EndIf
    Next
    
    _ArrayDisplay($aArray2)
    
    Func _GetOwner($sFile_Folder)
    	Local $objSD, $oWMIService = ObjGet("winmgmts:")
    	Local $oFolderSecuritySettings = $oWMIService.Get("Win32_LogicalFileSecuritySetting='" & $sFile_Folder & "'")
    	Local $intRetVal = $oFolderSecuritySettings.GetSecurityDescriptor($objSD)
    	If $intRetVal = 0 Then
    		Return $objSD.Owner.Domain & "\" & $objSD.Owner.Name
    	Else
    		Return
    	EndIf
    EndFunc   ;==>_GetOwner
    Alles anzeigen

    Das Array sollte alle Ordner rekursiv liefern alphabetisch sortiert, den Besitzer, die Größe (im Moment nicht rekursiv), Anzahl Ordner und Anzahl Dateien.

    Wenn die Größe rekursiv ermittelt werden soll, dann in Zeile 19 die 3 mit einer 1 ersetzen ;)

    Bei fehlender Leseberechtigung auf einen Ordner bricht das Script bis jetzt ab. Das müsste man sich noch ansehen um das abzufangen.

  • Umlaute in Dateien aus DOS-Befehlen

    • Schnuffel
    • 3. März 2024 um 13:07

    wenn du 2 bestimmte Ordner rekursive erfassen möchtest, würde ich das so lösen:

    AutoIt
    Global $sSearchDir = "C:\Windows"
    Global $aDir_Allgemein = _FileListToArrayRec($sSearchDir & "\Web", "*", 2, 1)
    Global $aDir_Daten = _FileListToArrayRec($sSearchDir & "\Help", "*", 2, 1)
    _ArrayConcatenate($aDir_Allgemein, $aDir_Daten, 1)
    $aDir_Allgemein[0] = UBound($aDir_Allgemein) - 1
    _ArrayDisplay($aDir_Allgemein)

    musst halt die Ordner und des $sSearchDir an deine Bedürfnisse abändern

    PS: der Parameter $iReturn kann dir auch deine Junktions liefern ;)

    + $FLTAR_NOLINK (16) - Link/junction folders
  • Umlaute in Dateien aus DOS-Befehlen

    • Schnuffel
    • 2. März 2024 um 14:55

    Ist J:\... ein Netzlaufwerk?

    verwendest du eine Batch? (.bat oder .com) ?

    Wie erstellst du die Batch Datei?

    Wenn mit Notepad++, dann die Sprache auf MS-Dos Style ändern und dann erst abspeichern.

    In der Batch Datei würde ich folgendes schreiben:

    Code
    chcp 1252
    Dir C:\.... > Ausgabe.txt

    Bei der Lösung von Aspirinjunkie kann ich mir vorstellen, dass Netzlaufwerke ein Problem darstellen könnten.

    Das Script läuft auch mit Netzlaufwerken. ^^

    Der von dir geschilderte Fehler ist i.d.R. ein "harter" Error eines Dll-Aufrufs, der mit irgendeinem Parameter an die Wand gefahren ist.

    ich hab die Funktion von AspirinJunkie mal verschlankt und optimiert.

    AutoIt
    $s_Cmd = "Dir"
    $sParameter = "C:\Users\Oliver"
    $b_CmdSpec = True
    $WorkDir = @WorkingDir
    $sResult = RunCmd($s_Cmd, $sParameter , $b_CmdSpec, $WorkDir)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $sResult = ' & $sResult & @CRLF)
    
    ; #FUNCTION# ======================================================================================
    ; Name ..........: RunCmd()
    ; Description ...: runs commandline programs or cmd-command and return their output
    ; Syntax ........: RunCmd($s_Cmd, [$sParameter = '', [$b_CmdSpec = False, [$WorkDir = @WorkingDir]]])
    ; Parameters ....: $s_Cmd        - the command which should be executed (can be full command or without parameters)
    ;                  $sParameter   - additional parameters for the command (also array of parameters)
    ;                  $b_CmdSpec    - If true the command is interpreted as a command for cmd.exe
    ;                  $WorkDir      - the working directory
    ; Return values .: Success: returns a string with the output
    ;                  Failure: set @error and returns a debug-string
    ; Author ........: AspirinJunkie
    ; =================================================================================================
    Func RunCmd($s_Cmd, $sParameter = '', $b_CmdSpec = False, $WorkDir = @WorkingDir)
        Local Static $h_User32DLL = DllOpen('user32.dll')
        If @error Then Return SetError(1, @error, "")
        If $b_CmdSpec Then $s_Cmd = @ComSpec & " /c " & $s_Cmd
        Local $s_Ret, $s_Err
        If $sParameter <> '' Then
            If IsArray($sParameter) Then
                Local $s_Par = ""
                For $j In $sParameter
                    $s_Par &= " " & $j
                Next
                $sParameter = $s_Par
            Else
                $sParameter = ' ' & $sParameter
            EndIf
        EndIf
        Local $iPID = Run($s_Cmd & $sParameter, $WorkDir, @SW_HIDE, 0x2 + 0x4)
        If @error Then Return SetError(2, @error, "")
    	ProcessWaitClose($iPID)
    
        $s_Ret = DllCall($h_User32DLL, 'BOOL', 'OemToChar', 'str', StdoutRead($iPID), 'str', '')[2]
    	$s_Err = DllCall($h_User32DLL, 'BOOL', 'OemToChar', 'str', StderrRead($iPID), 'str', '')[2]
        If $s_Err <> "" Then
            Return SetError(3, 0, "------- StdOut -----------" & @CRLF & $s_Ret & @CRLF & @CRLF & "------- StdErr -----------" & @CRLF & $s_Err)
        EndIf
        Return $s_Ret
    EndFunc   ;==>RunCmd
    Alles anzeigen
  • Welches Event bei Win11 Fenster teilen?

    • Schnuffel
    • 2. März 2024 um 13:06

    so, ich hab mal investigiert.

    Die für dich einfachste Lösung wäre _WinAPI_SetParent().
    Du musst nur die Position einmalig berechnen, sofern sich die Anzahl Buttons in der Leiste von SciTE nicht zur Laufzeit ändert.

    einfaches Bespiel:

    AutoIt
    #include <WinAPISysWin.au3>
    #include <WindowsConstants.au3>
    Opt('WinTitleMatchMode', 2)
    Local $hParent = WinGetHandle(' SciTE')
    
    Local $hForm = GUICreate('', 60, 20, 350, 2, $WS_POPUP, $WS_EX_TOOLWINDOW)
    Global $Btn1 = GUICtrlCreateButton('1',0,0,20,20)
    Global $Btn2 = GUICtrlCreateButton('2',22,0,20,20)
    _WinAPI_SetParent($hForm, $hParent)
    
    GUISetState()
    Global $nMsg
    While 1
    	$nMsg = GUIGetMsg()
    	Switch $nMsg
    		Case -3
    			Exit
    		Case $Btn1
    			MsgBox(262144, 'Btn 1', 'Btn 1')
    		Case $Btn2
    			MsgBox(262144, 'Btn 2', 'Btn 2')
    	EndSwitch
    WEnd
    Alles anzeigen


    Achja, sämtliche Interaktion inkl. Größenänderung via PopupHost und Co, machen die Buttons direkt (auch in der Vorschau) gleich mit ^^

  • Welches Event bei Win11 Fenster teilen?

    • Schnuffel
    • 29. Februar 2024 um 12:36

    ☺️ ich hab gestern auch als erstes versucht den code zu verschlanken. hatte aber zu wenig zeit. ich versuche heute deinen code weiter zu betrachten.

  • Welches Event bei Win11 Fenster teilen?

    • Schnuffel
    • 28. Februar 2024 um 12:14

    schau ich mir heute abend an

  • Welches Event bei Win11 Fenster teilen?

    • Schnuffel
    • 26. Februar 2024 um 20:22

    ich unterstütze dich gern wo ich kann, brauche dazu aber deinen code ;)

  • Welches Event bei Win11 Fenster teilen?

    • Schnuffel
    • 26. Februar 2024 um 18:09

    aber wenn du mein erstes Script anwendest, dann kannst du doch den WinTitle und die HexCodes extrahieren und danach filtern.

    siehe:
    grafik.png

    wenn dein ActiveWindows danach Scite Ist, dann musst du neu zeichnen.

    Ich dachte damit kann man das abfangen

  • Welches Event bei Win11 Fenster teilen?

    • Schnuffel
    • 26. Februar 2024 um 11:25

    ich hab mir mit obigen funktion die WindowTitle mit ausgegeben .

    Da tauchte das auf wenn ich über das Fensteranordnungs-Tool die Gui verschoben habe.

  • [Anfänger Tutorial] Kleines Tutorial für Autoit

    • Schnuffel
    • 25. Februar 2024 um 17:59

    Leichenfledderer ^^

  • SAP (Gesucht wird ein deutschsprachiges Tutorial für AutoIt mit SAP)

    • Schnuffel
    • 24. Februar 2024 um 12:18

    falls jemand da weiterhelfen will/kann.

    Hier mal die Referenz von ABAP (die Programmiersprache in der SAP geschrieben wurde)

    ABAP - Referenz - ABAP-Schlüsselwortdokumentation


    und hier mögliche Connectoren:

    Connectors

    Es scheint wohl auch über ComObject zu funktionieren. Erspart den zu bezahlenden Connector. ^^

    siehe: https://www.autoitscript.com/forum/topic/40…comment=1517795

  • SAP (Gesucht wird ein deutschsprachiges Tutorial für AutoIt mit SAP)

    • Schnuffel
    • 24. Februar 2024 um 11:44

    ich habe schon in autoit für eine Fa. in Hamburg programmiert. Wo ein Wille, da ein Weg. 😉

    Ach ja, ich sitze ca. 850 Km südlich…

  • Eine formatierte rtf oder doc Datei mit Autoit erstellen

    • Schnuffel
    • 22. Februar 2024 um 10:54

    ein recht rudimentärer Ansatz auf den ich so nicht sofort gekommen wäre. mea culpa

    Ich denke wenn es für dich deine Anforderung erfüllt ist ja alles prächtig.

    mir ist unklar wir das rtf-Format Textdrehung verarbeitet, aber wie gesagt wenns klappt ist alles gut.

  • Eine formatierte rtf oder doc Datei mit Autoit erstellen

    • Schnuffel
    • 18. Februar 2024 um 14:59

    ich denke nein.

    Warum muss es denn das rtf / doc Format sein?

    In pdf ist das sicher einfacher erstellt ^^

  • Outlookex Schriftgröße ändern

    • Schnuffel
    • 17. Februar 2024 um 15:00

    für html empfehle ich die Lektüre von: https://wiki.selfhtml.org

    Ist immer etwas schwierig, wenn man mit der einen Sprache (AutoIt) eine andere Sprache erstellen will(html)

    Da kommt man gerne durcheinander, auf welcher Ebene man gerade welchen Tag anwenden muss ...

  • Outlookex Schriftgröße ändern

    • Schnuffel
    • 17. Februar 2024 um 14:59

    zum Beispiel so:

    AutoIt
    Opt('MustDeclareVars', 1)
    
    #include-once
    #include <Array.au3>
    #include <WinAPIConv.au3>
    
    
    ; Array heißt $aWeine
    Global $aWeine[][5] = _
    		[ _
    		['02', '1 ', '2021er Silvaner, trocken ', ' 5,00 €', ' 5,00 €'], _
    		['01', '10 ', '2022er Gutenberger´s Winzerschoppen, lieblich', ' 5,00 €', ' 50,00 €'], _
    		['04', '100 ', '2021er Müller-Thurgau u. Silvaner, lieblich', ' 5,00 €', ' 500,00 €'], _
    		['08', '1000 ', '2022er Blauer Spätburgunder Rosé, lieblich', ' 5,00 €', ' 5000,00 €'], _
    		['07', '1 ', '2022er Rotling, halbtrocken', ' 10,00 €', ' 10,00 €'] _
    		]
    
    ;MsgBox(0,"Alle Artikel", $AlleArtikel)
    
    _ArrayDisplay($aWeine)
    
    ;~ For $Col = 0 to $Cols - 1 ;wird nur benötigt wenn die Spalten überschriften haben
    ;~ $AlleArtikel &= '<th>' & $aWeine[0][$Col] & '</th>'
    ;~ Next
    
    Global $Wert, $Rahmen = 'style="border: 1px solid black;"' ; Tabellen-Rahmen in schwarz
    Global $Tabelle = '<table>'
    
    
    ; Tabelle
    For $Row = 0 To UBound($aWeine, $UBOUND_ROWS) - 1
    	$Tabelle &= '<tr>'  & @CRLF
    	For $Col = 0 To UBound($aWeine, $UBOUND_COLUMNS) - 1
    		$Wert = BinaryToString(StringToBinary($aWeine[$Row][$Col], 1), 1) ; Somit sind Umlaute oder Zeichen wie "´" okay
    		If $Col = 0 Then
    			$Tabelle &= '<td style="border: 1px solid black;text-align: center;">' & $Wert & '</td>' & @CRLF
    		ElseIf $Col = 2 Then
    			$Tabelle &= '<td style="border: 1px solid black;text-align: left; padding-left:10px;">' & " " & $Wert & '</td>' & @CRLF
    		Else
    
    			$Tabelle &= '<td style="border: 1px solid black;text-align: right;">' & $Wert & '</td>' & @CRLF
    		EndIf
    	Next
    	$Tabelle &= '</tr>' & @CRLF
    Next
    
    $Tabelle &= '</table>'
    ConsoleWrite($Tabelle & @CRLF)
    Alles anzeigen
  • Outlookex Schriftgröße ändern

    • Schnuffel
    • 17. Februar 2024 um 13:53

    sollte das Problem weiträumiger sein brauchen wir den vollständigen code.

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™