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

  • Leerzeichen vor dem GUI-Titel

    • Moombas
    • 21. März 2024 um 14:07

    Ich denke eher das das bisher ignoriert wurde (von Windows), es aber nachgebessert wurde und damit führende Leerzeichen entfernt werden (ich kann dies auch mit Lazarus erstellten Programmen nachstellen).
    In diesem Fall empfinde ich diese Änderung als durchaus sinnvoll (meine Meinung), da mich solche spielereien in der Regel eher stören.

  • Leerzeichen vor dem GUI-Titel

    • Moombas
    • 21. März 2024 um 12:35

    Wenn es rein um die Optik geht, würde ich dann einfach drauf verzichten oder du musst dir eine titlebar per GUI selber zusammen bauen.

    Oder setz halt einfach einen . davor :D

  • Probleme mit WinMove und Microsoft Teams

    • Moombas
    • 19. März 2024 um 11:23

    Freut mich das ich helfen konnte ;) und gleich mal selber wieder was dazu gelernt :thumbup:

    So soll es sein.

  • Probleme mit WinMove und Microsoft Teams

    • Moombas
    • 15. März 2024 um 11:38

    Danke für die Bestätigung ;)
    Das _ArrayDisplay wird natürlich nicht benötigt und habe ich nur zum Zeigen drinnen gelassen, da es mehrere Einträge gibt.

    Bekloppterweise funktionierte es nicht den Titel mit wingethandle() mit "|" bzw. "| " zu erweitern (= keine Ergebnisse) aber auf diese Weise klappte es dann.

    Btw.: Ich würde die Funktion für eine dynamische Verwendung so nutzen/Umbauen:

    AutoIt
    Opt('MustDeclareVars', 1)
    
    WinMove(Get_Window('CLASS', 'TeamsWebView', '|'),"", 1, 1, 735, 720)
    
    Func Get_Window($TYPE, $Data, $Extra); Type can be CLASS or TITLE
    Local Const $aWinList = WinList("[REGEXP" & $TYPE & ":(?i)(.*" & $Data & "*)]")
    
    	For $i = 0 to Ubound($aWinList) - 1
    		If StringInStr($aWinList[$i][0], $Extra) then
    			Return $aWinList[$i][0]
    		EndIf
    	Next
    EndFunc
    Alles anzeigen
  • Probleme mit WinMove und Microsoft Teams

    • Moombas
    • 15. März 2024 um 11:06

    Ich habe es nochmal probiert und bekam immer 2 handles als Ergebnis. Allerdings war das 2. (in meinem aktuellen Test) immer das Gesuchte.
    Dynamisch dann so:

    AutoIt
    Func Example()
    ; Retrieve a list of window handles using a regular expression. The regular expression looks for titles that contain the word SciTE or Internet Explorer.
    Local Const $aWinList = WinList("[REGEXPCLASS:(?i)(.*TeamsWebView*)]")
    	_ArrayDisplay($aWinList)
    	For $i = 0 to Ubound($aWinList) - 1
    		If StringInStr($aWinList[$i][0], '|') then
    			WinMove($aWinList[$i][0],"", 1, 1, 735, 720)
    			ExitLoop
    		EndIf
    	Next
    EndFunc   ;==>Example
    Alles anzeigen
  • Probleme mit WinMove und Microsoft Teams

    • Moombas
    • 14. März 2024 um 15:43

    Also ein Q&D Test mid dem Beispiel aus der Hilfe und der oben genannten Class funktioniert bei mir einwandfrei (fürs schließen und winmove)

  • Probleme mit WinMove und Microsoft Teams

    • Moombas
    • 14. März 2024 um 15:16

    Sicher das du das richtige handle hast?
    Teams (ich nutze das "neue") hat im Titel bei mir alles mögliche stehen, und im Taskmanager sehe ich mind. 2 Unterprozesse für Teams, die "Micosoft Teams" enthalten, du hast also eine mind. 50%ige chance das falsche zu treffen (korrigiert mich wenn ich falsch liege).

    Bei mir wäre im betreffenden Fenster für den Titel folgendes Konstant und in Kombination einmalig: "|Unternehmensname|account|Microsoft Teams" (evtl. reicht dir hier auch "|Microsoft Teams")

    Aber die Class "TeamsWebView" könntest du ggf. auch nutzen.

  • Hook auf die MsgBox

    • Moombas
    • 8. März 2024 um 11:18

    Ich würde das eher in einer eigenen mini-sub Gui umsetzen, ist wesentlich einfacher und du hast volle Kontrolle.

    AutoIt
    Opt('MustDeclareVars', 1)
    
    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GUIConstants.au3>
    
    consolewrite(@CRLF & GUI_Create_1('"Auswahl für Nr. xxxxxx" & " treffen"', $MainGUIHandle) & @CRLF)
    
    Exit
    
    
    Func GUI_Create_1($Text, $MainGUI)
    Local $Return
    Local Const $LocalGui = GUICreate("Stammdaten - Auswahl", 320, 160, -1, -1, $DS_SETFOREGROUND + $WS_EX_TOPMOST + $WS_SYSMENU)
    Local Const $Doku	  = GUICtrlCreateButton("Doku öffnen",   5, 100, 100, 25)
    Local Const $Druck	  = GUICtrlCreateButton("Nr.-Druck"  , 105, 100, 100, 25)
    Local Const $ERP	  = GUICtrlCreateButton("ERP suchen" , 210, 100, 100, 25)
    Local Const $Message  = GUICtrlCreateLabel($Text, 10, 5, 310, 90, $SS_CENTER)
    	GUICtrlSetFont($Message, 12)
    	GUISetState(@SW_DISABLE, $MainGUI)
    	GUISetState(@SW_SHOW, $LocalGui)
    
    	While 1
            Switch GUIGetMsg()
                Case $GUI_EVENT_CLOSE
                     $Return 0
    			Case $Doku
    				 $Return 3
    			Case $Druck
    				 $Return 4
    			Case $ERP
    				 $Return 5
            EndSwitch
    	WEnd
    	
    	GUIDelete($LocalGui)
    	GUISetState(@SW_ENABLE, $MainGUI)
    	Return $Return
    EndFunc
    Alles anzeigen
  • Hook auf die MsgBox

    • Moombas
    • 8. März 2024 um 11:06

    Dein 2. Parameter ($MB_ABORTRETRYIGNORE) sperrt das X

  • Richtig debuggen?

    • Moombas
    • 26. Februar 2024 um 08:11
    Zitat von Andy

    Ich habe 13 Jahre mit einem Mitarbeiter zusammengearbeitet und immer mal wieder dessen Code debuggen müssen. Dabei saß ich immer neben ihm und habe genauestens erklärt was ich da mache und warum. 13 Jahre lang.....Mittlerweile ist es schon "viel" besser geworden, aber die Hilferufe kommen immer noch.....nicht mehr so oft, aber sie kommen?! Warum? Ich schreibe "Easy-Code", versuche nur die einfachsten Konstrukte zu benutzen, so dass jeder Dorfdepp in meinem Code lesen kann wie in einem Buch. Dafür musste ich mich vom Geschäftsführer einer (von uns verwendeten) führenden ERP-Branchensoftware als "Oldschool-Dinosaurier" bezeichnen lassen müssen. Die Retourekutsche drücke ich ihm jeden Monat wenn seine Jungs und Mädels als "Vollprofis" wieder mal programmiertechnischen Sondermüll abliefern. Wenn professionelle Datenbankspezialisten Funktionen abliefern die 1000x länger brauchen wie die eines "Freizeit-Oldschool-Dinosaurier"-Programmierers, dann sind wohl Nachfragen erlaubt. Genau wie danach, wieso gefixte Bugs nach diversen Updates "plötzlich" wieder auftauchen.....

    Das erninnert mich an meine Azubi Zeit (Komm.Elektroniker), wo wir auch welche hatten, bei denen mann alles vorgeben mussten und kaum eine Schaltung ohne Fehler hin gebratzt haben und dann nicht mal in der Lage waren ihren Fehler selber zu finden (für mich war das wiederum eine gute Übung :P). Ich wunder mich bis heute wie die die Prüfung geschafft haben XD.

    ____

    Btt: Warum ich das geschrieben habe: Wenn du Code nicht lesen kannst (weil schlecht angeordnet, oneliner etc.) wirst du ggf. Probleme haben ihn zu debuggen. Aber ich gebe dir Recht, die Basis von allem ist, den Code zu verstehen, nicht wie er "aufgeschrieben oder eingeordent" wurde.

  • Liste von allen Junctions in Verzeichnis und Unterverzeichnis auflisten

    • Moombas
    • 23. Februar 2024 um 07:58

    Es mag sich Bescheuert anhören aber ggf. Die Mitarbeiter (es scheint ja ein generelles Problem zu sein) nicht über die Ordner, sondern eine GUI mit den Daten arbeiten lassen.
    Gleichzeitig natürlich den Personen die Berechtigungen nehmen (dem Programm mit der GUI natürlich nicht).

  • Richtig debuggen?

    • Moombas
    • 19. Februar 2024 um 08:08
    Zitat von Andy

    Ich persönlich bin kein Freund von solchen Zeilen: #AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7

    Die angezeigten "Fehler" sind zu 99% keine und während der Entwicklung von Programmen behindern sie mich und stören meinen "Flow" und die Kreativität. Imho sind diese Zeilen dazu geeignet, nach (!) der Erstellung eines lauffähigen Script dieses "schön" zu machen. Was mich als Privatanwender (auch wenn ich Scripte sehr oft im beruflichen Leben verwende) einen Scheiss interessiert! Form follows function....

    Dem kann ich nicht zustimmen. Ich hatte bisher keine Fehler die nicht auch welche waren (und ja, das man eine Variable definiert aber faktisch danach nicht nutzt, ist meiner Ansicht ein Fehler, denn unnötiger Code). Und Kreativität gehört für mich nicht in den Code, sondern das Programm selber.

    Wenn Beipiele wie oben (der Variablenname ist unterschiedlich, von dir selber aufgezeigt) auftreten, kann das durchaus ein Tippfehler sein wo diese Fehlermeldung drauf zeigt (solche Zeilen gehören dann auskommentiert oder korrigiert). Auch das man strickt drauf achtet, das Variablen deklariert werden und das auch im richtigen Kontext (kein Local im Global scope z.B.)gehört für mich nicht zum"schön machen", sondern zum kleinen 1*1, da sonst Variablen im Global auftauchen können, die da gar nicht hin gehören (in anderen Sprachen sogar ein MUSS), usw..

    Code "schön" machen ist für mich eher, sich an Einrückungen zu halten, keiner mag oneliner hinzubratzen etc. wobei ich auch da eher auf "Lesbarkeit" als "Schönheit" verweisen würde.

    Ja, es ist Ansichtssache und soll kein "blame" sein aber gewisse Grundregeln gehören für mich dazu, auch wenn man alleine am Code arbeitet.

  • Community Projekt: Teil 2 - Umgang mit Discord, Git, GitHub, gemeinsamen Tooling

    • Moombas
    • 18. Februar 2024 um 19:08

    Bin nun auch drinne, musste erstmal mich privat hier anmelden :P

  • Unit Testing in Autoit

    • Moombas
    • 18. Februar 2024 um 19:06

    Naja Grundsätzlich teste ich Code auf diverse Weise.

    Bei Funktionen (oder auch Units :P) kommt es bei mir auf den Anwendungsfall an, da:

    - Ich mir die Funktionen step by Step zusammenbaue mit vielen Entwicklungsschritten und damit auch vielen Zwischentests um zu prüfen ob das jeweilig erwartete Ergebnis heraus kommt.
    - es meißt viele Abhängigkeiten außerhalb des eigentlichen Skriptes gibt, wo ich auf Test-PC's arbeite aber somit oft nicht nur die Unit/Funktion prüfen muss, sondern das gesamte bis dahin erstellte Skript.

    "Echte" Unit-Tests würde ich behaupten mache ich nur, wenn ich einen Ausgangsstring angeben kann der dann in Ergebnis X umgewandelt werden muss. Bei allem anderen eher wie oben beschrieben.

  • Gesamtzeit richtig berechnen

    • Moombas
    • 16. Februar 2024 um 15:08
    Zitat von OhnePlan

    Gesamtspielzeit von aktueller Spielesitzung

    Habe ich. Es geht um die Gesamtspielzeit seit ich jemals das Spiel gestartet habe. Führe dazu doch einfach mal mein Script aus. Wenn du weißt, wie es funktioniert, dann bitte erleuchte mich ^^. Ich bekomm es nicht hin.

    Auch wenn man es leicht ändern kann und in deinem Fall überschaubar ist: ich für meinen Teil werde niemals fremden Code ausführen der (weder lesend noch schreibend) auf die Registry zugreift.

  • Gesamtzeit richtig berechnen

    • Moombas
    • 16. Februar 2024 um 14:39

    Aber die Berechnung ist doch Prinzipiell die Gleiche, nur das du andere Start- und End-Werte hast.

    Also was funktioniert dabei nicht (genaue Beschreibung)?

    Tipp: Baue eine Funktion die diese Berechnung macht und nutze sie für beide á la: $diff = _calculateDiff($StartTime, $Endtime) die dir dann immer einfach den Wert zurück gibt.

    Wenn das dann bei einem von beidem nicht passt, weißt du das entweder die Startzeit oder die Endzeit nicht passt.
    Btw.: Hast du diese mal geprüft ob diese stimmen?

  • Unit Testing in Autoit

    • Moombas
    • 16. Februar 2024 um 10:05

    Hmm, ich war bei UDF, vielleicht bin ich noch nicht ganz wach XD

  • Gesamtzeit richtig berechnen

    • Moombas
    • 16. Februar 2024 um 09:22

    Müsste RegWrite($regKey, $regValuePlayTime, $REG_STR_TYP, $iTotalPlaytime) nicht eher in die Funktion _StopGame() (Oder danach)?

  • Unit Testing in Autoit

    • Moombas
    • 16. Februar 2024 um 09:00

    Da muss ich mich quasi ausklammern ;)
    Ich baue selber normalerweise keine Units, erst recht nicht komplett universell. Dafür ist der Anwendungsbereich hier immer viel zu speziell.

  • Skript mit F10 starten und mit F9 beenden

    • Moombas
    • 14. Februar 2024 um 14:17
    Zitat von DivineFaith

    Ansich ist der WebDriver super dafür geeignet.

    Allerdings da wir den Monitoring Bildschirm nur bei uns in einer kleinen Abteilung nutzten, sollte es so einfach wie möglich bleiben. Da ist es uns egal wenn da ein Mauszeiger wie von Geisterhand über die Oberfläche schwebt ^^. Da wir die Auflösung ebenfalls nicht ändern, ist uns dies auch egal und selbst wenn, kann man das Verhältnis ja schnelle umrechnen und die Koordinaten austauschen.


    Also für unseren Zweck vollkomen ausreichend.

    Allerdings les ich mir das Tutorial trotzdem gerne durch einfach interesse halber!

    Worauf ich halt abgezielt habe war:

    - Änderung der Auflösung, weil z.B. nach defekt des Monitors dieser getauscht wird und eine andere (Default) Auflösung/Seitenverhältnis aufweist -> Änderung am Programm notwendig
    - Änderung der Position der Buttons etc., weil der Report, der für euch da erzeugt wird (Durch Update der Software oder des Reports selber) geändert wurde -> Änderung am Programm notwendig
    - ...

    Was nicht abgedeckt wäre:

    - Änderung der id's im HTML etc. dann müsste natürlich bei der Webdriver-Varainte nachgebessert werden, das sollte aber wenn das auch nur einigermaßen gut umgesetzt ist seltenst passieren.


    Wie gesagt eine gut gemeinte und für zukunftsicheren Betrieb ausgelegte Empfehlung.
    Ich würde es aus deiner Sicht, erst mal lassen wie es ist, wenn du damit wie du sagst zufrieden bist aber trotzdem, wenn Zeit da ist, versuchen das parallel über webdriver umzusetzen und wenns läuft, ersetzen.

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™