Seite 1 von 1
Veränderung im Clipboard überprüfen
Verfasst: 05.12.2011 15:10
von Milten
Hallo,
ich suche nach einer (möglichst verständlichen und leistungsparenden) Methode, zu überprüfen, ob sich der Inhalt der Zwischenablage geändert hat. Im Moment benutze ich eine Schleife die alle paar Sekunden überprüft, ob der text im clipboard dem vorher festgestellten noch entspricht, aber das klappt nicht besonders gut (Es dauert eben immer etwas bis die Änderung erkannt wird) und der PC läuft auch manchmal recht langsam dabei. Kennt jemand was besseres?
Danke
Milten
Re: Veränderung im Clipboard überprüfen
Verfasst: 05.12.2011 15:23
von gnasen
Hmm ich habe es selber noch nicht ausprobiert, aber hier ist zumindest bzgl Windows (ab vista) die vorgesehene Lösung:
http://msdn.microsoft.com/en-us/library ... 85%29.aspx
für ältere Windows versionen:
http://msdn.microsoft.com/en-us/library ... 85%29.aspx
Es gibt hier aber ein paar sehr WinAPI erfahrene Leute im Forum, die das sicher schnell zusammenschustern könnten, wenn man sie mal lieb drum bittet

Re: Veränderung im Clipboard überprüfen
Verfasst: 05.12.2011 15:26
von Kiffi
Re: Veränderung im Clipboard überprüfen
Verfasst: 06.12.2011 15:02
von Milten
Hallo Kiffi,
die Links aus dem anderen Faden habe ich gestern vor dem erstellen dieses Fadens schon gesehen, aber das ist ziemlich kompliziert und ich verstehe es auch nicht. Zumal es, wenn ich die Infos von der Microsoft-HP richtig verstehe, dann nur auf Windows Vista und aufwärts funktionieren wird? Gibt es nicht noch einen anderen Weg?
Gruß & Danke für eure Links
Milten
Re: Veränderung im Clipboard überprüfen
Verfasst: 06.12.2011 15:46
von gnasen
Code: Alles auswählen
EnableExplicit
Define clipState.i = GetClipboardSequenceNumber_()
Repeat
If clipState <> GetClipboardSequenceNumber_()
clipState = GetClipboardSequenceNumber_()
Debug "changed"
EndIf
Delay(1)
ForEver
MSDN hat geschrieben:Minimum supported client = Windows 2000 Professional
Re: Veränderung im Clipboard überprüfen
Verfasst: 06.12.2011 16:00
von ts-soft
@gnasen

Der ist wirklich simpel
@Milten
Die Überprüfung solltest Du dann aber einem TimerEvent zuordnen, wenn Du eine GUI hast.
Re: Veränderung im Clipboard überprüfen
Verfasst: 06.12.2011 16:39
von Kiffi
nicht ganz.

Wenn sich die GetClipboardSequenceNumber
verändert, ist 'lediglich' was in's Clipboard kopiert worden.
Der Inhalt muss sich dadurch nicht zwingend ändern. Wenn
ich drölf Mal den selben Text kopiere, ändert sich die
GetClipboardSequenceNumber, aber nicht der Content.
Destawegen müsste dann noch der Inhalt verglichen werden.
Trotzdem: Danke für den Tipp!
Grüße ... Kiffi
// Edit:
Code: Alles auswählen
EnableExplicit
#Window = 0
#ClipboardContentList = 0
#ClipboardTimer = 0
Procedure CheckClipboard()
Static ClipboardSequenceNumber = -1
Static ClipboardContent.s
If ClipboardSequenceNumber = -1
ClipboardSequenceNumber = GetClipboardSequenceNumber_()
Else
If ClipboardSequenceNumber <> GetClipboardSequenceNumber_()
ClipboardSequenceNumber = GetClipboardSequenceNumber_()
If IsClipboardFormatAvailable_(#CF_TEXT) <> 0
If ClipboardContent <> GetClipboardText()
ClipboardContent = GetClipboardText()
AddGadgetItem(#ClipboardContentList, -1, "Changed: " + ClipboardContent)
EndIf
Else
AddGadgetItem(#ClipboardContentList, -1, "Irgendwas anderes wurde ins Clipboard kopiert")
EndIf
EndIf
EndIf
EndProcedure
Define WWE
OpenWindow(#Window, #PB_Ignore, #PB_Ignore, 600, 400, "ClipBoard-Watcher")
ListViewGadget(#ClipboardContentList, 0, 0, WindowWidth(#Window), WindowHeight(#Window))
AddWindowTimer(#Window, #ClipboardTimer, 500)
Repeat
WWE = WaitWindowEvent()
Select WWE
Case #PB_Event_Timer
If EventTimer()=#ClipboardTimer
CheckClipboard()
EndIf
EndSelect
Until WWE = #PB_Event_CloseWindow
Re: Veränderung im Clipboard überprüfen
Verfasst: 07.12.2011 18:36
von Milten
Wow, danke Kiffi und gnasen, das ist ziemlich gut & simpel.
