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

Beiträge von MLE2007

  • [ERLEDIGT]Button über anderen Anwendungen als Overlay

    • MLE2007
    • 12. Februar 2015 um 22:21

    So Funktioniert es nun, kann geschlossen werden, vielen dank für die Hilfe und neuen ideen

    Spoiler anzeigen
    C
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <ColorConstants.au3>
    #include <MsgBoxConstants.au3>
    
    
    Opt("GUIOnEventMode",1)
    WinWaitActive("Homework :") ; Aktiv werden dann
    $pos_A = WinGetPos("Homework :"); Position besorgen
    $hGui = GUICreate("", 110, 24, 0,0, $WS_POPUP)
    $Button = GUICtrlCreateButton("Qualicheck Bilder", 0, 0, 110, 24) ; Erstelle Button
    GUICtrlSetOnEvent(-1,"_GibTitle") ;Button aktion juhu
    GUICtrlSetBkColor($Button, $COLOR_YELLOW) ; Farbe des Buttons
    GUISetState(@SW_SHOW) ; will display an empty dialog box
    AdlibRegister('_WinMove', 500)
    AdlibRegister('_Showornot', 500)
    WinSetOnTop($hGui,"",1) ; Overlay eigenschaft
    $sString4 =""
    
    
    Func _WinMove()
            $p_A = WinGetPos("[ACTIVE]")
            WinMove($hGui, "", $p_A[0]+$p_A[2] - 375, $p_A[1] + $p_A[3]-34)
            $sString4 =""
    EndFunc   ;==>_WinMove
    
    
    Func _Showornot()
           If Winactive("Homework :")then
           $title = WinGetTitle("[ACTIVE]") ;Speichere den Titel des Fensters
           Local $sString1 = StringTrimLeft($title, 9) ; Lösche ersten 9 Zeichen
           Local $sString2 = StringLeft($sString1, 14) ; Kopiere erste 14 Zeichen
           Local $sString3 = StringReplace($sString2, "-", "") ; Ersetze -
           Local $sString4 = StringReplace($sString3, "/", "") ; Ersetze -
           $sOrdnerPfad = "C:\TEST\" & $sString4 ; Erstelle Ordnerpfad Variable
           $iFileExists = FileExists($sOrdnerPfad) ; Prüfe ob es diesen Ordner gibt oder nicht
           If $iFileExists Then
           GUISetState(@SW_Show)
           WinActivate("Homework :")
           $sString4=""
           Sleep(200)
           Else
           GUISetState(@SW_Hide)
           EndIf
       Else
           GUISetState(@SW_Hide)
    
    
           $sString4=""
       EndIF
    EndFunc
    
    
    ; Run the GUI until the dialog is closed
    While Sleep(10)
    
    
    WEnd
    Func _GibTitle()
    
    
          WinActivate("Homework :")
        $test = WinGetTitle("[ACTIVE]")
        $title = WinGetTitle("") ;Speichere den Titel des Fensters
        Local $sString11 = StringTrimLeft($title, 9) ; Lösche ersten 9 Zeichen
        Local $sString21 = StringLeft($sString11, 14) ; Kopiere erste 14 Zeichen
        Local $sString31 = StringReplace($sString21, "-", "") ; Ersetze -
        Local $sString41 = StringReplace($sString31, "/", "") ; Ersetze -
        $sOrdnerPfad1 = "C:\TEST\" & $sString41 ; Erstelle Ordnerpfad Variable
        Run("explorer.exe " & $sOrdnerPfad1)
        ;MsgBox($MB_SYSTEMMODAL, "", $sOrdnerPfad1)
    EndFunc
    Alles anzeigen
  • [ERLEDIGT]Button über anderen Anwendungen als Overlay

    • MLE2007
    • 12. Februar 2015 um 12:23

    So meinen Fehler gefunden Bug Fixer...

    So bekomme ich zwar meinen Button, aber ich habe das selbe verhalten wie über die Winapi funktion. Sobald ich maximiere habe ich das selbe verhalten :(
    Es verhart in der ursprünglichen Position

    Spoiler anzeigen
    Code
    $targetctl = _GuiTarget ("Homework")
    $btnhide = _TargetAddButton("Bilder", 30,40, 100, 100,-1,-1, $targetctl)
    GUISetState(@SW_SHOW)
    While 1
    
    
    WEnd
  • [ERLEDIGT]Button über anderen Anwendungen als Overlay

    • MLE2007
    • 12. Februar 2015 um 12:09

    EDIT: FEHLER WOHL GEFUNDEN ICH SPIELE BISSCHEN UND POSTE LÖSUNG DANN

    Spoiler anzeigen


    Okay.... :D

    Ich versuche mich da gerade reinzulesen aber so wirklich schlau werde ich daraus nicht....

    Wenn Ich es richtig verstehe muss ich mein Zeil mit GUItarget angeben und mit TargetaddButton den Button hinzufügen?

    Aber er haut mir da einen Fehler raus, Zeile 185 targetaddchild Funktion unbekannt.

    Sorry aber mit UDF kenne ich mich null aus, und das scheint echt kompliziert zu sein... Kannst du mir ein Anhaltspunkt geben ?


    EDIT: FEHLER WOHL GEFUNDEN ICH SPIELE BISSCHEN UND POSTE LÖSUNG DANN

    Spoiler anzeigen
    C
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <ColorConstants.au3>
    #include <MsgBoxConstants.au3>
    #include <ANYGUIv2.8.au3>
    ;===============================================================================
    ; Function Name:    _TargetaddButton()
    ; Description:      Add Button to existing control/window
    ; Parameter(s):     $text     - text to display on button
    ;                   $PosX     - 'X' horiz. position coordinate
    ;                   $PosY     - 'Y' vert.  position coordinate
    ;                   $SizeX    - 'X' horiz. Size value
    ;                   $SizeY    - 'Y' vert.  Size value
    ;                   $style [optional]    - 'style' of Button control
    ;                   $exstyle [optional]  - 'exstyle' of Button control
    ;                   $LocTargethWnd [optional] - 'Local' _GuiTarget assigned variable
    ; Requirement(s):   #include <guiconstants.au3>
    ; Return Value(s):  On Success - Returns 3 element array:
    ;                   $a[0] = ControlId of Button control
    ;                   $a[1] = hWnd of Button control
    ;                   $a[2] = hWnd of Button controls Child window
    ;                   On Failure -  returns 0, @error set to 1
    ; Author(s):        Quaizywabbit
    ;===============================================================================
    ;===============================================================================
    ; Function Name:    _GuiTarget()
    ; Description:      Targets any existing Window/Control for Control/Child window additions
    ; Parameter(s):     $wintitle               - Window Title
    ;                   $mode      [optional]     1 = "Single Window";
    ;                                [Default]==> all else = "Multiple"
    ;                   $wintext   [optional]   - Text in "Target" window
    ;                   $controlid [optional]   - "Targeted" Control in window **OR** array containing x and y coords
    ; Requirement(s):   #include <guiconstants.au3>
    ; Return Value(s):  On Success - Mode = 1: Global hWnd to window or control
    ;                              - Mode = "", or any value that isn't 1: Local hWnd to _
    ;                                           window or control.
    ;                   On Failure: returns 0 and @error set to 1
    ; Author(s):        Quaizywabbit
    ;===============================================================================
    
    
    WinWaitActive("Auftrag:") ; Aktiv werden dann
    _GuiTarget("Auftrag:")
    _TargetaddButton("TEST", 10,10,100,100)
    
    
    While 1
       WEnd
    Alles anzeigen
  • [ERLEDIGT]Button über anderen Anwendungen als Overlay

    • MLE2007
    • 12. Februar 2015 um 11:09

    Ich habe meine Code mittlerweile etwas ändert, und nun habe ich dieses ewige wieder laden nicht mehr.
    Er macht es zwar immer noch aber nur noch 2-3 mal bei mir.
    Durch die Sleep befehle in Zeile 23 und 26 läuft es nun soweit....

    Was aber nun nicht funktioniert ist der Button selbst...

    Spoiler anzeigen
    C
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <ColorConstants.au3>
    #include <MsgBoxConstants.au3>
    
    
    WinWaitActive("Homework") ; Aktiv werden dann
    $pos_A = WinGetPos("Homework"); Position besorgen
    $hGui = GUICreate("Homework", 110, 24, 0,0, $WS_POPUP)
    $Button = GUICtrlCreateButton("Bilder", 0, 0, 110, 24) ; Erstelle Button
    GUICtrlSetOnEvent(-1,"_GibTitle") ;Button aktion juhu
    GUICtrlSetBkColor($Button, $COLOR_YELLOW) ; Farbe des Buttons
    GUISetState(@SW_SHOW) ; will display an empty dialog box
    AdlibRegister('_WinMove', 10)
    WinSetOnTop($hGui,"",1) ; Overlay eigenschaft
    
    
    Func _WinMove()
            $p_A = WinGetPos("[ACTIVE]")
            WinMove($hGui, "", $p_A[0]+$p_A[2] - 375, $p_A[1] + $p_A[3]-34)
    EndFunc   ;==>_WinMove
    
    
    ; Run the GUI until the dialog is closed
    
    
    While Sleep(100)
       If Winactive("Homework")then
          GUISetState(@SW_Show)
          Sleep(1000)
       Else
    
    
          GUISetState(@SW_Hide)
          EndIF
    WEnd
    
    
    Func _gibTitle()
     MsgBox($MB_SYSTEMMODAL, "", "Test.")
    EndFunc
    Alles anzeigen
  • [ERLEDIGT]Button über anderen Anwendungen als Overlay

    • MLE2007
    • 12. Februar 2015 um 10:13

    Vielen Dank für diesen Lösungsweg.

    Jedoch habe ich bei dieser Variante das Problem das wenn ich das Fenster Maximiere er anfängt zu buggen.
    Dieses Zeigt sich so das er die Position die angegeben wurde nicht mehr hält. Er verbleibt auf seiner Position, sobald ich dann das Fenster wieder normalisiere verschwindet es einfach.

  • [ERLEDIGT]Button über anderen Anwendungen als Overlay

    • MLE2007
    • 11. Februar 2015 um 16:31

    Hallo Zusammen,

    Ich versuche aktuell einen Button in einer Externen Anwendung einzublenden als wäre dieser Button Teil der Anwendung.
    Dieser Button soll dann anhand des Fenster Titels auf einen Ordner verlinken.

    Bis jetzt habe ich den folgenden Code:

    Problem was ich irgendwie nicht lösen kann ist das ich gerne diesen Button nur dann anzeigen lassen will wenn ein Fenster mit "Homework" im Titel aktiv ist. ( Es kann mehrere Fenster mit der ähnlichen Bezeichnung geben ) Wenn was anderes Aktiv ist, was nicht "Homework" soll er ausgeblendet werden.

    Wenn ich bei Zeile 24 den WinSetOnTop durch den GUISetState ersetze, habe ich aber das Problem das wenn das Fenster inaktiv war und wieder aktiv wird, er sozusagen graphisch mehrmals reloaded und hängt.

    Hat einer einen Tipp wie ich das anders lösen kann ?

    Vielen Dank

    C
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <ColorConstants.au3>
    #include <MsgBoxConstants.au3>
    
    
    WinWaitActive("Homework ")
    $pos_A = WinGetPos("Homework ")
    $hGui = GUICreate("", 100, 25, 0,0, $WS_POPUP)
    $Button = GUICtrlCreateButton("Bilder", 0, 0, 100, 25) ; Erstelle Button
    GUICtrlSetBkColor($Button, $COLOR_YELLOW) ; Farbe des Buttons
    GUISetState(@SW_SHOW) 
    AdlibRegister('_WinMove', 10)
    WinSetOnTop($hGui,"",1) ; Overlay eigenschaft
    
    
    Func _WinMove()
            $p_A = WinGetPos("[ACTIVE]")
            WinMove($hGui, "", $p_A[0]+$p_A[2] - 365, $p_A[1] + $p_A[3]-33)
    EndFunc   ;==>_WinMove
    
    
    ; Anwendung laufen lassen bis ..........
    While 1
    
    
    If Winactive("Homework ") then
    Winsetontop($hGui,"",1) ; Overlay eigenschaft an
    else
        Winsetontop($hGui,"",0) ; Overlay eigenschaft aus
    EndIf
    
    
       $msg = GUIGetMsg()
       If $msg = $GUI_EVENT_CLOSE Then ExitLoop
    
    
    WEnd
    Alles anzeigen

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™