fertigstellen eines Scriptes

  • Hallo zusammen, ich bräuchte jemand der mir mein folgendes Script fertigstellt:

    [autoit]

    ;~ script for next sample automation

    [/autoit][autoit][/autoit][autoit]

    WinWait("Analyst -", "")

    [/autoit][autoit][/autoit][autoit]

    Dim $play
    Dim $time = 20
    Dim $exit = 1
    HotKeySet("^{SPACE}", "starten")
    HotKeySet("^{x}", "stoppen")
    HotKeySet("^{e}", "_exit")
    While $exit
    While $play = 1
    WinActivate("Analyst -", "")
    ControlSend("Analyst -", "", "AfxOleControl42u2", "^{RIGHT}")
    AdlibRegister("_Countdown", 1000)
    While $time > 0 And $play = 1
    ToolTip($time)
    Sleep(10)
    WEnd
    ToolTip($time)
    AdlibUnRegister("_Countdown")
    $time = 20
    WEnd
    Sleep(250)
    WEnd
    Func _Countdown()
    $time -= 1
    EndFunc ;==>_Countdown
    Func starten()
    $play = 1
    EndFunc ;==>starten
    Func stoppen()
    AdlibUnRegister("_Countdown")
    $play = 0
    EndFunc ;==>stoppen
    Func _exit()
    $play = 0
    $exit = 0
    EndFunc ;==>_exit

    [/autoit]


    Und zwar müssten zwei Dinge noch hinzugefügt werden:
    1. Der Timer (Countdown) soll auch resetet werden, sobald auf den "ClassnameNN: Afx:400000:8:10013:10:01" gedrückt wird
    2. Egal nach welchem Reset des Countdowns soll "ClassnameNN: AfxOleControl42u5", "ClassnameNN: AfxOleControl42u6" und/oder ClassnameNN: AfxOleControl42u7 irgendwie geschlossen werden...das sind eigentlich drei Fenster, allerdings haben die alle den gleichen Fenster-Namen!

    Vielen Dank für eure Hilfe
    Gruß Melanie

    Einmal editiert, zuletzt von MelS3247 (5. Mai 2010 um 06:50)

  • Jobbörse bedeutet: Du musst auch eine Gegenleistung anbieten. Sei es Geld, ein Buch, oder was auch immer.
    Alternativ kannst du das ganze im Hilfe&Support-Bereich posten, wirst da aber nicht umbedingt ein fertiges Skript bekommen, sondern meist nur Ansäätze und Hilfestellungen.

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.

  • Mhhhhhh, ok...und wieviel Geld bietet man hier so an???
    Bin für Vorschläge gerne offen! :rolleyes:

    Gruß Melanie

  • Guten morgen zusammen,

    also das Programm "Analyst" ist eine Software zum Aufnehmen und Auswerten von LC-MS-Chromatogrammen.
    LC = Liquid Chromatography
    MS = Mass Spectrometry
    Sind beides instrumentelle Verfahren zur Strukturaufklärung von Molekülen (synthetischer oder natureller Chemie!)

    Wie gesagt...wenn mir jemand helfen würde, einfach angeben was er als Gegenleistung verlangt...handeln können wir immer noch *g*

    Danke und Gruß
    Melanie

  • Ich habe zwar weder Zeit noch die Lust den "Job" zu übernehmen, aber:

    1. Den Klick auf einen Button eines anderen Fensters, kann man meines Wissens nach nicht direkt mit AutoIt abfragen.
    Du müsstest die Position des Fensters (WinGetPos, WinActive), danach die relative Position des Button hinzuaddieren
    und in Abhängigkeit dieser Position mit IsPressed() die Maustaste überprüfen.

    2. Bei meinen Tests hat ein "Fenster" keine "ClassnameNN" !

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Hm, hört sich nicht so an als würde man das Programm kostenlos wo runterladen können um das skript testen zu können.
    Selbst wenn würde es vermutlich ohne angeschlossenes Chroma dings eh nicht starten...

    Wie Micha_He erwähnt hat ist es etwas fummelig rauszufinden ob der Button angeklickt wurde.
    Wäre also interessant zu wissen was das Programm dann genau tut (Fenster öffnen, RegKey ändern, Prozess starten....)
    Halt irgendwas was man abfragen könnte.


    PS: Hat Quincy (TV-Serie) nicht immer so ein Teil benutzt?

  • Guten morgen zusammen,

    Bitboy: Also downloaden kann man die Software schon auf dieser Seite (etwas in der Mitte findet Ihr den Link "Analyst 1.4.2 Software") Allerdings braucht man dafür dann halt ne Lizenz-Nr! Und sowas kann ich euch leider gaaaaaaaar nicht anbieten :whistling:

    Aber mir ist gerade aufgefallen, dass die ControlClickCoords ja immer gleich bleiben, egal welche Größe das Programmfenster besitzt, oder an welcher Position es sich befindet. Ist das richtig??? Dann könnten wir ja damit arbeiten, oder?
    Das hieße, dass ich

    2. Egal ob vorhanden oder nicht...sollen "ClassnameNN: AfxOleControl42u5", "ClassnameNN: AfxOleControl42u6" und "ClassnameNN: AfxOleControl42u7" schnell aktiviert werden und mit einem "ControlClickCoords 45, 15" geschlossen werden (= ist ein delete button)
    und
    1. Das mit dem wiederholten Reset kann ich nur sagen, dass beim Drücken des Buttons zwar kein neues Fenster geöfnet wird, aber ein Bild getauscht wird, welches einen anderen Window Title besitzt. Hilft das vielleicht weiter?

    Vielleicht mach ich heute mal einpaar PrintScreens von meiner Oberfläche und dem AutoIt Window Info...damit ihr wisst wovon ich überhaupt rede.

    Trotzdem danke schonmal an alle, die mir helfen wollen.

    Gruß Melanie

  • Schönen guten Morgen zusammen,

    gäbe es noch jemand, der mir helfen würde? Habe auch brav einpaar PrintScreens gemacht.

    Liebe Grüße
    Melanie

  • Mich hat mal interessiert, ob meine Idee funktioniert.
    Herausgekommen ist eine Funktion (bestimmt noch optimierungsbedürftig) welche eine Klick auf ein fremdes Control erkennt:

    _IsClicked_ControlId
    [autoit]

    #Include <Misc.au3>

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; Beispiel mit Calc
    Run("Calc.exe")
    WinWait("Rechner",5)
    WinActivate("Rechner")
    Send("!a")
    Send("w")
    MsgBox(0,"","Testen Sie mit Button 8 !")

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    Sleep(50)
    If _IsClicked_ControlID("Rechner", "", "[CLASSNN:Button47]") Then Msgbox(0,"","Button 8 wurde geklickt")
    Wend
    ; Ende Beispiel

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; by [email='micha_he@autoit.de'][/email]
    Func _IsClicked_ControlID($WinTitle, $WinText, $ControlID)
    Local $aWinPos, $aControlPos, $aMousePos, $aWinClientPos
    Local $iBordersize, $iTitlesize, $iOldCoordMode
    If Not _IsPressed("01") Then Return 0
    $iOldCoordMode = Opt("MouseCoordMode")
    Opt("MouseCoordMode", 0)
    $aMousePos = MouseGetPos()
    $aWinPos = WinGetPos($WinTitle, $WinText)
    If IsArray($aWinPos) Then
    $aWinClientPos = WinGetClientSize($WinTitle, $WinText)
    $iBordersize = ($aWinPos[2] - $aWinClientPos[0]) / 2
    $iTitlesize = $aWinPos[3] - $aWinClientPos[1] - $iBordersize
    $aControlPos = ControlGetPos("", "", $ControlID)
    If IsArray($aControlPos) Then
    If ($aMousePos[0] >= $aControlPos[0] + $iBordersize) And _
    ($aMousePos[0] <= $aControlPos[0] + $aControlPos[2] + $iBordersize) And _
    ($aMousePos[1] >= $aControlPos[1] + $iTitlesize) And _
    ($aMousePos[1] <= $aControlPos[1] + $aControlPos[3] + $iTitlesize) _
    Then
    Opt("MouseCoordMode", $iOldCoordMode)
    Return 1
    EndIf
    EndIf
    EndIf
    Opt("MouseCoordMode", $iOldCoordMode)
    Return 0
    EndFunc

    [/autoit]

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

    Einmal editiert, zuletzt von Micha_he (4. Mai 2010 um 13:42)