Using OLE web browser control in PowerBuilder is easy. You choose "Create OLE control" from control list. Click on "Insert Control" tab and choose "Microsoft Web Browser". You may use it for web browsing or display PDF files. When I worked on a project in 2001, I had an issue with OLE Adobe Reader control in PowerBuilder. It had memory leak. After opening a handful PDF files, it would crash. Finally I found the solution to work around this issue. That was using "Microsoft Web Browser" control.
Here is how to use it and some of the features I used:
1. How to navigate?
ole_browser.object.navigate("http://www.google.com")
2. How to go back and forward?
ole_browser.object.GoBack()
ole_browser.object.GoForward()
If you have the "Back" and "Forward" button, you will want to enable them only when there are pages you can go back and forward. Then you need to have the following code in the "commandstatechange" event of the OLE control.
CHOOSE CASE command
CASE 1 //CSC_NAVIGATEFORWARD
cb_forrward.enabled = enable
CASE 2 //CSC_NAVIGATEBACK
cb_back.enabled = enable
END CHOOSE
3. How to get the url and name
In "navigatecomplete2" event you can use the following properties
ole_browser.Object.LocationUrl
ole_browser.Object.LocationName
4. How to do some common actions?
You may use ExecWB( cmdID As OLECMDID, cmdexecopt As OLECMDEXECOPT, [pvaIn As Variant,] [pvaOut As Variant]) to perform some common actions in Web Browser Control. For example, ole_browser.object.ExecWB(12, 2) is to copy the highlighted text. Below is the list of command arguments:
typedef enum
{
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,
OLECMDID_ONTOOLBARACTIVATED = 31,
OLECMDID_FIND = 32,
OLECMDID_DELETE = 33,
OLECMDID_HTTPEQUIV = 34,
OLECMDID_HTTPEQUIV_DONE = 35,
OLECMDID_ENABLE_INTERACTION = 36,
OLECMDID_ONUNLOAD = 37,
OLECMDID_PROPERTYBAG2 = 38,
OLECMDID_PREREFRESH = 39,
OLECMDID_SHOWSCRIPTERROR = 40,
OLECMDID_SHOWMESSAGE = 41,
OLECMDID_SHOWFIND = 42,
OLECMDID_SHOWPAGESETUP = 43,
OLECMDID_SHOWPRINT = 44,
OLECMDID_CLOSE = 45,
OLECMDID_ALLOWUILESSSAVEAS = 46,
OLECMDID_DONTDOWNLOADCSS = 47,
OLECMDID_UPDATEPAGESTATUS = 48,
OLECMDID_PRINT2 = 49,
OLECMDID_PRINTPREVIEW2 = 50,
OLECMDID_SETPRINTTEMPLATE = 51,
OLECMDID_GETPRINTTEMPLATE = 52,
OLECMDID_PAGEACTIONBLOCKED = 55,
OLECMDID_PAGEACTIONUIQUERY = 56,
OLECMDID_FOCUSVIEWCONTROLS = 57,
OLECMDID_FOCUSVIEWCONTROLSQUERY = 58,
OLECMDID_SHOWPAGEACTIONMENU = 59,
OLECMDID_ADDTRAVELENTRY = 60,
OLECMDID_UPDATETRAVELENTRY = 61,
OLECMDID_UPDATEBACKFORWARDSTATE = 62,
OLECMDID_OPTICAL_ZOOM = 63,
OLECMDID_OPTICAL_GETZOOMRANGE = 64,
OLECMDID_WINDOWSTATECHANGED = 65,
OLECMDID_ACTIVEXINSTALLSCOPE = 66
} OLECMDID;
typedef enum
{
OLECMDEXECOPT_DODEFAULT = 0,
OLECMDEXECOPT_PROMPTUSER = 1,
OLECMDEXECOPT_DONTPROMPTUSER = 2,
OLECMDEXECOPT_SHOWHELP = 3
} OLECMDEXECOPT;
Although it says OLECMDEXECOPT_DONTPROMPTUSER = 2 doesn't show the dialog, but when you run execwb(6,2) to print a web page, it will always show the dialog. That is be design. Check Microsoft KB http://support.microsoft.com/kb/247671 for more info.
I recently came across your blog and have been reading along. I thought I would leave my first comment. I don't know what to say except that I have enjoyed reading. Nice blog. I will keep visiting this blog very often.
ReplyDeleteThank You
PowerBuilder