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

Beiträge von MiracelVip

  • Drag and Drop Symbol, um Position herauszufinden

    • MiracelVip
    • 29. Oktober 2014 um 01:15

    Ich gehöre zum Anlagenhersteller, wir machen die Erstinbetriebnahme... Daher ist das ok... Leider gibts bei uns Softwaretechnisch keine Unterscheidung zwischen Kunden und Inbetriebnehmer -> wenn ich das Implementieren lasse wird es der Kunde später auch nutzen, auch wenn er nicht weiß was er da macht

    Aber danke für euren Hinweis, ich hätte es nie so ausführlich beschreiben sollen :whistling:


    So ich habe es inzwischen etwas anders gelöst aber hier für die Nachwelt:

    Screenshot erstellen:

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    Func function_screenshot()
    ;## get window name
    $win_name = WinGetTitle("")
    ;## put window name in input box
    _GUICtrlEdit_SetText ($input_window_name, $win_name)
    ;## make Screenshot
    $pic_path = @ScriptDir & "\screenshot.jpg"
    _ScreenCapture_CaptureWnd($pic_path, $win_name)
    ;## get Picture size
    _GDIPlus_Startup()
    $IMG = _GDIPlus_ImageLoadFromFile($pic_path)

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

    $h = _GDIPlus_ImageGetHeight($IMG)
    $w = _GDIPlus_ImageGetWidth($IMG)
    _GDIPlus_ImageDispose($IMG)
    _GDIPlus_Shutdown()
    ;## change picture in GUI
    GUICtrlSetPos ($screenshot, 200, 64, $w, $h)
    GUICtrlSetImage($screenshot,$pic_path)
    ;## enable Pointer
    GUICtrlSetState($button_pointer, $GUI_ENABLE)
    WinActivate("Auf-Zu")

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

    EndFunc

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

    Pointer auf Bild setzen

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    Func function_pointer()
    ;## Schleife starten
    $exit = 0
    ;## Alten Pointer löschen
    if $pic_drag_and_drop > 0 Then
    GUICtrlDelete ( $pic_drag_and_drop )
    EndIf

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

    ;## change Cursor
    GUICtrlSetCursor ( $screenshot, 3)

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

    ;## Schleife bis Maus gedrückt wird
    Local $hDLL = DllOpen("user32.dll")
    While $exit = 0
    Sleep(10) ; This enough to prevent CPU overload <<<<<<<<<<<<<<<<<<<<<<<<

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

    ;## Nimmt die Aktuelle Position auf
    If _IsPressed("01", $hDLL) Then
    $MousePos = MouseGetPos()
    ConsoleWrite("Mouse Button Pressed" & @CRLF & "X=" & $MousePos[0] & @CRLF & "Y=" & $MousePos[1] & @CRLF)

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

    ;## Schleife beenden
    $exit = 1
    ;## Koordinaten in Textfelder schreiben
    _GUICtrlEdit_SetText ($input_pointer_x, $MousePos[0]-204)
    _GUICtrlEdit_SetText ($input_pointer_y, $MousePos[1]-90)

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

    ;## Corser zurücksetzen
    GUICtrlSetCursor ( $screenshot, 2)
    ;## Pointer einsetzen
    $pic_drag_and_drop = GUICtrlCreatePic( @ScriptDir & "\1.gif", $MousePos[0]-35, $MousePos[1]-56, 65, 65)
    GUICtrlSetState($screenshot, $GUI_HIDE)
    GUICtrlSetState($screenshot, $GUI_SHOW)

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

    While _IsPressed("01", $hDLL)
    Sleep(10)
    WEnd
    EndIf

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

    WEnd

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

    ;## enable Start
    GUICtrlSetState($button_start, $GUI_ENABLE)

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

    EndFunc

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

    Ist halt kein Drag and Drop geworden aber auch noch ok

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • Drag and Drop Symbol, um Position herauszufinden

    • MiracelVip
    • 28. Oktober 2014 um 10:36

    Danke für die Links, werde mich da mal einlesen

    Programmablauf:

    1. Programm starten ;)
    2. Ein anderes Fenster auswählen und F7 drücken
    -> Screenshot wird erstellt
    -> Screenshot wird im GUI angezeigt
    -> Fenstername wird in GUI übertragen <-- Bis hier hin alles fertig

    3. "Drag and Drop Pointer" auf eine Position ziehen (im Screenshot)
    -> Position wird ins GUI übertragen
    z.B. eins der Grünen Dreiecke im oberen Screenshot

    ---> Ab hier alles fertig
    4. Start [F5] drücken
    -> das Fenster mit dem gespeicherten Namen wird in den Vordergrund geholt und die Maus an die Position des "Drag and Drop Pointers" geschoben
    -> es wird ein Rechtsklick ausgefür
    -> 2x Pfeiltaste nach unten
    -> Return
    -> Warten
    -> Rechtsklick
    -> 1x Pfeiltaste nach unten
    -> Return
    ->Warten
    ... und wieder von vorne....

  • Drag and Drop Symbol, um Position herauszufinden

    • MiracelVip
    • 28. Oktober 2014 um 01:45

    Da ich das Programm gerne verteilen wollte würde ich mich schon über eine elegante Lösung freuen :) Wenn jemand eine Idee hat würde ich mich sehr freuen. BTW ich brauche keinen fertigen Code, ich brauche nur einen Funktionsnamen oder was ähnliches um einen Anfang zu finden

    Gruß
    MiracelVip

  • Drag and Drop Symbol, um Position herauszufinden

    • MiracelVip
    • 27. Oktober 2014 um 09:02

    Leider ändert sich das Bild immer wieder daher wird es sehr schwierig. Im AutoItWindowInfo Programm gibt es ja genau die Funktion die ich brauchen würde - Das Finder Tool... Wie wurde es da umgesetzt? Oder ist das nicht mit AutoIt programmiert?

  • Drag and Drop Symbol, um Position herauszufinden

    • MiracelVip
    • 27. Oktober 2014 um 06:22

    Hallo Zusammen,

    ich schreibe Momentan ein kleines Programm, das mir die Arbeit in der Firma etwas erleichtern soll. Dabei sollen simple Mausklicks automatisiert werden. Leider ist die zu "drückende Position" immer anders, daher möchte ich gerne mit einem Screenshot arbeiten, auf dem ich die Position markiere und dann die Klicks an dieser Stelle ausführe.

    Leider weiß ich nicht genau, wie ich die "Drag and Drop" Geschichte angehen soll.
    Könnt ihr mir da eine UDF empfehlen oder ist da schon eine Integriert und ich bin nur zu blöd diese zu finden?

  • Bilddaten als "Rohdaten" kopieren (ähnlich Öffnen->Strg+a->Strg+c)

    • MiracelVip
    • 11. März 2014 um 16:04

    Danke für den Ansatz.

    Leider verstehe ich die Funktion _ClipBoard_SetDataEx() nicht wirklich. Bei mir kommen einfach keine Daten an :/


    [autoit]

    Func insert_screenshot () _ArrayDisplay($bilder) $pfad = @ScriptDir & "\Temp" & $bilder[1] $pfad2 = _WinAPI_CopyImage($pfad)
    _ClipBoard_SetDataEx ($pfad2, $CF_TEXT)sleep(500)_ClipBoard_SetDataEx ($pfad2, $CF_BITMAP)sleep(500)_ClipBoard_SetDataEx ($pfad2, $CF_METAFILEPICT)sleep(500)_ClipBoard_SetDataEx ($pfad2, $CF_SYLK )sleep(500)_ClipBoard_SetDataEx ($pfad2, $CF_DIF)sleep(500)_ClipBoard_SetDataEx ($pfad2, $CF_TIFF)sleep(500)_ClipBoard_SetDataEx ($pfad2, $CF_OEMTEXT)sleep(500)_ClipBoard_SetDataEx ($pfad2, $CF_DIB)sleep(500)_ClipBoard_SetDataEx ($pfad2, $CF_PALETTE)sleep(500)_ClipBoard_SetDataEx ($pfad2, $CF_PENDATA)sleep(500)_ClipBoard_SetDataEx ($pfad2, $CF_UNICODETEXT)sleep(500)_ClipBoard_SetDataEx ($pfad2, $CF_ENHMETAFILE)sleep(500)_ClipBoard_SetDataEx ($pfad2, $CF_HDROP)sleep(500)_ClipBoard_SetDataEx ($pfad2, $CF_LOCALE)sleep(500)_ClipBoard_SetDataEx ($pfad2, $CF_DIBV5)sleep(500)_ClipBoard_SetDataEx ($pfad2, $CF_OWNERDISPLAY)sleep(500)_ClipBoard_SetDataEx ($pfad2, $CF_DSPTEXT )sleep(500)_ClipBoard_SetDataEx ($pfad2, $CF_DSPBITMAP )sleep(500)_ClipBoard_SetDataEx ($pfad2, $CF_DSPMETAFILEPICT )sleep(500)_ClipBoard_SetDataEx ($pfad2, $CF_DSPENHMETAFILE )

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

    ConsoleWrite (_ClipBoard_SetDataEx ($pfad2, $CF_BITMAP))

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

    EndFunc

    [/autoit]


    Irgentwie löscht es mir hier die Zeilenumbrüche

  • Bilddaten als "Rohdaten" kopieren (ähnlich Öffnen->Strg+a->Strg+c)

    • MiracelVip
    • 11. März 2014 um 14:34

    Hallo Zusammen,

    ich Programmiere gerade ein kleines Script, das mir das Screenshot erstellen erleichtern soll. Die Funktionen zum erstellen und löschen der Screenshots funktionieren bereits problemlos.

    Die Bilder werden vorübergehend als *.jpg gespeichert. Im Anschluss möchte ich die Bilder in Excel einfügen.
    Nun zum Problem:

    Bild kopieren und einfügen mit _ClipPutFile() / ClipGet() funktioniert in Excel nicht. Die Bilder werden von der Zwischenablage nicht erkannt. Über die Excel eigene Funktion "Bild Einfügen..." funktioniert aber ist nicht sehr zuverlässig und schnell. Was hingegen funktioniert ist das Bild erst zu öffnen (Paint), alles markieren, kopieren und einfügen.

    Das ist aber auch ein sehr umständlicher Weg und ich hoffe Ihr habt eine Idee, wie man das einfacher und schneller lösen kann.

    Die Excelfunktionen habe ich auch getestet aber hier ist das Problem, das eine Datei angegeben muss aber diese in meinem Fall immer unterschiedlich ist.

    Ich freue mich auf eure Antworten

    Gruß
    MiracelVip

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™