Makierter/ausgewählter Text (ohne Clipboard) kopieren/importieren
-
AhojB -
5. Februar 2016 um 16:16 -
Erledigt
-
-
egal in welcher Anwendung geht nicht, nicht alle Anwendungen lassen sich fernsteuern.
Du darfst es aber gerne versuchen. Berichte anschliessend bitte über Erfolg/Misserfolg.
Selbst dieses kleine Beispiel benötigt das Mitwirken des Users: (Markiertes auf DropBox ziehen) funktioniert (ohne Änderung) nur mit URL's
-
Kannst ja als Workaround schreiben:
1. Clipboard sichern (zwischenspeichern)
2. Markierung ins Clipboard
3. Clipboard speichern
4. Clipboard wiederherstellen -
Danke für eure Antworten:
@autoBert: Dann würde ich mich auf den IE reduzieren, hier speziell in iFrames, für "normale" Pages gehts über $IEObject.document.selection.createRange.text, jedoch klappt das nicht bei Seiten mit iFrames.
@Kanashius: Da ich mit einer Clipboard-History arbeite (also mir die letzten 20 Clipboardeinträge anzeigen lassen kann) ist dies leider keine Option.Grüße
-
Naja... Man kann auch die letzten 20 Clipboard selbst mitprotokollieren und jedesmal wiederherstellen

Ist vielleicht nen bisschen komplexer, aber nicht wirklich schwer
-
Ich habe es jetzt für den IE (mit iFrames) für mich so gelöst:
Code
Alles anzeigenwhile 1 Sleep(100) $oIE = _IEAttach(WinGetTitle("[ACTIVE]"),"Embedded") If IsObj($oIE) Then Local $oFrames = _IEFrameGetCollection($oIE) Local $iNumFrames = @extended Local $oFrame = 0 For $i = 0 To ($iNumFrames - 1) $oFrame = _IEFrameGetCollection($oIE, $i) $textt=$oFrame.document.selection.createrange.text if $textt=="0" or $textt==0 Then Else $oText=$textt ; markierter Text endif Next Endif Wend -
ich halte es für keine gute Idee den IE wiederholt in der Schleife zu starten.
-
Ich starte doch den Browser nicht sondern greife mir ein aktives Fenster.
-
Sorry
-
Man könnte auch den Prozess des Clipboard History Programmes anhalten den Inhalt des Clipboards kopieren und zwischenspeichern. Jetzt nur noch den markierten Text in die Zwischenablage verfrachten auslesen und den Ausgangszustand wider herstellen. Wenn nun der Prozess wider fortgesetzt wird sollte er nichts bemerkt haben.
Nur scheitert der plan an meinem unvollständigen wissen wie man einen Prozess mit AutoIt Bordmitteln anhält
evntuell mit _WinAPI_SetProcessAffinityMask -
OT: bollen: Du holst dir alle Threads eines Prozesses mit CreateToolhelp32Snapshot(), Thread32First() & Thread32Next().
Pausieren/starten kannst du 'nen Thread mit SuspendThread(ThreadHandle)/ResumeThread(ThreadHandle).
Die DllCalls müsste man nur nachbauen. -
Die Funktionen sind mir wohlbekannt ich dachte das es eventuell eine schnuckelige AutoIt Lösung gibt ohne frische DLL calls erstellen zu müssen
wenn wir doch was erstellen wollen geht es einfacher
so schickt man ein Prozess schlafen !Passt auf was ihr Suspendet!AutoIt#RequireAdmin #include<Winapi.au3> $pid=XXXX $handle=_WinAPI_OpenProcess(0x0800,False ,$pid) DllCall("ntdll.dll","long","NtSuspendProcess","handle",$handle)
und so kann man ihn wider aufwecken -
Cool die Funktionen kannte ich nicht.
Sind die auch unter den neuen Windows-Versionen unterstützt? Ich find zu denen keine Doku. (irgendwie klar bei nt-Zeugs) -
Aktuelle Win10 version hat die Dll standartmäßig dabei, selten das bei Windows was in richtung Abwertskompatibilität flöten geht mit fällt spontan nichts ein
