Is there a (recommended?) way to know when the clipboard content changes?
Any help/suggestions will be appreciated.
Ken.
Is there a (recommended?) way to know when the clipboard content changes?
Any help/suggestions will be appreciated.
Ken.
To be notified you’ll need to be able to receive raw window messages from the system and then register to receive clipboard notification messages. This is doable in Xojo but not simple; see the HotKeyHelper class in the Windows Functionality Suite for an example of receiving window messages.
A much simpler solution is to poll the clipboard sequence number:
Function HasClipboardChanged() As Boolean
Declare Function GetClipboardSequenceNumber Lib "User32" () As Integer
Static lastSeqNum As Integer
Dim current As Integer = GetClipboardSequenceNumber()
If current <> lastSeqNum Then
lastSeqNum = current
Return True
End If
End Function
Thanks Andrew.
So would I put that code onto a timer to constantly monitor the clipboard?
Yes. I’d suggest using the shortest possible period (1ms) for the Timer.
Many thanks.
You cant use a period shorter than 16ms in windows with regular timers.
The propper way is with declares: sensing when the clip board has changed - #10 by David_Cox
But the timer can work Ok
The intent of using a 1ms period here is to have the timer run on every iteration of the event loop, however frequently that may be.
Then you can use “timer timeout of 0 that means the next event loop” you can use timer.Calllater 0, AddressOf AMethod