Clipboard Accsess

BlitzMax Forums/BlitzMax Programming/Clipboard Accsess

The forum is locked. These are the original blitzbasic.com forums, kept so they can still be read. No new topics, replies or edits can be made here. To join in, head over to the Blitz3D+ forums.

I have find (thanks Birdie)


Extern "Win32" 

Function OpenClipboard:Int (hwnd:Int) 
Function ReadClipboard:Int (hwnd:Int) 
Function CloseClipboard:Int () 
Function IsClipboardFormatAvailable:Int (format:Int) 
Function EmptyClipboard:Int () 
Function GetClipboardData(format:Int) 
Function SetClipboardData:Int (format:Int,hMem:Byte Ptr) 
Function GlobalAlloc:Byte Ptr( uflags, bytes )
Function GlobalFree( buf:Byte Ptr )

End Extern 

Function ClipboardRead:String() 
	Const CF_TEXT = 1 
	Local clip:String
	Local cbd:Int
	
	If OpenClipboard(0) 
		If IsClipboardFormatAvailable(CF_TEXT) 
			cbd=GetClipBoardData(CF_TEXT)
			clip=clip.FromCString(Byte Ptr cbd)
		EndIf 
		
		CloseClipboard 
		Return clip
	EndIf
End Function 

Function ClipboardWrite(Text:String) 
	Const CF_TEXT = 1 
	Local cbd:Int
	Local hbuf:Byte Ptr

	If OpenClipboard(0) 
		EmptyClipboard
		hbuf = GlobalAllocString(Text)
		cbd=SetClipBoardData(CF_TEXT, hbuf)
		CloseClipboard 
		GlobalFree( hbuf )
	EndIf
End Function 

Function GlobalAllocString:Byte Ptr( txt$ )
	Local p:Byte Ptr= GlobalAlloc( GMEM_FIXED , Len(txt)+1 )
	
	For Local i=0 Until Len(txt)
		p[i]=txt[i]
	Next
	
	p[Len(txt)+1]=0
	
	Return p
EndFunction


Graphics 1024,768,0

Global txt:String = "" 

ClipboardWrite("TEST") 

Repeat 
Cls 

If (KeyDown(Key_LControl) And KeyHit(Key_V)) txt = ClipboardRead() 
DrawText "< "+txt+" >",100,100 

Flip 
FlushMem 
Until KeyHit(Key_Escape)