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

Beiträge von AutoItler

  • Bildschirmaktualisierung ohne Flackern

    • AutoItler
    • 10. Juni 2017 um 21:15

    Hallo Bitnugger,

    vielen Dank für Deinen Hinweis. Die im Netz für dieses Problem angebotenen Lösungen, unter anderem auch die von Dir vorgeschlagene, habe ich sicher (fast) alle ohne einen Erfolg zu verzeichnen, ausprobiert.
    Die Variante F5-Taste, gemäß meines Scriptes, funktioniert 100%-ig und kann als Exe kompiliert jeder Zeit aufgerufen oder mit einer Zeitverzögerung verknüpft im Autostart-Ordner hinterlegt schon beim Programmstart ausgeführt werden. Nur, es "flackert" halt. Und ich habe keine Lösung für dieses Problem gefunden, da es eben wie in VBA keine Funktion gibt, die das ScreenUpdating manipulieren kann.
    Ich bastle momentan auch noch an einer Lösung, die den Desktop kontinuierlich überprüft, ob dieses Icon existiert und wenn ja, es mit "Send('{F5}')" zu eliminieren. Es ist aber noch nicht so weit gediegen, dass ich das Script hier schon vorstellen könnte.

    Vielleicht gibt's ja noch andere Meinungen (und vielleicht auch eine Lösung) zu meinem Problem.

    MfG., Autoitler

  • Bildschirmaktualisierung ohne Flackern

    • AutoItler
    • 9. Juni 2017 um 21:02

    Hallo,
    die Tatsache, dass unter win10 beim PC-Start sporadisch diesen "keiner-weiß-woher-Icon" "Alle Systemsteuerungselemente..." auftaucht, veranlasste mich zu versuchen, mit einem kleinen Script dagegen anzugehen.
    Wenn man das Erscheinen schon nicht verhindern kann, so kann ma es doch kurz und schmerzlos abschießen.

    AutoIt
    ;
    $_winGetH = WinGetHandle('[ACTIVE]') ; das aktuell Fenster wird gesichert
    WinActivate('[CLASS:Progman]') ; Desktop aktivieren
    Send('{F5}') ; Screen neu einlesen (flacker, flacker ....)
    WinActivate($_winGetH) ; das vorher gesicherte Fenster wird wieder aktiviert
    ;
    ;

    Funktioniert, das Icon ist weg. Bloß stört mich bei der Sache, dass der Bildschirm (Desktop - Icons) dabei flackert. So 'ne Art ScreenUpdate(), wie bei der Makroprogrammierung von Word, habe ich in Autoit nicht gefunden.
    Ich bin mir aber sicher, dass mich die "Profis" ;) hier auf den Richten Weg schubsen können.
    Vielen Dank schon mal vorab.
    AutoItler

  • Eigene GUI an ein gestartetes Programm "anheften" ...

    • AutoItler
    • 3. Juni 2017 um 21:06

    Habe eine simple Lösung gefunden:

    AutoIt
    while 1
    ; ...
    ; ...
    $_PosAcro = WinGetPos($_HandleAcroWin, "") ; <== Fenster Adobe Acrobat Reader
    WinMove($_GUI, '', $_PosAcro[0] + 6, $_PosAcro[1] + 5) ; <== Fenster des GUI
    ; ...
    ; ...
    wend

    Auf diese Weise "schleicht" das GUI dem Acrobat-Fenster immer hinterher, wenn ich bewege ...
    Vielen Dank allen, die mir hier mit Rat und Tat zur Seite standen.
    Frohe Pfingsten ...
    AutoItler

  • Schließen einer "ge - run() - ten" Anwendung deaktivieren

    • AutoItler
    • 1. Juni 2017 um 11:36

    Hallo BugFix,
    das bedeutet, dass ich folgenden Teil Deines Scripts:

    Code
    OnAutoItExitRegister('OnAutoItExit')
    Global $hStub_KeyProc = DllCallbackRegister("_KeyProc", "long", "int;wparam;lparam")
    Global $hmod = _WinAPI_GetModuleHandle(0)
    Global $hHook = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($hStub_KeyProc), $hmod)
    Global $hWin   ; = Handle des AcrobatReader
    Global $fActive = False  ; <== to allow hook only on this gui
    ;~ Global $isAlt = False   -- besser als Static in der Callbackfunktion

    gar nicht brauche. Der Rest - Umleitung v. ALT+F4 auf einen Dommy - ist auch für mich als Anfänger verständlich ....
    Ich bedanke mich bei Dir. Wieder was gelernt.
    MfG., AutoItler

  • Eigene GUI an ein gestartetes Programm "anheften" ...

    • AutoItler
    • 31. Mai 2017 um 17:26

    Hallo,
    ich starte in meinem Script mit Run() Microsoft Word. Danach wird ein kleines GUI mit einem Button ausgeführt.
    Das erzeugt GUI soll eine zusätzliche private Funktion für Word bereitstellen. Nun möchte ich, dass das GUI immer links oben im Word-Fenster eerscheint und dort verbleibt, auch wenn ich das Word-Fenster verschiebe.
    Ich habe schon mal mit Child/Parents - Styles probiert => Leider ohne Erfolg.
    Hat irgendwer 'ne Idee. Ich habe momentan keinen vernüftigen Ansatz. Deshalb kann ich auch keinen bereits existierenden Code angeben.
    MfG., AutoItler

  • Schließen einer "ge - run() - ten" Anwendung deaktivieren

    • AutoItler
    • 30. Mai 2017 um 19:16

    Hallo Bugfix,
    danke für Deine Anregung. Die Lösung sieht für mich erst mal sehr kompliziert aus, obwohl den Ansatz schon verstehe.
    Ich muss mir das alles in Ruhe "zur Brust nehmen". Ich will ja nicht nur einfach Code kopieren und einfügen, sondern auch verstehen, was ich da copy&paste.
    Noch 'nen schönen Abend allen, die sich hier engagiert haben.
    Ich melde mich auf jeden Fall, wenn's Prob gelöst ist....

    MfG., AutoItler

  • Schließen einer "ge - run() - ten" Anwendung deaktivieren

    • AutoItler
    • 30. Mai 2017 um 17:09

    Hallo Floops,
    vielen Dank für Deine umfassenden Anregungen.
    bis auf die Deaktivierung von "ALT+F4" beim AcroReader hat alles nach entsprechender Modifikation funktioniert.
    "X" - deaktiviert
    "Strg+F4" - deaktiviert (Schließen einzelner Tabs im AcroReader)
    nur

    AutoIt
    HotKeySet("!{F4}", "_alt_f4")
    ;
    ;
    ;
    Func _alt_f4()
    ; nichts (ich hab Return genommen ...)
    EndFunc

    funktioniert nicht. Irgendeinen genialen Einfall?

  • Schließen einer "ge - run() - ten" Anwendung deaktivieren

    • AutoItler
    • 30. Mai 2017 um 13:49

    Hallo liebe Gemeinde,
    ich möchte gerne ein pdf - Dokument mit mehreren Reitern auf meinem Bildschrim so präsentieren, dass der AcroReader nicht durch Klick aufs "Kreuzchen" geschlossen werden kann.
    Das Schließen soll später nur über einen von mir gewählten Tastendruck erfolgen.
    Dazu hier folgende Gdanken

    Spoiler anzeigen
    AutoIt
    #NoTrayIcon
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Icon=..\..\..\Icons\diab00.ico
    #AutoIt3Wrapper_AU3Check_Stop_OnWarning=y
    #AutoIt3Wrapper_Run_Tidy=y
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <File.au3>
    #include <Array.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    Opt('WinTitleMatchMode', 2)
    Opt('WinWaitDelay', 500)
    
    
    Local $_oFileToLoad = "" ; nimmt später die zu startende pdf-Docs auf
    Local $_titelMsg = 'Öffnungszeiten & Kontaktinformationen'
    Local $_path = 'C:\x_Alter_PC\Eigene Dateien\Winword\Privat\Med\Öffnungszeiten' ; pfad zu den zu startenden pdf-Docs
    Local $_acroPath = RegRead('HKLM\Software\Classes\Software\Adobe\Acrobat\exe', '') & ' ' ; Pfad zum installierten AcroReader
    
    
    ;prüfen, ob AcroReader installiert ist
    If $_acroPath = '' Then
        MsgBox(64, $_titelMsg, 'Das benötigte Programm' & @LF & _
                '"' & 'Adobe Acrobat Reader' & '"' & @LF & _
                'ist offenbar nicht installiert' & @LF & _
                'Das Programm wird beendet.')
        Exit
    EndIf
    
    
    ; alle anzuzeigenden pdf-Doc's in ein Array und eventuelle Fehlerbehandlung
    Dim $_fArray = _FileListToArray($_path, '*.pdf', 1)
    Local $_err = @error
    If $_err > 0 Then
        Select
            Case $_err = 1
                MsgBox(64, $_titelMsg, 'Der Ordner' & @LF & '"' & $_path & '"' & @LF & _
                        'existiert nicht.' & @LF & _
                        'Das Programm wird beendet.')
                Exit
            Case $_err = 2
                MsgBox(64, $_titelMsg, 'Keine entsprechenden "PDF-Dateien" im' & @LF & _
                        'angegebenen Ordner vorhanden.' & @LF & _
                        'Das Programm wird beendet')
                Exit
            Case $_err = 4
                MsgBox(64, $_titelMsg, 'Im Ordner' & @LF & '"' & $_path & '"' & @LF & _
                        'sind keine entsprechenden Dateien enthalten.' & @LF & _
                        'Das Programm wird beendet.')
                Exit
            Case Else
                MsgBox(64, $_titelMsg, 'Unbekannter interner Fehler.' & @LF & _
                        'Das Programm wird beendet.')
                Exit
        EndSelect
        Exit
    EndIf
    
    
    ; Array sortieren und Erstellung des Parameterstrings für den Start mit AcroReader weiter unten
    If _ArraySort($_fArray, 0, 1) Then
        For $i = 1 To $_fArray[0]
            Select
                Case $i < $_fArray[0]
                    $_oFileToLoad &= '"' & $_fArray[$i] & '"' & ' '
                Case $i = $_fArray[0]
                    $_oFileToLoad &= '"' & $_fArray[$i] & '"'
            EndSelect
        Next
    ; Start AcroReader & Parameterstring und Fehlerbehandlung
        Local $_run = Run($_acroPath & $_oFileToLoad, $_path)
        If $_run = 0 Then
            MsgBox(64, $_titelMsg, 'Bei der Ausführung ist ein unbekannter Fehler aufgetreten!' & @LF & _
                    'Das Programm wird beendet.')
            Exit
        Else
            Local $_wWait = WinWait('[CLASS:AcrobatSDIWindow]')
            WinSetState($_wWait, '', @SW_SHOWDEFAULT)
            Send('!n1') ; Erster Reiter im AcroReader wird aktiviert
            ; kleine GUI mit "Schließen"-Button, soll später durch "_ispressed" ersetzt werden
            Local $_hGUI = GUICreate($_titelMsg, 100, 50, 0, 0, BitOR($WS_SIZEBOX, $WS_THICKFRAME, $WS_SYSMENU, $WS_POPUP), -1, $_wWait)
            Local $_Button = GUICtrlCreateButton('Schließen', 10, 10, 80, 30)
            GUISetState(@SW_SHOW)
            While 1
                Local $_msg = GUIGetMsg($_hGUI)
                If $_msg = $_Button Then ExitLoop
            WEnd
            ProcessClose($_run)
            GUIDelete($_hGUI)
        EndIf
    Else
        MsgBox(64, $_titelMsg, 'Bei der Ausführung ist ein unbekannter Fehler aufgetreten!' & @LF & _
                'Das Programm wird beendet.')
        Exit
    EndIf
    Exit
    Alles anzeigen

    Nun suche ich einen Weg, beim gestarteten AcroReader das Schließen-"X" und wenn möglich auch "ALT+F4" / "Strg+F4" zu deaktivieren.
    Leider kann ich die entsprechenden pdf-Docs nicht mitliefern. Ist aber, glaube ich, für meine Anfrage auch gar nicht nötig.
    Vielleicht kann mir jemand helfen.

    "In guter Hoffnung" und bis neulich ..
    AutoItler

    Ps.: Bin auch dankbar für jede Verbesserung am gesamten Code. :thumbup:

  • CLASS-Name für eigene Projekte festlegen

    • AutoItler
    • 10. Mai 2017 um 13:54

    Hallo,
    wenn man ein AutoIT-Script mit einem GUI mit sichbarem Fenster über den Interpreter oder auch kompiliert ausführt, so ist der Klassenname des GUI-Fensters immer "AutoIt v3 GUI". Ist es möglich, dieses GUI eines Script oder kompilierten Datei mit einem selbst definierten Klassenamen zu versehen, in dem beispielsweise der "Programmierername" mit verebigt ist?

  • Befehl "hidden" ausführen

    • AutoItler
    • 21. März 2017 um 10:27

    Vielen Dank für all Eure Gedanken und Hinweise.
    Es ist tatsächlich so, dass dieses Script nur auf meinem PC (Laptop) laufen wird. Da beide Geräte deutschsprachig sind, besteht in dieser Richtung, wie von 'chesstiger' befürchtet, kein Problem.

    Deine Lösung, 'Bitnugger' ist perfekt und funktioniert. Bloß, wie kommt man denn auf solche Lösungswege?.
    Ehrfurchtsvoll stelle ich fest, dass ich noch 'ne Menge lernen muss.
    Vielen Dank nochmals und einen schönen Tag für alle, die sich hier beteiligt haben.

  • Befehl "hidden" ausführen

    • AutoItler
    • 20. März 2017 um 11:23

    Vielen Dank "alpines". Nur leider bekomme ich (leider) aus dem Script heraus überhaupt keinen Zugriff auf dies Fenster mit dem Fortschrittsbalken.
    Das heißt, ich kann das Fenster auch nicht verschieben - Es wäre übrigens eine glänzende Idee gewesen.

  • Befehl "hidden" ausführen

    • AutoItler
    • 20. März 2017 um 11:16

    (Hingo)
    Also "WinSetState('Fenstertitel')" funktioniert leider nicht. Hab vergessen zu erwähnen, dass ich dies bereits probiert hatte. Entschuldigung.

    (BugFix)
    Die PID von "Run()" bezieht sich auf den Prozess 'RunDll32.exe'. RunDll32.exe ist bereits ein fensterloser Prozess.
    Die Ansicht des Fensters mit dem Fortschrittsbalken muss aus dem Aufruf von 'InetCpl.cpl,ClearMyTracksByProcess xxx' kommen.

    Leider funktioneren Eure Vorschläge in diesm Fall nicht. Trotzdem vielen Dank für die Mühen.

  • Befehl "hidden" ausführen

    • AutoItler
    • 20. März 2017 um 10:57

    Hallo,
    um die Internetspuren zu löschen, verwende ich meinem Script folgende Anweisung:

    AutoIt
    ShellExecute('RunDll32.exe', 'InetCpl.cpl,ClearMyTracksByProcess 255', @SystemDir, 'open', @SW_HIDE)

    Der Aufruf macht auch, was er machen soll. Nur leider wird immer das Fenster mit dem Fortschrittsbalken angezeigt, was ich eben nicht möchte.
    Ich habe es mit dem 'Run'-Befehl, leider ebenso erfolglos, versucht.
    Wie kann ich es anstellen, dass das Fenter mit dem Fortschritsbalken unsichtbar bleibt. Ich weiß, das ist nicht unbedingt für die Scriptausführung notwendig; ich möchte es halt nur eben so.

    Ich bedanke mich schon mal für Eure Ideen.

  • Editor SciTE

    • AutoItler
    • 1. März 2017 um 18:19

    Hallo,
    weiß jemand, was im Editor SciTE die blauen Punkte rechts neben der Zeilennummer bedeuten?
    Zur Anschauung habe ich folgend einen Ausschnitt aus meinem Script beigefügt.
    Ich bin mir nicht bewusst, irgend eine Markierung aktiviert zu haben. In anderen Scripts tritt die nicht auf.

    Vielen Dank schon mal ....

  • Cursor bei GUICtrlCreateMenu[Item]() ändern mit GUICtrlSetCursor()

    • AutoItler
    • 3. Januar 2017 um 17:55

    Hallo Kanashius,


    vielen Dank für Deinen Vorschlag. Recht hast Du, es muss nicht sein. Die Funktionalität des Scriptes ist auf jeden gewährleistet.
    Es war nur halt so ein Gedanke, da das compilierte Script von jemanden genutzt werden soll, dem man besser auf eine "Klick-Möglichkeit" mit der Nase drauf stößt. Der 2. Grund für diese optische Spielerei war dem Motto: "Warum? - Weil ich's kann!" -geschuldet.
    Ich werde Deine Idee aufgreifen und versuchen sie einzubauen. Über Erfolg oder Mißerfolg werde ich hier berichten.

    Vielen Dank noch einmal ....

    MfG., Autoitler

  • Cursor bei GUICtrlCreateMenu[Item]() ändern mit GUICtrlSetCursor()

    • AutoItler
    • 2. Januar 2017 um 14:43

    Hallo Autoit-Gemeinde,
    ich möchte mein(e) Script(s) visuell etwas "aufpeppen", indem sich der Cursor bei jedem Überfahren mit der Maus von Buttos und Menüs sowie Menü-Unterpunkten (Items) von "normalem" Cursor in eine Hand mit "Klickfinger" ändert.
    Ich habe es für die Buttonfunktion GUICtrlCreateButton() mit GUICtrlSetCursor(-1, 0) hinbekommen.
    Bei der Anwendung dieser Funktion auf GUICtrlCreateMenu() bzw GUICtrlCreateMenuItem() fuktioniert das aber leider nicht.
    Was mache hier falsch?

    AutoIt
    ; ....
    ; Beispiel-Scriptausschnitt
    ; ....
    ;
    GUICtrlCreateButton($text, $links, $oben, $breite, $höhe)
    GUICtrlSetCursor(-1, 0)
    ; funktioniert, wie gewollt
    ;
    Local $_hGCCM = GUICtrlCreateMenu($text)
    GUICtrlSetCursor(-1, 0)
    ; bzw.
    GUICtrlCreateMenuItem($text, $_hGCCM)
    GUICtrlSetCursor(-1, 0)
    ; funktionieren nicht
    ; ....
    Alles anzeigen

    Ich hoffe, die Code-Extrakte sind aufschlußreich genug.
    Ach, ich habe auch mit den entsprechenden Ctrl-ID's statt "-1" versucht; leider auch kein Erfolg
    Vielleicht hat jemand 'ne Idee, vielen Dank schon mal im voraus.

  • Ein Process - unterschiedliche PID's

    • AutoItler
    • 31. August 2016 um 20:20

    Danke für die Antwort, BugFix.
    Nun bleibt für mich die weiterführende Frage: Wie kann ich die PID der durch das Script geöffneten Instanz ermitteln um diese wieder zu schließen "ProcessClose($PID)".
    Oder gibt es vielleicht einen anderen Weg, diese Inszanz zu schließen?
    Dank schon mal für einen eventuellen Tip ....

  • Ein Process - unterschiedliche PID's

    • AutoItler
    • 30. August 2016 um 18:36

    Hallo, Ihe alle,

    in meinem Script (unten beigefügt) starte ich den Windows Explorer mit Run() und lasse mir die PID via Rückgabewert übergeben.
    Dieser Rückgabewert soll dazu dienen, den speziellen Prozess mittels ProzessClose(#ID) wieder zu schließen.
    Zu meinem großen Erstaunen stellte ich fest, dass der Prozess nicht geschlossen wird. Bei der Fehleranalyse fiel mir auf, dass PID, ermittelt durch Run(), und die im Taskmgr ausgewiesene PID nicht identisch sind. Ich habe dafür keine Erklärung, bin auch nicht so der Profi vor dem Herrn.
    Vielleicht kann mir jemand erklären, wie es dazu kommen und wie ich die richtige PID zum Weiterbenutzen ermitteln kann.

    Hier der Code:

    AutoIt
    #NoTrayIcon
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Icon=..\..\..\Icons\Burning.ico
    #AutoIt3Wrapper_AU3Check_Stop_OnWarning=y
    #AutoIt3Wrapper_Run_Tidy=y
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    
    
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <StaticConstants.au3>
    #include <Misc.au3>
    #include <Constants.au3>
    #include <WinAPI.au3>
    
    
    Opt("TrayIconDebug", 1)
    Opt("WinWaitDelay", 500)
    Opt("WinTitleMatchMode", 2)
    
    
    Local $folder = "Burning", $width = 450, $hight = 450
    
    
    Local $hGui = GUICreate($folder, $width, $hight), $msg, $hDll = DllOpen("user32.dll")
    
    
    Local $hPid = Run(@WindowsDir & "\explorer.exe /N, " & @HomeDrive & @HomePath & "\DeskSub\" & $folder, "", @SW_HIDE)
    #cs
    Die ermittelte PID in $hPid stimmt nicht mit der im Taskmgr ausgewiesenen PID für diesen Process überein
    #ce
    WinWait("[CLASS:CabinetWClass]", "", 5)
    Local $hChild = WinGetHandle("[CLASS:CabinetWClass]", "")
    _WinAPI_SetWindowLong($hChild, -20, $WS_EX_TOOLWINDOW)
    $NEXSTYLE = DllCall($hDll, "int", "GetWindowLong", "hwnd", $hChild, "int", 236)
    DllCall($hDll, "int", "SetWindowLong", "hwnd", $hChild, "int", 236, "int", BitOR($NEXSTYLE[0], $WS_EX_MDICHILD))
    DllCall($hDll, "int", "SetParent", "hwnd", $hChild, "hwnd", $hGui)
    WinActivate($hChild)
    Send("{F11}")
    Sleep(100)
    WinMove($hChild, "", 0, 0, $width, $hight)
    GUISetState(@SW_SHOW, $hGui)
    WinSetState($hChild, "", @SW_SHOW)
    WinActivate($hGui)
    While 1
    	$msg = GUIGetMsg()
    	If $msg = $GUI_EVENT_CLOSE Then ExitLoop
    	Sleep(10)
    WEnd
    DllClose($hDll)
    GUIDelete($hGui)
    
    
    ProcessClose($hPid) ; Diese Funktion führt nicht zu dem gewünschten Resultat
    
    
    Exit
    Alles anzeigen

    Vielen Dank schon mal vorab.

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™