Retrieve HTML from Clipboard

MSDN:

This is sample code. Add error handling and adjust to your requirements as necessary.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67

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

Comments