Veränderung im Clipboard überprüfen
Veränderung im Clipboard überprüfen
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
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
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
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

pb 4.51
Re: Veränderung im Clipboard überprüfen
a²+b²=mc²
Re: Veränderung im Clipboard überprüfen
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
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
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
pb 4.51
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Veränderung im Clipboard überprüfen
@gnasen
Der ist wirklich simpel
@Milten
Die Überprüfung solltest Du dann aber einem TimerEvent zuordnen, wenn Du eine GUI hast.

@Milten
Die Überprüfung solltest Du dann aber einem TimerEvent zuordnen, wenn Du eine GUI hast.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: Veränderung im Clipboard überprüfen
nicht ganz.gnasen hat geschrieben:Code: Alles auswählen
Debug "changed"

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
a²+b²=mc²
Re: Veränderung im Clipboard überprüfen
Wow, danke Kiffi und gnasen, das ist ziemlich gut & simpel. 
