With a bit of Fred's help, I got this thing working...
Just select something and press 'copy'...
Code: Select all
#X = 0 ; the good old trick... I'm too lazy
; here comes the IWebBrowser2 Interface for CallCOM()
#QueryInterface = #X: #X = #X + 4
#AddRef = #X: #X = #X + 4
#Release = #X: #X = #X + 4
#GetTypeInfoCount = #X: #X = #X + 4
#GetTypeInfo = #X: #X = #X + 4
#GetIDsOfNames = #X: #X = #X + 4
#Invoke = #X: #X = #X + 4
#GoBack = #X: #X = #X + 4
#GoForward = #X: #X = #X + 4
#GoHome = #X: #X = #X + 4
#GoSearch = #X: #X = #X + 4
#Navigate = #X: #X = #X + 4
#Refresh = #X: #X = #X + 4
#Refresh2 = #X: #X = #X + 4
#Stop = #X: #X = #X + 4
#get_Application = #X: #X = #X + 4
#get_Parent = #X: #X = #X + 4
#get_Container = #X: #X = #X + 4
#get_Document = #X: #X = #X + 4
#get_TopLevelContainer = #X: #X = #X + 4
#get_Type = #X: #X = #X + 4
#get_Left = #X: #X = #X + 4
#put_Left = #X: #X = #X + 4
#get_Top = #X: #X = #X + 4
#put_Top = #X: #X = #X + 4
#get_Width = #X: #X = #X + 4
#put_Width = #X: #X = #X + 4
#get_Height = #X: #X = #X + 4
#put_Height = #X: #X = #X + 4
#get_LocationName = #X: #X = #X + 4
#get_LocationURL = #X: #X = #X + 4
#get_Busy = #X: #X = #X + 4
#Quit = #X: #X = #X + 4
#ClientToWindow = #X: #X = #X + 4
#PutProperty = #X: #X = #X + 4
#GetProperty = #X: #X = #X + 4
#get_Name = #X: #X = #X + 4
#get_HWND = #X: #X = #X + 4
#get_FullName = #X: #X = #X + 4
#get_Path = #X: #X = #X + 4
#get_Visible = #X: #X = #X + 4
#put_Visible = #X: #X = #X + 4
#get_StatusBar = #X: #X = #X + 4
#put_StatusBar = #X: #X = #X + 4
#get_StatusText = #X: #X = #X + 4
#put_StatusText = #X: #X = #X + 4
#get_ToolBar = #X: #X = #X + 4
#put_ToolBar = #X: #X = #X + 4
#get_MenuBar = #X: #X = #X + 4
#put_MenuBar = #X: #X = #X + 4
#get_FullScreen = #X: #X = #X + 4
#put_FullScreen = #X: #X = #X + 4
#Navigate2 = #X: #X = #X + 4
#QueryStatusWB = #X: #X = #X + 4
#ExecWB = #X: #X = #X + 4
#ShowBrowserBar = #X: #X = #X + 4
#get_ReadyState = #X: #X = #X + 4
#get_Offline = #X: #X = #X + 4
#put_Offline = #X: #X = #X + 4
#get_Silent = #X: #X = #X + 4
#put_Silent = #X: #X = #X + 4
#get_RegisterAsBrowser = #X: #X = #X + 4
#put_RegisterAsBrowser = #X: #X = #X + 4
#get_RegisterAsDropTarget = #X: #X = #X + 4
#put_RegisterAsDropTarget = #X: #X = #X + 4
#get_TheaterMode = #X: #X = #X + 4
#put_TheaterMode = #X: #X = #X + 4
#get_AddressBar = #X: #X = #X + 4
#put_AddressBar = #X: #X = #X + 4
#get_Resizable = #X: #X = #X + 4
#put_Resizable = #X
; Constants for the ExecWB Method:
#OLECMDID_OPEN = 1
#OLECMDID_NEW = 2
#OLECMDID_SAVE = 3
#OLECMDID_SAVEAS = 4
#OLECMDID_SAVECOPYAS = 5
#OLECMDID_PRINT = 6
#OLECMDID_PRINTPREVIEW = 7
#OLECMDID_PAGESETUP = 8
#OLECMDID_SPELL = 9
#OLECMDID_PROPERTIES = 10
#OLECMDID_CUT = 11
#OLECMDID_COPY = 12
#OLECMDID_PASTE = 13
#OLECMDID_PASTESPECIAL = 14
#OLECMDID_UNDO = 15
#OLECMDID_REDO = 16
#OLECMDID_SELECTALL = 17
#OLECMDID_CLEARSELECTION = 18
#OLECMDID_ZOOM = 19
#OLECMDID_GETZOOMRANGE = 20
#OLECMDID_UPDATECOMMANDS = 21
#OLECMDID_REFRESH = 22
#OLECMDID_STOP = 23
#OLECMDID_HIDETOOLBARS = 24
#OLECMDID_SETPROGRESSMAX = 25
#OLECMDID_SETPROGRESSPOS = 26
#OLECMDID_SETPROGRESSTEXT = 27
#OLECMDID_SETTITLE = 28
#OLECMDID_SETDOWNLOADSTATE = 29
#OLECMDID_STOPDOWNLOAD = 30
#OLECMDEXECOPT_DODEFAULT = 0
#OLECMDEXECOPT_PROMPTUSER = 1
#OLECMDEXECOPT_DONTPROMPTUSER = 2
#OLECMDEXECOPT_SHOWHELP = 3
; -----------------------------------------------------
; Now the code
#WebGadget = 1
#Button = 2
OpenWindow(0, 0, 0, 800, 800, #PB_Window_Screencentered|#PB_Window_SystemMenu, "WebBrowser")
CreateGadgetList(WindowID())
WebGadget(#WebGadget, 10, 40, 780, 750, "www.purebasic.com")
ButtonGadget(#Button, 10, 10, 60, 20, "Copy")
; Fred the genius stored the Interface pointer to IWebBrowser2 in the DATA
; member of the windowstructure of the WebGadget containerwindow, so we can get
; that easily:
WebObject.l = GetWindowLong_(GadgetID(#WebGadget), #GWL_USERDATA)
Repeat
Event = WaitWindowEvent()
If Event = #PB_EventGadget And EventGadgetID() = #Button
; Now here's the actual copy thing, not that complicated...
CallCOM(#ExecWB, WebObject, #OLECMDID_COPY, #OLECMDEXECOPT_DONTPROMPTUSER, 0, 0)
; little test:
MessageRequester("", GetClipboardText(), 0)
EndIf
Until Event = #PB_EventCLoseWindow
End
Here's the description of the Methods of IWebBrowser2:
http://msdn.microsoft.com/library/defau ... owser2.asp
ms-help://MS.PSDK.1033/inet/workshop/browser/webbrowser/reference/ifaces/iwebbrowser2/iwebbrowser2.htm (for those with MS PlatformSDK 2003)
Timo