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

Beiträge von Schumi

  • Bild in GUI löschen?

    • Schumi
    • 4. August 2016 um 19:54

    Hallo zusammen,
    ja super, GUICtrlDelete() hat funktioniert.
    Besten Dank euch.

    Gruß Schumi

  • Bild in GUI löschen?

    • Schumi
    • 4. August 2016 um 18:31

    Hallo zusammen,
    in der Onlinehilfe ist von UEZ eine tolle Funktion "_GUICtrlPic_Create" (Beispiel 2) zu finden.
    Unter "_GDIPlus_BitmapCreateFromFile" ist das Beispiel auch zu finden.

    Wenn man sich so ein Bild in der GUI erstellt hat - wie kann man es wieder löschen ?
    Mit "_WinAPI_DeleteObject" habe ich es nicht hinbekommen.

    Hat evtl. einer eine Idee?

    Gruß Schumi

  • ZIP - Packen / Entpacken mit Windows eigener Funktion

    • Schumi
    • 4. Juli 2016 um 11:18

    Ich habe doch noch etwas anderes gefunden.
    Hier in der Zip.au3 ist eine Funktion "_Zip_List", die genau das liefert was ich brauche.

    Gruß Schumi

  • ZIP - Packen / Entpacken mit Windows eigener Funktion

    • Schumi
    • 2. Juli 2016 um 20:51

    Hallo BugFix,
    danke für den Tipp.
    Dateien binär einlesen habe ich noch nicht versucht. Na, ich versuche es mal ...

    Besten Dank.
    Gruß Schumi

  • ZIP - Packen / Entpacken mit Windows eigener Funktion

    • Schumi
    • 1. Juli 2016 um 17:33

    Hallo BugFix,
    ich habe mal eine Frage zu der Funktion "_BuildInZIP".

    Kann man beim Entpacken die Dateinamen (also die entpackt werden sollen) auslesen.
    Ich möchte deine tolle Funktion gerne nutzen. Aber ich möchte auch im Script "sehen" was ich da auspacke.

    Wie kann man das machen?

    Gruß Schumi

  • Listview ohne Fokus - Farbe des selektiertes Elements ändern

    • Schumi
    • 10. Januar 2016 um 11:48

    Hallo BugFix,
    das hat leider nicht funktioniert. Es hat sich keine Änderung gezeigt.
    Auch ohne diese Zeile _GUICtrlListView_SetItemState($hWnd, $iIndex, $LVIS_FOCUSED, $LVIS_FOCUSED) hat das nicht funktioniert.

    Ich habe das so eingebaut:

    Spoiler anzeigen
    AutoIt
    #Region ### START Koda GUI section ### Form=
    $Form1_1 = GUICreate("Fenster-Info", 783, 568, 556, 198, $GUI_SS_DEFAULT_GUI + $WS_SIZEBOX)
    $lb_Info = GUICtrlCreateLabel("", 208, 136, 342, 25) ; Label zur Kontrollanzeige
    ;div.
    ;GUICtrlCreateLabel
    ;GUICtrlCreateButton
    ;GUICtrlCreateListView
    ;GUICtrlCreateTab
    usw...
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    ; ermittle die ClassNN von der Listview
    $WGTxtListViewClassNN = GetClassNameNN_FromControlID($Form1_1, $WGTxtListView)
    ; ermittle die ClassNN vom Control welches jetzt den Focus hat 
    $Focus = ControlGetFocus($Form1_1)
    While 1
    	$nMsg = GUIGetMsg()
    	Switch $nMsg
    		Case ... für dies
    		Case ... für das
    	EndSwitch
    	If $Focus <> ControlGetFocus($Form1_1) Then 	; prüfe ob sich der Focus geändert hat
    		If $Focus = $WGTxtListViewClassNN Then  ; wenn ja - war das der Focus von der Listview
    			_GuiCtrlListView_SetFocusSelected($WGTxtListView) ; wenn ja - ruf die Funktion von BugFix auf
    		Else
    			GUICtrlSetData($lb_Info, "False: " & $Focus & " = " & $WGTxtListViewClassNN) ; wenn nein - zeige welcher Fucus war es
    		EndIf
    		$Focus = ControlGetFocus($Form1_1)
    	EndIf
    WEnd
    ; Funktion von BugFix mit kleinen Änderunegn
    Func _GuiCtrlListView_SetFocusSelected($hWnd ) 
    ; Quelle: https://autoit.de/index.php/Thread/29498-GuiCtrlListView-SetFocusSelected/?postID=237411#post237411
    	$iIndex = _GUICtrlListView_GetSelectionMark($hWnd) ; ermittle den Index vom selectiertem Element
    	IF $iIndex = -1 Then Return
    	GUICtrlSetData($lb_Info, "True: Index= " & $iIndex & " neuer Focus= " & ControlGetFocus($Form1_1)) ; 
    	_GUICtrlListView_BeginUpdate($hWnd)
    	_GUICtrlListView_SetItemState($hWnd, $iIndex, $LVIS_FOCUSED, $LVIS_FOCUSED)
    	_GUICtrlListView_SetItemState($hWnd, $iIndex, $LVIS_SELECTED, $LVIS_SELECTED)
    	_GUICtrlListView_EnsureVisible($hWnd, $iIndex)
    	_GUICtrlListView_EndUpdate($hWnd)
    EndFunc
    Func GetClassNameNN_FromControlID( $wndTitle, $id , $winText="")
    ; Quelle: https://www.autoitscript.com/forum/topic/60043-get-classnamenn-by-control-id/
        ; Derive the Window Class for the given Control ID
        Local $hWnd = ControlGetHandle( $wndTitle, $winText, $id )
        Local $ClassName = _WinAPI_GetClassName( $hWnd )
        ; Get an array of classes associated with the same window
        Local $ClassList = StringSplit( WinGetClassList( $wndTitle, $winText), @LF )
        Local $ClassCount = 0
        ; Walk the array.
        For $i = 1 to $ClassList[0]
            If $ClassList[$i] = $ClassName Then
                ; If we encounter the same classname, increment the class count
                $ClassCount += 1
                ; Obtain the Control ID using the ClassNameNN syntax
                $Test_ClassNameNN = $ClassName & $ClassCount
                $Test_hWnd = ControlGetHandle( $wndTitle, $winText, $Test_ClassNameNN )
                $Test_ID = GetControlID( $Test_hWnd )
                ; Test if the ID's are the same
                If $id = $Test_ID then Return $Test_ClassNameNN
            EndIf
        Next
    EndFunc
    Func GetControlID($hwnd)
    ; Quelle: https://www.autoitscript.com/forum/topic/60043-get-classnamenn-by-control-id/
        Local $ID = DllCall('user32.dll', 'int', 'GetDlgCtrlID', 'hwnd', $hwnd)
        if IsArray ($ID) Then Return $ID[0]
        Return 0
    EndFunc
    Alles anzeigen

    Deine Funktion wird also immer nach dem Focuswechsel aufgerufen. Aber das kann doch nicht schädlich sein, oder doch?

    Gruß Schumi

  • Listview ohne Fokus - Farbe des selektiertes Elements ändern

    • Schumi
    • 8. Januar 2016 um 18:14

    wird getestet...
    Ich melde mich dann ...

    Vielen Dank.
    Gruß Schumi

  • Listview ohne Fokus - Farbe des selektiertes Elements ändern

    • Schumi
    • 8. Januar 2016 um 16:48

    Hallo BugFix,
    vielen Dank. Das ist ja sehr interessant.
    Einen Haken hat die Funktion aber - der Aufruf.

    Die GUI-Abfrage mache ich mit:
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case ...
    ...usw.

    Wie kann ich denn den Fokus-Wechsel abfragen?
    Das könnte aber mit ControlGetFocus() gehen, oder?

    Gruß Schumi

  • Listview ohne Fokus - Farbe des selektiertes Elements ändern

    • Schumi
    • 8. Januar 2016 um 14:55

    Hallo Kanashius,
    vielen Dank für die Info.
    In einer Listbox ist das komischerweise nicht so. Da bleibt das Blau erhalten.
    Ich werde mir das auch noch einmal anschauen.

    Vielen Dank.
    Gruß Schumi

  • Listview ohne Fokus - Farbe des selektiertes Elements ändern

    • Schumi
    • 8. Januar 2016 um 14:17

    Hallo teamnoobPDB,
    das markierte Item soll ja bei Fokusverlust gut sichtbar bleiben.
    Und eine Fokus-Prüfung/Steuerung hört sich recht umfangreich an. Ich möchte auch nicht mit Kanonen auf Spatzen schießen.

    Vielleicht geht es doch irgendwie einfacher.

    Gruß Schumi

  • Listview ohne Fokus - Farbe des selektiertes Elements ändern

    • Schumi
    • 8. Januar 2016 um 13:08

    Hallo zusammen,
    das selektierte Element einer Listview ist ja in blau schön sichtbar. Wenn die Listview keinen Fucus hat wird daraus ein unscheinbares grau.

    Kann man dieses Grau irgendwie ändern - und wenn ja, wie?

    Gruß Schumi.

  • suche _ControlGetAdvancedMode

    • Schumi
    • 16. Dezember 2015 um 19:10

    Im ersten Test hat das funktioniert - die Funktion "NET_DumpAllControlNames" liefert die Namen.
    Und das kann man sich dann mit [NAME: (derName)] zusammenbauen.

    Super, vielen Dank.
    Gruß Schumi

  • suche _ControlGetAdvancedMode

    • Schumi
    • 16. Dezember 2015 um 18:23

    Ja richtig, dieser Seite habe ich eben auch gefunden.
    Ich schau mir das mal an und teste das mal.

    Besten Dank.
    Gruß Schumi

  • suche _ControlGetAdvancedMode

    • Schumi
    • 16. Dezember 2015 um 15:02

    Hallo AspirinJunkie,
    ich habe jetzt mal so einiges nach deinem Muster getestet. Und was soll ich sagen ... es ist so wie du sagst.

    Bei meiner GUI handelt es sich um eine .NET-Anwendung. Und hier sieht das in dem Window-Info-Tool anders aus.
    Hier im Bild ein Beispiel:

    Hier kann man leider nichts zusammenbauen. Hier findest du auch [NAME:tbFirmenname] . Und darüber kann man das Control wunderbar ansprechen.

    Gruß Schumi

  • suche _ControlGetAdvancedMode

    • Schumi
    • 15. Dezember 2015 um 16:45

    Ja, was will ich erreichen:
    Mit Autoit lese oder schreibe ich Daten aus bzw. in eine GUI. Und dabei benutze ich auch Fensterelemente der GUI.
    Mit den ClassNN kann man das nur bedingt machen - die ändern sich schnell und ich muss das Script laufend anpassen.
    Am besten geht das mit den "Advanced Mode"-Namen.

    Im Laufe der Zeit bekomme ich auch mal eine neue Version der GUI. Dann muss ich natürlich alle "Advanced Mode" überprüfen.
    Die ClassNN habe sich in jedem Fall geändert. Bei den "Advanced Mode" habe noch keine Änderungen gefunden. Ich muss es aber dennoch prüfen.

    Zur Prüfung der ClassNN habe ich das Script von Großvater benutzt. Ein tolles Teil und hier zu finden.
    https://autoit.de/index.php/Thread/27373-WinGetControls-Controls-eines-Fensters-auslesen/?postID=224614&highlight=wingetcontrol

    Und genau dieses Script würde ich gern um die gesuchte Funktion erweitern. Damit kann ich dann die komplette GUI auslesen und sehe alles auf einen Blick.
    Ich will mir also eine eigene Art "Win-Info-Tool" bauen. Damit kann ich dann meine Scripte sehr viel schneller anpassen und muss nicht alle Infos mit Window-Info suchen und kopieren.

    Gruß Schumi

  • suche _ControlGetAdvancedMode

    • Schumi
    • 15. Dezember 2015 um 11:11

    Nein, mit Excel habe ich nichts vor. Das war nur ein Beispiel was viele nachvollziehen können.
    Danke.

    Gruß Schumi

  • suche _ControlGetAdvancedMode

    • Schumi
    • 14. Dezember 2015 um 22:51

    Also nur zur Sicherheit - hier am Beispiel von Excel2010...
    lt. Win-Info-Tool steht hier:

    Advanced Mode [CLASS:EXCEL7; INSTANCE:1]

    Code
    #include "Array.au3"
    
    
    Opt("WinTitleMatchMode", 4)
    $handle = WinGetHandle("Microsoft Excel - Mappe2")
    $aClass = StringSplit(WinGetClassList($handle),@LF)
    _ArrayDisplay($aClass)

    ... und mit dem Test hier bekomme ich 52 Class angezeigt. An der 31. Stelle habe ich "EXCEL7" gefunden.
    So richtig eineindeutig ist das nicht.

    Bekommt man das etwas gezielter hin? Oder habe ich dich noch nicht richtig verstanden?
    Gruß Schumi

  • suche _ControlGetAdvancedMode

    • Schumi
    • 14. Dezember 2015 um 21:12

    Das kenne ich nicht. Das wäre ja toll. Ich teste das mal.
    Vielen Dank.

    Gruß Schumi

  • suche _ControlGetAdvancedMode

    • Schumi
    • 14. Dezember 2015 um 20:03

    Vielen Dank. Das ist es leider nicht.
    Ich suche eine Funktion die mir den "Advanced Mode"-Namen oder Inhalt liefert.

    zB. so...

    Code
    $handle = WinActivate("Mein Fenster")
    $sAdvancedMode = _ControlGetAdvancedMode($handle)
    
    
    ... und in $sAdvancedMode steht dann [NAME:MyWindow]

    Ich habe nichts dazu gefunden. Hast du noch einen anderen Tipp?

    Gruß Schumi

  • suche _ControlGetAdvancedMode

    • Schumi
    • 14. Dezember 2015 um 18:36

    Hallo zusammen,
    in dem Window Info-Tool wird u.a. auch der "Advanced Mode" bzw. "Advanced Class" angezeigt.

    Ich suche eine Funktion mit der man genau diesen "Advanced Mode" aus einem Fensterhandle auslesen kann.
    Hat einer von euch einen Tipp oder eine Lösung?
    Besten Dank.

    Gruß Schumi

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™