Reply to comment

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

Reply

The content of this field is kept private and will not be shown publicly.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>, <java>, <powershell>, <tsql>, <visualfoxpro>. The supported tag styles are: <foo>, [foo].
  • Lines and paragraphs break automatically.
  • Web page addresses and e-mail addresses turn into links automatically.

More information about formatting options

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
Image CAPTCHA
Enter the characters shown in the image.