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