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

Beiträge von Moombas

  • Kratzer an Hintertür, was tun?

    • Moombas
    • 15. Dezember 2020 um 15:55

    Witzige Sache, solche verwechslungen :D

    Aber ich will mal nicht so sein:

    • Solange der Kratzer nicht bis zur Grundierung geht: Polieren
    • Solange der Kratzer nur bis zur Grundierung geht (meistens weiß), kann man sich auch mit sehr gründliches Reinigen, Lackstift + Polieren helfen. (Mehrere Anwendungen!!)
    • Sobald der Kratzer durch die Grundierung durch geht: Lackierer und das bedeutet in der Regel die ganze Tür.
  • WM_SETTINGCHANGE

    • Moombas
    • 15. Dezember 2020 um 08:34

    Danke schon mal für die Hilfe Bitnugger.

    Das funktioniert und ich wäre da selber nicht drauf gekommen.

    $cache ist nur eine interne Prüfung ob alles einwandfrei durchgelaufen ist. (Ich erwarte am Ende einen bestimmten Wert der passen muss)

    Sorry mir ging es hierbei nur darum dir die Registryeinträge zu zeigen.

    Ich hätte natürlich überall das komplette Konstrukt weg kürzen können.

  • WM_SETTINGCHANGE

    • Moombas
    • 14. Dezember 2020 um 13:31

    So, vorerst das Registry Problem wieder gelöst.

    Bitnugger : Habe die Registryeinträge, die ich brauche oben nochmal angepasst. Sind ein paar weniger geworden :)

  • WM_SETTINGCHANGE

    • Moombas
    • 14. Dezember 2020 um 08:29

    Da dies Systeme betrifft, die im laufenden Betrieb umgestellt werden, werde ich da eher den Neustart als "Lösung" wählen, als den Explorer neu zu starten, da dies sichtbar für den Anwender wäre.

    Jedoch aktuell macht mir die Registry noch ein wenig Sorgen/Probleme. Ich muss mal weiter testen.

  • WM_SETTINGCHANGE

    • Moombas
    • 11. Dezember 2020 um 15:18

    Einträge, damit ein jpg bzw. jpeg File mit einem anderen Programm geöffnet wird (als Middleware), um ein Problem in Windows 7 zu umgehen.

    Code
        $Wert = '"C:\Fotoviewer.exe" "%1"'
        $REGKEY = "HKEY_CLASSES_ROOT\Applications\Fotoviewer.exe\shell\open\command"
        Regwrite($REGKEY, ""  , "REG_SZ", $Wert)
        if RegRead($REGKEY, "") = $Wert Then
            $cache += 1
        EndIf
    
        $Wert = 'Fotoviewer.exe'
        $REGKEY = "HKEY_CLASSES_ROOT\Local Settings\Software\Microsoft\Windows\Shell\MuiCache"
        Regwrite($REGKEY, "C:\Fotoviewer.exe"  , "REG_SZ", $Wert)
        if RegRead($REGKEY, "C:\Fotoviewer.exe") = $Wert Then
            $cache += 2
        EndIf
    
        $Wert = '"C:\Fotoviewer.exe" "%1"'
        $REGKEY = "HKEY_USERS\" & $SID & "\Software\Classes\Applications\Fotoviewer.exe\shell\open\command"
        Regwrite($REGKEY, ""  , "REG_SZ", $Wert)
        if RegRead($REGKEY, "") = $Wert Then
            $cache += 4
        EndIf
    
        $Wert = 'Fotoviewer.exe'
        $REGKEY = "HKEY_USERS\" & $SID & "\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\MuiCache";
        Regwrite($REGKEY, "C:\Fotoviewer.exe"  , "REG_SZ", $Wert)
        if RegRead($REGKEY, "C:\Fotoviewer.exe") = $Wert Then
            $cache += 8
        EndIf
    
        $Wert = 'Fotoviewer.exe'
        $REGKEY = "HKEY_USERS\" & $SID & "\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.jpg\OpenWithList";
        Regwrite($REGKEY, "b"  , "REG_SZ", $Wert)
        if RegRead($REGKEY, "b") = $Wert Then
            $cache += 16
        EndIf
    
        $Wert = 'Applications\Fotoviewer.exe'
        $REGKEY = "HKEY_USERS\" & $SID & "\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.jpg\UserChoice"
        Regwrite($REGKEY, "Progid"  , "REG_SZ", $Wert)
        if RegRead($REGKEY, "Progid") = $Wert Then
            $cache += 32
        EndIf
    Alles anzeigen

    Habe alle 3 Varianten nun getestet, ohne Erfolg.

    Brauche weiterhin einen Neustart/Neuanmeldung.

    Edit: Evtl. liegt hier noch ein anderes Problem vor. Ich muss noch mal schauen. Jetzt will er das trotz Registryänderungen nicht mehr nehmen -.-

  • WM_SETTINGCHANGE

    • Moombas
    • 11. Dezember 2020 um 14:11

    Wenn ich es also richtig sehe, was deine Links besagen (die ich nicht alle wirklich weiß, wie ich sie umsetzen soll) wäre ich bei folgender Lösung:

    Code
    $hWnd = WinGetHandle("[ACTIVE]")
    _WinAPI_SendMessageTimeout($hWnd, $WM_SETTINGCHANGE)

    Correct?

  • WM_SETTINGCHANGE

    • Moombas
    • 11. Dezember 2020 um 13:05

    Moin zusammen,

    ich habe mal wieder ein kleines Problem.

    Es werden Registryänderungen gemacht, die normalerweise erst nach einem Neustart/Ab&Anmelden greifen.

    WM_SETTINGCHANGE soll dies aber sofort wirksam machen. Ich habe damit jedoch noch nie gearbeitet.

    Könnt ihr mir sagen, wie ich WM_SETTINGCHANGE per autoit sende?

    Ich habe nach vielen Suchen aktuell zwei Varianten gefunden:

    AutoIt
    $hWnd = WinGetHandle("[ACTIVE]")
    _SendMessage ($hWnd, $WM_SETTINGCHANGE)
    AutoIt
    dllCall("user32.dll", "int", "SendMessage", "long", $WM_SETTINGCHANGE)

    Kann mir jemand sagen, ob eine davon tut was sie soll?

  • _Singleton ... AutoItWinSetTitle

    • Moombas
    • 10. Dezember 2020 um 15:32

    Nicht so schöne Lösung aber evtl. ein workaround:

    Schon mal über eine Flag-Datei nachgedacht?

    1. Programm startet
    2. Prüfen ob Flag Datei existiert,
      • wenn ja -> beenden (ohne diese zu löschen),
      • wenn nein -> Flagdatei erstellen und weiter im Programm
    3. Beim beenden des Programms die Flag-Datei löschen.

    Aber Achtung: Bei einem Crash müsstest du sie manuell löschen.

  • Autoit Skript läuft auf anderem PC nicht

    • Moombas
    • 9. Dezember 2020 um 15:51

    Schau mal ob ggf. Berechtigungen beim Problem-PC passen.

    Denn dein Fehler aus dem ersten Post sieht ganz nach so etwas aus.

    Kommt die Fehlermeldung vor dem Logeintrag oder danach (wenn der Fehler aufploppt, den Logeintrag anschauen bevor du die Meldung wegklickst)?

  • Richtige PID vom Browser

    • Moombas
    • 8. Dezember 2020 um 12:03

    Moin zusammen,

    ich sitze an einem kleinen Problem wo ich aktuell nicht weiß wie bzw. wo ich anpacken soll.

    Ich hoffe ich hab nur ein "Brett vorm Kopp" und ihr könnt mir helfen.

    Ich möchte für verschiedene Arbeitsumgebungen meinen Desktop anpassen (Anordnung der Fenster).

    Dafür ermittel ich die Anzahl der Monitore und die Auflösung und wähle darüber die Anordnung autom. aus.

    Nun habe ich das Problem, das ich mir die PID aus der ProcessList hole, dort aber für Firefox und Chrome mehrere Prozesse existieren.

    Gibt es eine Möglichkeit herauszufinden, welcher davon der "richtige" Prozess zum Fenster ist, sonst müsste ich diese beiden weg lassen?

    (PID über Run ist keine Option, da ich mich per RDP auf ein bereits gestartetes/arbeitendes System aufschalte)

    ....

    Hab doch noch eine Lösung gefunden. Für den den es interessiert:

    Code
    Func Office($ExeName, $Monitor)
    Local $i, $PID, $hWnd
    Local Const $ProcessList = ProcessList()
    
        For $i = 1 to $ProcessList[0][0]
            if StringInStr($ProcessList[$i][0], $ExeName) Then
                $PID = $ProcessList[$i][1]
                $hWnd = _WinGetByPID($PID, 1)
                if WinGetTitle($hWnd) <> "" then ExitLoop
            EndIf
        Next
    
        _CenterOnMonitor($hWnd, $Monitor)
        if WinGetState($hWnd) <> 32 then WinSetState($hWnd, '', @SW_MAXIMIZE)
    EndFunc
    
    ;from https://www.autoitscript.com/forum/topic/136271-solved-wingethandle-from-wingetprocess/
    Func _WinGetByPID($iPID, $iArray = 1) ; 0 Will Return 1 Base Array & 1 Will Return The First Window.
        Local $aError[1] = [0], $aWinList, $sReturn
        If IsString($iPID) Then
            $iPID = ProcessExists($iPID)
        EndIf
        $aWinList = WinList()
        For $A = 1 To $aWinList[0][0]
            If WinGetProcess($aWinList[$A][1]) = $iPID And BitAND(WinGetState($aWinList[$A][1]), 2) Then
                If $iArray Then
                    Return $aWinList[$A][1]
                EndIf
                $sReturn &= $aWinList[$A][1] & Chr(1)
            EndIf
        Next
        If $sReturn Then
            Return StringSplit(StringTrimRight($sReturn, 1), Chr(1))
        EndIf
        Return SetError(1, 0, $aError)
    EndFunc   ;==>_WinGetByPID
    Alles anzeigen
  • Anfuehrungszeichen in einem String entfernen

    • Moombas
    • 4. Dezember 2020 um 11:00

    Schon mal mit stringreplace rum probiert?

  • RunAsWait auf Fremdrechner in der AD

    • Moombas
    • 30. November 2020 um 10:45

    Versuch es mal mit psexec (https://docs.microsoft.com/en-us/sysinter…nloads/psexec):

    Code
    Run('psexec.exe -accepteula \\' & $IP & ' -u ' & $Benutzer & ' -p ' & $Passwort & ' \\' & $IP & '\c$\pfad\datei.msi', @ScriptDir, @SW_Hide)
    ProcessWaitClose("psexec.exe")

    Das kann aber je nach Psexec Version ein wenig variieren, meine ist schon etwas älter. Daher musst du mit der aktuellen mal schauen.

    War doch schon auf 2.2^^

  • Programm öffnen

    • Moombas
    • 30. November 2020 um 07:57

    Naja, wohl alles eine Sache des Verständnisses.

    Für mich ist halt Vordergrund = nach vorne holen <> ein minimiertes Fenster wieder öffnen (Restore).

    "...unten aus der Taskleiste..." könnte zwar darauf hin deuten, da jedoch (fast) alle Programme sich in der Taskleiste befinden (und wenn alle Fenster maximiert sind, es nicht anders greifbar wäre), bin ich vom Wortlaut "... in den Vordergrund holt." ausgegangen.

    Aber sollte wirklich nur das Restore gemeint sein, ist die (2.) Lösung von Micha_he natürlich richtig.

  • Programm öffnen

    • Moombas
    • 27. November 2020 um 14:17

    Auch nicht wirklich:

    @SW_HIDE = Hide window
    @SW_SHOW = Shows a previously hidden window
    @SW_MINIMIZE = Minimize window
    @SW_MAXIMIZE = Maximize window
    @SW_RESTORE = Undoes a window minimization or maximization
    @SW_DISABLE = Disables the window
    @SW_ENABLE = Enables the window

    Wie gesagt ich würde es wohl so machen (das entscheidende hier ist das "$HWND_TOP"):

    AutoIt
    $WindowName = 'Title'
    $WinGetPos = WinGetPos($WindowName) ;[0]=X, [1]=Y, [2]=Width; [3]=Height
    _WinAPI_SetWindowPos(WinGetHandle($WindowName), $HWND_TOP, $WinGetPos[0], $WinGetPos[1], $WinGetPos[2], $WinGetPos[3], BitOR($SWP_FRAMECHANGED, $SWP_NOMOVE, $SWP_NOSIZE))

    Und zur Not ginge auch:

    Code
    $WindowName = 'Title'
    WinSetOnTop($WindowName, "", 1)
    WinSetOnTop($WindowName, "", 0)
  • Programm öffnen

    • Moombas
    • 27. November 2020 um 11:26

    Das ist so nicht richtig. @SW_Maximize maximiert das Fenster nur. Wenn es vorher im Hintergrund war bleibt es das auch trotz Maximierung.

    WinSetOnTop('Fenstername', "", 1) setzt es über alle anderen Fenster (dauerhaft), ggf. ist dann noch ein WinSetOnTop('Fenstername', "", 0) notwendig, wenn du es nur temporär nach vorne holen willst.

    Oder mit:

    Code
    _WinAPI_SetWindowPos(WinGetHandle("Fenstername"), $HWND_TOP, WinGetPos("Fenstername")[0], WinGetPos("Fenstername")[1], WinGetPos("Fenstername")[2], WinGetPos("Fenstername")[3], BitOR($SWP_FRAMECHANGED, $SWP_NOMOVE, $SWP_NOSIZE))
  • Verhindern, dass Fenster Größe ändert bei Ziehen an Bildschirmrand

    • Moombas
    • 6. November 2020 um 14:56

    Kannst du nicht mit Events arbeiten?

    Und es gibt noch einen weiteren unbedachten Fall bei dir:

    Wenn du ein Fenster in der Größe änderst und dann nach ganz oben oder unten kommst, wird das Fenster auf die Volle Bildschirmgröße angepasst. Soll das auch verhindert werden?

    1. Fenstergröße (defaultwerte) generell zwischenspeichern
    2. Wenn $GUI_EVENT_RESIZED triggert + Mausposition ganz oben oder ganz unten => Fenstergröße auf alten Wert zurück
    3. Wenn $GUI_EVENT_RESIZED triggert + Mausposition ganz rechts oder ganz links => Fenstergröße auf alten Wert zurück
    4. Wenn $GUI_EVENT_RESIZED triggert + keine der oberen Fälle passt => neue Fenstergröße speichern

    https://www.autoitscript.com/autoit3/docs/f…ISetOnEvent.htm

    Nachteil: Man sieht das ändern der Fenstergröße.

  • Spielt ihr Online Spiele?

    • Moombas
    • 17. September 2020 um 12:15

    Früher gerne WC3 sämtliche TD-Maps (Element TD ist einer meiner liebsten) mit einem online Kollegen zusammen gegen andere, warte immer noch auf WC4 *träum*

    Might & Magic Chess Royale wenn ich auf meinen Schwiegervater warte, wegen:

    Anno 1800 (nicht direkt ein Online Game) im Koop

    Aber halt generell wenig wegen Familie.

  • Problems with Winactivate

    • Moombas
    • 27. August 2020 um 08:01

    Did you test it with ' instead of " ?

  • Brillante Voraussage !

    • Moombas
    • 27. August 2020 um 08:01

    Traurig aber wahr...

  • Access starten und maximieren

    • Moombas
    • 25. August 2020 um 11:03

    Schon mal drüber nachgedacht die Datenbank im eigenen Programm anzeigen und aktualisieren zu lassen!?

    Schau mal hier: https://www.autoitscript.com/forum/topic/14…ccess-database/

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™