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

Beiträge von Bitnugger

  • Warum schreibt AutoIT mein RAM voll ?

    • Bitnugger
    • 8. April 2020 um 18:51
    Zitat von Lanealine

    Habe ich mir mal Installiert, läuft bis jetzt sehr gut. die explorer.exe wird bis jetzt auch nichtmehr vollgeschrieben(warum auch immer?)

    Höchstwahrscheinlich deshalb, weil die RamDisk nicht zu den Orten gehört, die für die Windows-Suche indexiert wurden. Der Ort, an dem du die Dateien vorher erstellt/gelöscht hast, wurde aber sicherlich indiziert, weshalb die explorer.exe Amok läuft. Würdest du die Dateien an einen Ort verlegen, der nicht indiziert wird, würde die explorer.exe auch kein Amok laufen - es wäre aber dennoch die schlechteste Lösung.

    Zitat von Lanealine

    Wofür ist das öffnen/schließen von Dateien überhaupt wichtig ?

    Mit FileOpen kannst du explizit angeben, in welchem Modus die Datei geöffnet werden soll... z.B. ob die zu schreibenden Daten den bereits vorhandenen Inhalt überschreiben sollen ($FO_OVERWRITE), oder ob sie an das Ende angehangen werden sollen ($FO_APPEND).

    Datenbank... die benutze ich, wenn innerhalb der Daten komplexe Suchen durchgeführt werden müssen, ansonsten bevorzuge ich eine direktere/einfachere Lösung... z.B. via UDP oder TCP.

  • Statusbar small

    • Bitnugger
    • 7. April 2020 um 22:53

    Errorhandling in einer UDF... darüber kann man endlos diskutieren... hat für Anfänger den enormen Vorteil, dass Fehler so viel leichter lokalisierbar sind, für Profis aber eher ein Nachteil, weil diese Prüfungen das Script extrem verlangsamen können. Fehler, die fatale Folgen bei falscher Übergabe auslösen könnten, sollten jedenfalls immer so gut es geht überprüft werden.

    Zitat von BugFix

    Aber um auf das eigentliche Thema zurückzukommen, ich werde dann die verwendete Größe der Statusbar mit zurückgeben, dann kann der Anwender selbst für den genauen Platz sorgen.

    Das würde ich mir auch sparen... das kann der Anwender doch leicht auch selbst mit ControlGetPos(), wenn er es denn braucht.

  • Statusbar small

    • Bitnugger
    • 7. April 2020 um 22:03
    Zitat von BugFix

    Beim Positionieren der Statusbar muss ich ja das Fenster um die Höhe der Statusbar vergrößern.

    Das wäre m.E. ein grober Fehler!

    Die Statusbar sollte die Größe des Fensters als gegeben nehmen und sich dort einpassen.

    Der Coder muss selbst darauf achten, dass andere Controls dadurch nicht verdeckt werden. Was passiert denn z.B. wenn das Fenster bereits maximiert ist, oder die Größe via WM_GETMINMAXINFO im Script begrenzt wird?

  • Script möglichst früh mit Windows Starten

    • Bitnugger
    • 7. April 2020 um 21:43

    Dafür gibt es übrigens auch einige externe Tools, mit denen das noch viel feiner geregelt werden kann... z.B.: https://www.r2.com.au/page/products/show/startup-delayer/

  • MsgBox verlangsamt den Skriptablauf unter Win 10

    • Bitnugger
    • 4. April 2020 um 18:40

    Anscheinend tritt das Problem erst dann auf, wenn durch eine aufgerufene Funktion eine GUI erstellt wird... wobei es egal ist, ob diese danach noch existiert oder wieder gelöscht wurde.

    AutoIt
    #include <Array.au3>
    
    Global $aArray = [1,2,3,4,5]
    
    ConsoleWrite("> ------------------------------------------" & @CRLF)
    _Calc('vor ...')
    
    _ArrayDisplay($aArray, '$aArray')
    _Calc('nach _ArrayDisplay')
    
    Opt('GUIOnEventMode', 1)
    _Calc('nach GUIOnEventMode=1')
    ConsoleWrite("> ------------------------------------------" & @CRLF)
    
    Func _Calc($sMsg)
        Local Static $iLoop = 1
        ConsoleWrite(StringFormat("> >>>>> Check %2i %s <<<<<\n", $iLoop, $sMsg))
        For $j = 1 To 3 Step 1
            Local $iTime = TimerInit(), $iValue = 0
            For $i = 1 to 5000000
                $iValue += 1
            Next
            $iTime = TimerDiff($iTime)
            ConsoleWrite(StringFormat("! Elapsed time %2i : %4.3f ms\n", $j, $iTime))
        Next
        $iLoop += 1
    EndFunc   ;==>_Calc
    Alles anzeigen

    > ------------------------------------------

    > >>>>> Check 1 vor ... <<<<<

    ! Elapsed time 1 : 1069.034 ms

    ! Elapsed time 2 : 1070.383 ms

    ! Elapsed time 3 : 1057.873 ms

    > >>>>> Check 2 nach _ArrayDisplay <<<<<

    ! Elapsed time 1 : 7703.088 ms

    ! Elapsed time 2 : 7672.584 ms

    ! Elapsed time 3 : 7650.816 ms

    > >>>>> Check 3 nach GUIOnEventMode=1 <<<<<

    ! Elapsed time 1 : 9330.554 ms

    ! Elapsed time 2 : 9310.725 ms

    ! Elapsed time 3 : 9472.904 ms

    > ------------------------------------------

  • Allgemeiner Meinungsaustausch zum Thema "Corona"

    • Bitnugger
    • 30. März 2020 um 00:56
    Zitat von Professor Bernd

    Boah, da ist ja gar kein Klopapier drin!?

    Von dem Zeug muss man pinkeln... wofür also unnötig Geld für Klopapier ausgeben? 8o

  • Allgemeiner Meinungsaustausch zum Thema "Corona"

    • Bitnugger
    • 29. März 2020 um 14:53

    Quarantäne-Kisten.jpg

  • Frame aus Video extrahieren

    • Bitnugger
    • 24. März 2020 um 00:59

    Sehr schön! ;)

  • Mehr Daten, als Partition groß ist! wtf...

    • Bitnugger
    • 20. März 2020 um 14:40
    Zitat von eukalyptus

    Ich finde Gefallen an Hardlinks.

    Z.B. hab ich ca 25 ffmpeg.exe verstreut und das sind in Summe 1.5GB

    Bei ausführbaren Dateien musst du aber auf die Version und Architektur (32/64 bit) achten, da es sonst zu sehr schwer auffindbaren Fehlern kommen kann.

    Ich verwende Hardlinks und Symlinks hauptsächlich, um Filme und Serien, die auf verschiedenen Datenträgern verstreut sind, in einem Verzeichnis zu sammeln, dass ich dann in Kodi als Quelle angeben kann.

  • Per Script Useraktivität simulieren?

    • Bitnugger
    • 2. März 2020 um 13:29
    Zitat von akira2012

    alpines Blockinput würde ich in so einem Script nicht verwenden. Stell Dir mal vor das Script bricht gerade ab wenn Blockinput auf 1 steht. xD

    Dafür gibt es doch die Funktion OnAutoItExitRegister...

  • Eingabe in Inputboxen in Großbuchstaben wandeln

    • Bitnugger
    • 16. Februar 2020 um 14:23
    Zitat von Oscar

    Oder als Einzeiler:

    Das sind aber zwei Zeilen... :evil:

    Code
    Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
        Return BitAND($iwParam, 0xFFFF) = $cInput And BitShift($iwParam, 16) = $EN_CHANGE ? Not GUICtrlSetData($cInput, StringUpper(GUICtrlRead($cInput))) : $GUI_RUNDEFMSG
    EndFunc   ;==>WM_COMMAND
  • Adding and Installing Automatcally Personal Digital Certificate to Root Store of Windows

    • Bitnugger
    • 9. Februar 2020 um 15:12

    https://docs.microsoft.com/en-us/windows-…a-test-computer

  • Pfadangabe mit Variable

    • Bitnugger
    • 8. Februar 2020 um 13:11
    Zitat von Musashi

    Na ja, sooo aufwendig ist es nun auch nicht (24 Zeilen ^^ ). Man könnte sogar einiges kürzen bzw. weglassen, aber ich wollte, dass es für Dich nachvollziehbar bleibt.

    Hihi... ja, mit viel Mühe kann man da sicher auch einen Einzeiler draus machen, den dann aber keiner mehr lesen kann. 8o

    Hier mal meine etwas kürzere Version:

    C++
    #Include <File.au3>
    
    Global $g_sParam, $g_sPrefix, $g_sDrive = "", $g_sDir = "", $g_sFileName = "", $g_sExtension = ""
    
    ; Wird das Skript aus dem SciTE-Editor (also nicht die kompilierte .exe) gestartet, enthält $CMDLINERAW : /ErrorStdOut "[ScriptFullPath]" ==> ENTFERNEN
    $g_sParam = StringStripWS(@Compiled ? $CMDLINERAW : StringReplace($CMDLINERAW, '/ErrorStdOut "' & @ScriptFullPath & '" ', ""), 3)
    If $g_sParam = '' Then Exit MsgBox(48, "Meldung", "Übergabeparameter ist leer")
    $g_sPrefix    = @UserName & "-"& @YEAR & "-" & @MON & "-" & @MDAY & "-" & @HOUR & "-" & @MIN & "-" & @SEC & "-"
    _PathSplit($g_sParam, $g_sDrive, $g_sDir, $g_sFileName, $g_sExtension)
    If Not FileMove($g_sDrive & $g_sDir & $g_sFileName & $g_sExtension, $g_sDrive & $g_sDir & $g_sPrefix & $g_sFileName & $g_sExtension, $FC_OVERWRITE) Then _
        MsgBox(16, "Meldung", "FileMove fehlgeschlagen" & @CRLF & "$g_sParam = " & $g_sParam)
    Alles anzeigen
  • Mausbewegung erkennen

    • Bitnugger
    • 28. Januar 2020 um 11:35
    AutoIt
    ;-- TIME_STAMP   2020-01-28 11:33:46
    
    Opt('MustDeclareVars', 1)
    
    #include <GUIConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    
    #Region - GUI Create
    Global $g_hGUI1 = GUICreate('GUI 1 WM_MOUSEMOVE ', 406, 429, 561, 309)
    GUISetState()
    Global $g_hGUI2 = GUICreate('GUI 2 WM_MOUSEMOVE ', 406, 429, 963, 309)
    GUISetState()
    
    GUIRegisterMsg($WM_MOUSEMOVE, "WM_MOUSEMOVE")
    #EndRegion
    
    #Region - GUI SwitchLoop
    While True
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                Exit
        EndSwitch
    WEnd
    #EndRegion
    
    ; WM_MOUSEMOVE event handler
    ;~ wParam    -    Indicates whether various virtual keys are down. This parameter can be one or more of the following values.
    ;~         Value                   Meaning
    ;~         MK_CONTROL    0x0008    The CTRL key is down.
    ;~         MK_LBUTTON    0x0001    The left mouse button is down.
    ;~         MK_MBUTTON    0x0010    The middle mouse button is down.
    ;~         MK_RBUTTON    0x0002    The right mouse button is down.
    ;~         MK_SHIFT      0x0004    The SHIFT key is down.
    ;~         MK_XBUTTON1   0x0020    The first X button is down.
    ;~         MK_XBUTTON2   0x0040    The second X button is down.
    
    
    ;~ lParam    -    The low-order word specifies the x-coordinate of the cursor. The coordinate is relative to the upper-left corner of the client area.
    ;~                The high-order word specifies the y-coordinate of the cursor. The coordinate is relative to the upper-left corner of the client area.
    
    ;~ Return value
    ;~ If an application processes this message, it should return zero.
    ; ------------------------------------------------------
    Func WM_MOUSEMOVE($hWnd, $iMsgID, $wParam, $lParam)
        #forceref $iMsgID, $wParam
        Local $aPos = _Method_2($lParam)
        Switch $hWnd
            Case $g_hGUI1
                WinSetTitle($g_hGUI1, '', 'GUI 1 WM_MOUSEMOVE X = ' & $aPos[0] & ', Y = ' & $aPos[1])
            Case $g_hGUI2
                WinSetTitle($g_hGUI2, '', 'GUI 2 WM_MOUSEMOVE X = ' & $aPos[0] & ', Y = ' & $aPos[1])
        EndSwitch
    
        Return $GUI_RUNDEFMSG
    EndFunc   ;==>WM_MOUSEMOVE
    
    ;~ Method_2 (GET_X_LPARAM/GET_Y_LPARAM)
    Func _Method_2($lParam)
        Local $tStructDWord = DllStructCreate('dword XY')
        Local $tStructShort = DllStructCreate('short Y;short X', DllStructGetPtr($tStructDWord))
        DllStructSetData($tStructDWord, 'XY', $lParam)
        Local $aPos = [DllStructGetData($tStructShort, 'X'), DllStructGetData($tStructShort, 'Y')]
    
        Return $aPos
    EndFunc   ;==>_Method_2
    Alles anzeigen
  • Opsi / Autoit & Netzwerk zugriff

    • Bitnugger
    • 21. Januar 2020 um 22:17
    Zitat von Pronetix

    Woran könnte das liegen?

    Hast du das überprüft?

    Zitat von Bitnugger

    Überprüfe aber auch, ob der User "Administrator" auf dem Server aktiviert ist.

    Denn wenn der User Administrator deaktiviert ist, schlägt RunAs natürlich fehl... aber das kannst du ja leicht überprüfen.

    Local $iPID = RunAs($sUserName, $sDomain, $sPassword, $RUN_LOGON_NOPROFILE, $sProgram, $sWorkingDir, @SW_SHOW)

    If Not $iPID Or @error Then MsgBox(16, "Error", "$iPID --> " & $iPID & @CRLF & "!@ " & @TAB & "#Error: " & @error & @TAB & "#Extended: " & @extended & @CRLF)

    Zitat von Bitnugger

    If Not FileExist("\\" & $sDomain & $sProgram) Then Exit MsgBox(16, 'Error', 'MailStoreOutlookAddinSetup... nicht gefunden!' & @CRLF & @CRLF & "\\" & $sDomain & $sProgram)

    Hier fehlt bei FileExist noch ein s... also FileExists! Anderfalls bricht der Interpreter die Ausführung des Scripts sofort ab und SciTE präsentiert einen Fehler: error: FileExist(): undefined function.

    Evtl. aber läuft das Programm einfach nur nicht auf dem Betriebssystem des Clients.

    Wenn du auf dem Server eine Eingabeaufforderung öffnest und dort den Befehl net user administrator eingibst, kannst du sehen, ob das Benutzerkonto des Users Administrator aktiv ist und ob ein Passwort gesetzt wurde.

    net.png

  • Umlaute ersetzen

    • Bitnugger
    • 20. Januar 2020 um 23:06
    Zitat von bigeasy76

    Local $sAusnahmeDatei = FileOpen("ausnahmen.txt")

    Hier auch... FileOpen gibt ein (Pseudo-) Handle zurück und kein String.

    Local $hAusnahmeDatei = FileOpen("ausnahmen.txt")

    Wobei FileOpen/FileClose hier gar nicht nötig sind.

  • Opsi / Autoit & Netzwerk zugriff

    • Bitnugger
    • 20. Januar 2020 um 20:56
    Zitat von Pronetix

    Ich hab das jetzt grade versucht aber es passiert nichts. Die Exe für die installation wird nicht aufgrufen.

    Klar, weil du den UserName falsch angegeben hast... das Domäne\ muss da weg - die gibst du mit dem zweiten Parameter an.

    Desweiteren könnte noch der Pfad zur Exe falsch sein. Überprüfe aber auch, ob der User "Administrator" auf dem Server aktiviert ist. Wenn es dann immer noch nicht will, gib mal für WorkingDir @TempDir an.

    Local $sUserName = "Administrator", $sDomain = "Daten-01", $sPassword = "Passwort", $sWorkingDir = @TempDir, $sProgram = "\Install\MailstoreAddIn\MailStoreOutlookAddinSetup-9.1.0.10258.msi"

    If Not FileExist("\\" & $sDomain & $sProgram) Then Exit MsgBox(16, 'Error', 'MailStoreOutlookAddinSetup... nicht gefunden!' & @CRLF & @CRLF & "\\" & $sDomain & $sProgram)

    RunAs($sUserName, $sDomain, $sPassword, $RUN_LOGON_NOPROFILE, $sProgram, $sWorkingDir, @SW_SHOW)

  • Opsi / Autoit & Netzwerk zugriff

    • Bitnugger
    • 18. Januar 2020 um 15:45

    Um ohne Anmeldeinformationen auf den Server (\\Daten-01) zugreifen zu können, muss der Benutzername und auch das Passwort des angemeldeten Users auf dem Client identisch mit dem auf dem Server sein.

    Müssen Anmeldeinformationen angegeben werden, kannst du das nicht mit ShellExecute machen, da hier keine Möglichkeit besteht, die Anmeldeinformationen mit zu übergeben. Mit RunAs geht dies aber.

    ShellExecute("\\Daten-01\Install\MailstoreAddIn\MailStoreOutlookAddinSetup-9.1.0.10258.msi")

    #include <AutoItConstants.au3>

    Local $sUserName = "Username", $sPassword = "Password", $sWorkingDir = ""

    RunAs($sUserName, "\\Daten-01", $sPassword, $RUN_LOGON_NOPROFILE, "\Install\MailstoreAddIn\MailStoreOutlookAddinSetup-9.1.0.10258.msi", $sWorkingDir, @SW_SHOW)

    Zitat von Pronetix

    Die Berechtigungen auf das Netzlaufwerk habe ich auch schon geprüft diese stehen auf jeder.

    Mit Berechtigungen = Jeder sind übrigens nur lokale User gemeint, nicht die, die sich via Netzwerk anmelden. Du musst auch differenzieren zwischen (NTFS-) Berechtigungen und (Netzwerk-) Freigaben.

  • CSV File Editor

    • Bitnugger
    • 15. Januar 2020 um 12:03
    Zitat von Musashi

    Neue Version 901x (14. Januar 2020) verfügbar, siehe :

    https://www.autoitscript.com/forum/applicat…nt.php?id=63493

    Der Link ist falsch... die ID stimmt nicht (mehr).

    Richtig ist: https://www.autoitscript.com/forum/applicat…nt.php?id=63504

  • Wie: Bestimmte Zeilen von einem String in neuen String kopieren?

    • Bitnugger
    • 14. Januar 2020 um 18:36
    AutoIt
    ;-- TIME_STAMP   2020-01-14 18:23:28   v 0.1
    
    #include <Array.au3>
    
    Local $aTabelle = FileReadToArray('Tabelle.csv'), $aColors[0], $iColors, $aAll, $aSplit
    For $i = 1 To UBound($aTabelle) -1 Step 1
        ReDim $aColors[$i]
        $aColors[$i -1] = StringRegExpReplace($aTabelle[$i], '([^;]);.*', '\1')
    Next
    $aColors = _ArrayUnique($aColors)
    _ArrayDisplay($aColors, '$aColors')
    $iColors = $aColors[0]
    For $i = 1 To $iColors Step 1
        $aAll = _ArrayFindAll($aTabelle, $aColors[$i] & ';.*', 1, 0, 0, 3)
        $aColors[$i] = ''
        For $j = 0 To UBound($aAll) -1 Step 1
            $aSplit = StringSplit($aTabelle[$aAll[$j]], ';', $STR_NOCOUNT)
            $aColors[$i] &= '<li><div id="'&$aSplit[0]&'"><ma>'&$aSplit[1]&'</ma><br><obj>'&$aSplit[2]&'</obj></div></li>' & @CRLF
        Next
    Next
    
    ConsoleWrite('! $aColors[0] = ' & $aColors[0] & @CRLF)
    For $i = 1 To $iColors Step 1
        ConsoleWrite('> $aColors['&$i&']' & @CRLF)
        ConsoleWrite($aColors[$i] & @CRLF)
    Next
    _ArrayDisplay($aColors, '$aColors')
    Alles anzeigen

    Dateien

    li.zip 1,26 kB – 517 Downloads

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™