Retrieve HTML from Clipboard

MSDN:

This is sample code. Add error handling and adjust to your requirements as necessary.

lcHtml = HtmlFromClipboard()
IF NOT ISNULL(lcHtml)
	lnStartHTML = VAL(STREXTRACT(lcHtml, "StartHTML:", ""))
	lnEndHTML = VAL(STREXTRACT(lcHtml, "EndHTML:", ""))
	* If StartFragment is present, retrieve HTML fragment
	IF ("StartFragment" $ lcHtml)
		lnStartHTML = VAL(STREXTRACT(lcHtml, "StartFragment:", ""))
		lnEndHTML = VAL(STREXTRACT(lcHtml, "EndFragment:", ""))
	ENDIF	
 
	lcHtml = SUBSTR(lcHtml, lnStartHTML + 1, lnEndHTML - lnStartHTML)
	***STRTOFILE(lcHtml, "Temp2.html")
	***Modify command Temp2.html NOWAIT
ELSE
	? "HTML is not on clipboard"	
ENDIF	
RETURN
FUNCTION HtmlFromClipboard
LOCAL lnHtmlFormat, lhMem, lnPtr, lcHtml
 
lcHtml = ""
lcHtml = NULL
* Load required Windows API functions
=LoadApiDlls()
 
* Register HTML format
lnHtmlFormat = RegisterClipboardFormat("HTML Format")
 
* open clipboard
= OpenClipboard(_SCREEN.hWnd)
 
* Uncomment to see what formats are present on clipboard
*= EnumerateClipboardFormats()
 
lhMem = GetClipboardData (lnHtmlFormat)
IF lhMem = 0	
	* No HTML data on Clipboard
	= CloseClipboard()
	RETURN lcHtml
ENDIF
 
lnPtr = GlobalLock(lhMem)
IF lnPtr = 0	
	* No HTML data on Clipboard
	= CloseClipboard()
	RETURN lcHtml
ENDIF
lnLen = lstrlen (lnPtr)
lcHtml = SYS(2600, lnPtr, lnLen)
=GlobalUnlock(lhMem)
 
*= EmptyClipboard()
= CloseClipboard()
RETURN lcHtml
 
FUNCTION LoadApiDlls
*  Clipboard Functions
DECLARE LONG OpenClipboard IN WIN32API LONG HWND
DECLARE LONG CloseClipboard IN WIN32API
DECLARE LONG RegisterClipboardFormat IN WIN32API STRING lpszFormat
DECLARE Long GetClipboardData IN WIN32API Long lnFormat
 
*  Memory Management Functions
DECLARE LONG GlobalLock IN WIN32API LONG HMEM
DECLARE LONG GlobalUnlock IN WIN32API LONG HMEM
DECLARE Long lstrlen IN WIN32API Long
RETURN
 
FUNCTION EnumerateClipboardFormats
* Enumerate the file formats in the clipboard.
* Helpful for testing, otherwise is not required.
DECLARE Long EnumClipboardFormats IN WIN32API Long lnFormat
lnFormat = 0
lnFormat = EnumClipboardFormats(lnFormat)
lnCntr = 1
DO WHILE lnFormat > 0
	? lnCntr, lnFormat
	lnCntr = lnCntr + 1
	lnFormat = EnumClipboardFormats(lnFormat)
ENDDO
ENDFUNC
Your rating: None Average: 5 (2 votes)