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

Beiträge von Vitaq

  • Makro starten

    • Vitaq
    • 24. November 2017 um 21:51

    Erstmals Danke für dein Hilfe und vorallem Geduld ist nicht selbstverständlich ohne deine "Kritik" hätte ich wahrscheindlich aufgegeben.

    Ich habs jetzt so gelöst

    Spoiler anzeigen

    While 1

    Sleep(80)

    $aPos = MouseGetPos()

    If $aPos[0] >= $aActionAreas[1][1] And $aPos[0] <= $aActionAreas[1][2] And $aPos[1] >= $aActionAreas[1][3] And $aPos[1] <= $aActionAreas[1][4] Then

    $iActionNumber = 1 ;MsgBox(0, "", "Position 1") ;ConsoleWrite("Position 1" & $aActionAreas & $aPos & @CRLF ) ;

    ExitLoop

    Else

    If $aPos[0] >= $aActionAreas[2][1] And $aPos[0] <= $aActionAreas[2][2] And $aPos[1] >= $aActionAreas[2][3] And $aPos[1] <= $aActionAreas[2][4] Then

    $iActionNumber = 2;ConsoleWrite("Position 2" & $aActionAreas & @CRLF ) ;MsgBox(0, "", "Position 2")

    ExitLoop

    EndIf

    EndIf

    WEnd

    If $iActionNumber = 1 Then

    MsgBox(0, "", "Makro1 starten")

    EndIf

    If $iActionNumber = 2 Then

    MsgBox(0, "", "Makro2")

    EndIf

    Ist für dich wahrscheindlich zum Lachen aber es läuft, kann es im Moment nicht besser / effizienter / einfacher

    Dein Script ist für mich Gold Wert da ich einen richtigen Aufbau sehe und daraus Lernen kann werde ihn für meine Zwecke nutzen.

    Nochmal vielen Dank an dich und die anderen Jungs auch wenn die Antworten manchmal zumindest für mich schwer zu Verstehen sind.

    :)

  • Makro starten

    • Vitaq
    • 24. November 2017 um 19:09

    misterspeed

    Dank deiner Hilfe kann ich jetzt meine Koordinaten bestimmen --- Super !!!!

    Spoiler anzeigen

    Local $aPos

    While 1

    Sleep(80)

    $aPos = MouseGetPos()

    If $aPos[0] >= $aActionAreas[1][1] And $aPos[0] <= $aActionAreas[1][2] And $aPos[1] >= $aActionAreas[1][3] And $aPos[1] <= $aActionAreas[1][4] Then

    ConsoleWrite("Position 1" & $aActionAreas & @CRLF )

    Else

    If $aPos[0] >= $aActionAreas[2][1] And $aPos[0] <= $aActionAreas[2][2] And $aPos[1] >= $aActionAreas[2][3] And $aPos[1] <= $aActionAreas[2][4] Then

    ConsoleWrite("Position 2" & $aActionAreas & @CRLF )

    EndIf

    EndIf

    WEnd

    Aber es bleibt weiter ein K(r)ampf für mich denn du schreibst

    Zitat

    Sobald du einen Treffer hast setzt du deine Rückgabevariable auf die zugehörige "ActionNumber" der Array Zeile und verlässt die Schleife mit dem Statement exitloop, damit unnötige weitere Prüfungen vermieden werden.

    3. Nun gibst du dein Ergbnis mittels Return $iActionNumber zurück und verlässt die Funktion

    Sorry aber das verstehe ich nicht

  • Makro starten

    • Vitaq
    • 23. November 2017 um 18:15
    Code
    $aPos ist ein Array, keine Variable.

    Und das heisst was?

  • Makro starten

    • Vitaq
    • 22. November 2017 um 21:40

    Sorry aber ich muss Fragen weil ich nicht wirklich weiter weiss

    Zitat

    0. Rückgabe Variable $iActionNumber lokal in der Funktion deklarieren und den Wert 0 (kein Treffer, Maus außerhalb der Bereiche) zuweisen

    Local $iActionNumber = "0" hab das eingetragen sollte passen

    Zitat

    1. Mausposition ermitteln

    2. Für alle im Array definierten Bereiche prüfen ob die ermittelte Mausposition innerhalb des jeweiligen Bereichs ist, Sobald du einen Treffer hast setzt du deine Rückgabevariable auf die zugehörige "ActionNumber" der Array Zeile und verlässt die Schleife mit dem Statement exitloop

    aber jetzt wirds schwierig was auch sonst

    Local $aPos

    While 1

    $aPos = MouseGetPos()

    If $aPos = $aActionAreas[0][1] then

    MsgBox(0, "", "Koordinaten")

    EndIf

    ExitLoop

    WEnd

    Irgendwo ist hier ein Fehler es kommt keine Msg wenn ich die Maus zu den Koordinaten bringe

  • Makro starten

    • Vitaq
    • 21. November 2017 um 21:50

    O.K Danke

  • Makro starten

    • Vitaq
    • 21. November 2017 um 17:12

    Super der Teil mit dem Array funktioniert schon mal wusste nicht das man die Actionsnummer/Makronummer so ins Array mit eingeben kann.

    Werde mich an Funktion mousePosAction($aActionAreas) versuchen

    Hast du vielleicht einen Tipp an was ich mich orientieren kann

  • Makro starten

    • Vitaq
    • 20. November 2017 um 21:44

    Sorry war nicht böse gemeint :) aber es ist ziemlich frustrierend und demotivierend wenn nichts klappt und ein fertige Script will ich selber nicht

    ich würde das gerne so wie du geschrieben hast umsetzten aber ich scheitere schon beim Array Punkt.

    Zitat


    Das Array $aActionAreas beinhaltet alle von dir definierten Bereiche und zugehörige Aktionsnummer

    hab das probiert

    Global $aActionAreas[2][4] = [[957, 1132, 305, 349],[757, 832, 305, 349]]

    k.a ob richtig aber selbst wenn wo oder wie definiere ich die zugehörige Aktionsnummer ins Array?

  • Makro starten

    • Vitaq
    • 20. November 2017 um 08:22

    Wohl eher wegen mangelndem Ehrgeiz und Interesse etwas dazu zu lernen.

    Wie kannst du sowas behaupten du kennst mich gar nicht

  • Makro starten

    • Vitaq
    • 19. November 2017 um 19:53

    Ja das mit mehr Struktur liest sich ja super aber ich bin bei weiten nicht soweit das so umzusetzten

    Mein Script wie man sehen kann ist ja auch nur so zusammengesucht und läuft mit einem Makro

    Ich werde das ganze wegen Erfolglosigkeit einstellen.

  • Makro starten

    • Vitaq
    • 19. November 2017 um 17:06

    habe versucht so wie du geschrieben hast 2 mal die Koordinaten abzufragen und mit einem IF Block das Makro zustarten.

  • Makro starten

    • Vitaq
    • 19. November 2017 um 15:47

    Do

    $aPos = MouseGetPos()

    $bPos = MouseGetPos()

    Until $aPos[0] > $iXstart And $aPos[0] < $iXend And $aPos[1] > $iYstart And $aPos[1] < $iYend Or $bPos[0] > $iiXstart And $bPos[0] < $iiXend And $bPos[1] > $iiYstart And $bPos[1] < $iiYend

    Do

    If $aPos then ;startet Makro per KurzBefehl in Excel

    MsgBox(0, "", "Array eingelesen")

    EndIf

    Until $aPos[0] > $iXstart And $aPos[0] < $iXend And $aPos[1] > $iYstart And $aPos[1] < $iYend Or $bPos[0] > $iiXstart And $bPos[0] < $iiXend And $bPos[1] > $iiYstart And $bPos[1] < $iiYend


    Hab das probiert aber es klappt nicht

  • Makro starten

    • Vitaq
    • 19. November 2017 um 11:41

    Do

    $aPos = MouseGetPos()

    Until $aPos[0] > $iXstart And $aPos[0] < $iXend And $aPos[1] > $iYstart And $aPos[1] < $iYend

    sleep (4000)
    If $aPos then Send("^A") ;startet Makro per KurzBefehl in Excel

    Else

    If $bPos then Send("^B") ;startet Makro2 per KurzBefehl in Excel

    Endif

    hab das jetzt so probiert aber es funkt irgenwie nicht

  • Makro starten

    • Vitaq
    • 19. November 2017 um 10:32

    Hi

    Die Do Until Schleife macht nichts anders als sie wartet bis ich die Maus auf meine Kordinaten (z.b links oben) bewege dann wird eine tx Datei eingelesen und das Makro gestartet. Das funkt ja aber mein Problem ist wie kann ich ihm sagen wenn Maus z.b rechts oben dann txt Datei einlesen und MAKRO 2 starten, und es sind nicht zweimal die selben Mauskoordinaten.

    Genau ich brauch eine Reaktion wenn Position A dann Makro A wenn Position B dann Makro B !!!!

  • Makro starten

    • Vitaq
    • 18. November 2017 um 13:59

    Oh sorry hier mein script

    Spoiler anzeigen

    #include <Array.au3>

    #include <MsgBoxConstants.au3>

    #include <Excel.au3>

    #Include <File.au3>

    #include <Misc.au3>


    Global $oExcel = _Excel_Open() ;Excel Teil ----- öffnet Excel

    If @error Then Exit MsgBox($MB_SYSTEMMODAL, "_Excel_Open Error", "Error creating the Excel application object." & @CRLF & "@error = " & @error & ", @extended = " & @extended)

    $sExcelfile = "C:\Users\mm\Desktop\" & "\Daten.xlsm"

    Global $oWorkbook = _Excel_BookOpen($oExcel, $sExcelfile) ; Exceldatei öffnen

    If @error Then

    MsgBox($MB_SYSTEMMODAL, "Reading of Excel File Failed", "Error opening workbook" & @CRLF & "@error = " & @error & ", @extended = " & @extended)

    _Excel_Close($oExcel)

    Exit

    EndIf


    sleep(1000) ;wartet 1 sec


    Local $aPos

    Local $bPos

    ; ___

    ; |___|

    Local $iXstart = 957 ;Horizontal

    Local $iXend = 1132 ;Horizontal

    Local $iYstart = 305 ;Vertikal

    Local $iYend = 349 ;Vertikal

    Local $iiXstart = 757 ;Horizontal

    Local $iiXend = 832 ;Horizontal

    Local $iiYstart = 305 ;Vertikal

    Local $iiYend = 349 ;Vertikal

    Do

    $aPos = MouseGetPos()

    $bPos = MouseGetPos()

    Until $aPos[0] > $iXstart And $aPos[0] < $iXend And $aPos[1] > $iYstart And $aPos[1] < $iYend Or $bPos[0] > $iiXstart And $bPos[0] < $iiXend And $bPos[1] > $iiYstart And $bPos[1] < $iiYend

    Sleep (1000) ;wartet 1 sec


    Local $aRecords ; Txt einlesen Teil -----

    $sSourcePath = "C:\ProgramData\R\Daten\"

    $aFilesInFolder = _FileListToArray($sSourcePath, "*.txt" )

    For $i = 1 To $aFilesInFolder[0]


    If Not _FileReadToArray($sSourcePath & $aFilesInFolder[$i],$aRecords) Then

    MsgBox(4096,"Fehler", "Fehler beim einlesen der Daten.")

    Exit

    EndIf

    For $x = 1 To $aRecords[0]

    ;MsgBox(0, "", "Array eingelesen")

    Next

    Next


    Local $iRow = 1

    For $i = $aRecords[0] To $aRecords[0] - 4 Step -1 ;

    _Excel_RangeWrite($oWorkbook, $oWorkbook.Sheets(1), $aRecords[$i], "A" & $iRow)

    $iRow +=

    Next

    sleep (3000) ;wartet 3 sec

    Send("^A") ;startet Makro per KurzBefehl in Excel

    sleep (15000)

    Mein Problem ist wie soll ich Makro2 auf Position $bPos ausführen

  • Makro starten

    • Vitaq
    • 18. November 2017 um 13:13

    Hallo Leute


    ich habe mit MouseGetPos am desktop einen X,Y oberen/unteren Bereich eingerichtet der mir Excel öffnet eine txt. Datei einliest

    und dann per Kurzbefehl ein Makro startet das nach bestimmten Werten sucht das funktioniert auch tadellos.

    Nun würde ich aber gerne einen 2 Bereich definieren der mir das gleiche macht aber ein anderes Makro

    startet.Nur wie kann ich das machen das er das andere Makro startet, d.h wenn im 2 Bereich 2.Makro starten.

    Hätte vielleicht jemand einen Tipp?

  • Fenster ansprechen

    • Vitaq
    • 17. März 2017 um 20:10

    WinWaitActive hat den Sinn das ich auf das Signal (Fenster)warte und dann mit Mauseclicks weitergehe

  • Fenster ansprechen

    • Vitaq
    • 17. März 2017 um 14:34

    Yep
    das wars so kann ich das Fenster identifizieren nur das ich jetzt noch ein kleines Problem mit dem Controlclick habe

    $hWnd = WinWaitActive("")
    If IsHWnd($hWnd) Then ControlClick($hWnd, "", "[NAME:Panel_sound]")
    sleep 2000
    MouseClick("left", 173,714, 1)

    den MouseClick zu den Koordinaten macht er mir nur wenn ich ein Fenster schliesse.
    Er sollte aber nach dem "Signal" gleich auf meine Koordinaten gehen

  • Fenster ansprechen

    • Vitaq
    • 17. März 2017 um 12:56

    Hi alpines

    Wie verwende ich den REGEXPCLASS genau ist das dann ein andere Befehl ?

  • Fenster ansprechen

    • Vitaq
    • 16. März 2017 um 15:37

    Hallo Leute


    >>>> Window <<<<
    Title: fPalon
    Class: WindowsForms10.Window.8.app.0.3c47a4f_r14_ad1
    Position: 0, 697
    Size: 1358, 37
    Style: 0x16010000
    ExStyle: 0x00050000
    Handle: 0x00020296

    >>>> Control <<<<
    Class: WindowsForms10.Window.8.app.0.3c47a4f_r14_ad1
    Instance: 4
    ClassnameNN: WindowsForms10.Window.8.app.0.3c47a4f_r14_ad14
    Name: Panel_sound
    Advanced (Class): [NAME:Panel_sound]
    ID: 131986
    Text:
    Position: 152, 3
    Size: 31, 31
    ControlClick Coords: 16, 17
    Style: 0x56000000
    ExStyle: 0x00010000
    Handle: 0x00020392


    Ich versuche vergebens ein Fenster über Control anzusprechen aber es klappt irgendwie nicht.
    Habs so versucht

    $hWnd = WinWaitActive('', 'Setup is complete')
    If IsHWnd($hWnd) Then ControlClick($hWnd, '', '[CLASS:WindowsForms10.Window.8.app.0.3c47a4f_r14_ad1; INSTANCE:4]')

    Ausserdem spielt das Fenster ein wave Datei von Windows ab vielleicht kann man das irgendwie abfangen als Signal.

    Vielleicht kann ja jemand helfen

  • .txt Datei umbennen

    • Vitaq
    • 1. Dezember 2016 um 16:58

    Hi autoiter

    Meine.txt Logdateien heissen so:
    Wu_34434
    wu_3454usw.....
    Ich würde gerne die Datein mit 1 beginnend Bennnen
    Also sollten 10 WU_blabla Datein im Ordner sein sollten die txt Dateien von 1-10 umbenannt werden.
    Die Reihenfolge welche txt Datei als 1.umbenannt wird ist egal einfach alles was im Orner ist umbennen.

    Das wars schon

    lg
    Vitaq

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™