Moin,
ich möchte gerne den aktuell markierten Text (egal in welcher Applikation) haben ohne den ihn vorher in den Zwischenspeicher zu legen. Jmd eine Idee?
Danke für eure Hilfe.
Grüße
Moin,
ich möchte gerne den aktuell markierten Text (egal in welcher Applikation) haben ohne den ihn vorher in den Zwischenspeicher zu legen. Jmd eine Idee?
Danke für eure Hilfe.
Grüße
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:
while 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
Alles anzeigen
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!
#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