http://msdn.microsoft.com/workshop/netw ... frame=true
ActiveBasic Code GetBrowserClipboard
Code: Select all
Declare Function MultiByteToWideChar Lib "kernel32" (CodePage As DWord,dwFlags As DWord,lpMultiByteStr As String,cchMultiByte As Long,lpWideCharStr As String,cchWideChar As Long)As Long
Declare Function WideCharToMultiByte Lib "kernel32" (CodePage As DWord,dwFlags As DWord,lpWideByteStr As VoidPtr,cchWideByte As Long,lpMultiCharStr As String,cchMultiChar As Long,pDefaultChar As BytePtr,pUsedDefaultChar As DWordPtr)As Long
Function GetBrowserClipboardData() As String
Dim hData As DWord,pData As VoidPtr
Dim Buf As String,Buf2 As String,dwSize As DWord
Dim Ret1 As DWord,Ret2 As DWord
OpenClipboard(0)
hData=GetClipboardData(&HC0F9)
If hData Then
pData=GlobalLock(hData)
If GetByte(pData) Then
dwSize=MultiByteToWideChar(65001,0,pData,-1,0,0)
Buf=ZeroString(dwSize*2)
MultiByteToWideChar(65001,0,pData,-1,Buf,dwSize)
dwSize=WideCharToMultiByte(0,0,Buf,-1,0,0,0,0)
Buf2=ZeroString(dwSize)
WideCharToMultiByte(0,0,Buf,-1,Buf2,dwSize,0,0)
Ret1=InStr(1,Buf2,"<!--StartFragment")
Ret1=InStr(Ret1,Buf2,">")+1
If Buf2[Ret1-1]=&H0D Then Ret1=Ret1+2
Ret2=InStr(Ret1,Buf2,"<!--EndFragment")
GetBrowserClipboardData=Mid$(Buf2,Ret1,Ret2-Ret1)
End If
GlobalUnlock(hData)
Else
GetBrowserClipboardData=""
End If
CloseClipboard()
End Function
Code: Select all
Declare Function MultiByteToWideChar Lib "kernel32" (CodePage As DWord,dwFlags As DWord,lpMultiByteStr As String,cchMultiByte As Long,lpWideCharStr As String,cchWideChar As Long)As Long
Declare Function WideCharToMultiByte Lib "kernel32" (CodePage As DWord,dwFlags As DWord,lpWideByteStr As VoidPtr,cchWideByte As Long,lpMultiCharStr As String,cchMultiChar As Long,pDefaultChar As BytePtr,pUsedDefaultChar As DWordPtr)As Long
Sub SetBrowserClipboardData(szString As String)
Dim hData As DWord,pData As BytePtr
Dim Buf As String,Buf2 As String,dwSize As DWord
OpenClipboard(0)
EmptyClipboard()
dwSize=MultiByteToWideChar(0,0,szString,-1,0,0)
Buf=ZeroString(dwSize*2)
MultiByteToWideChar(0,0,szString,-1,Buf,dwSize)
dwSize=WideCharToMultiByte(65001,0,Buf,-1,0,0,0,0)
Buf2=ZeroString(dwSize*2)
WideCharToMultiByte(65001,0,Buf,-1,Buf2,dwSize,0,0)
hData=GlobalAlloc(GHND,173+dwSize)
pData=GlobalLock(hData)
wsprintf(pData,Ex"Version:0.9\r\nStartHTML:00000097\r\nEndHTML:%08u\r\nStartFragment:00000113\r\nEndFragment:%08u\r\n<html>\r\n<body>\r\n<!--StartFragment-->%s<!--EndFragment-->\r\n</body>\r\n</html>",169+dwSize,132+dwSize,Buf2)
GlobalUnlock(hData)
SetClipboardData(&HC0F9,hData)
CloseClipboard()
End Sub
Challnge My PB Code
Code: Select all
; Procedure.s GetBrowserClipboardData()
OpenClipboard_(0)
hData=GetClipboardData($C0F9)
;hData=GetClipboardData(#CF_TEXT)
If hData
*pData=GlobalLock_(hData)
If PeekB(hData)
dwSize=MultiByteToWideChar_(65001,0,*pData,-1,0,0)
Buf.s=Space(dwSize*2)
MultiByteToWideChar_(65001,0,*pData,-1,@Buf,dwSize)
dwSize=WideCharToMultiByte_(0,0,@Buf,-1,0,0,0,0)
Buf2.s=Space(dwSize)
WideCharToMultiByte_(0,0,@Buf,-1,@Buf2,dwSize,0,0)
Debug Buf2
Ret1=FindString(Buf2,"<!--StartFragment",0)
Ret1=FindString(Buf2,">",Ret1)+1
If PeekB(@Buf2+Ret1-1)=$0D
Ret1=Ret1+2
EndIf
Ret2=FindString(Buf2,"<!--EndFragment",Ret1)
GetBClipboardData.s=Mid(Buf2,Ret1,Ret2-Ret1)
EndIf
GlobalUnlock_(hData)
Else
GetBClipboardData.s=""
EndIf
CloseClipboard_()
Debug GetBClipboardData
End
Please teach a good code.
Thanks