Creating A Simple Web Browser Using DotNet
In the following example, we will create a simple Web Browser using the WebBrowser
DotNet control provided by System.Windows.Forms
First, we create a simple MAXScript rollout and add a dotNetControl called wb which
uses the System.Windows.Forms.WebBrowser control.
Then we open the rollout as a dialog - the WebBrowser will be, of course, empty.
EXAMPLE
|
rollout webbrowser_rollout "Web Test" width:600 height:600
(
dotNetControl wb "System.Windows.Forms.WebBrowser" pos:[10,10] width:580 height:580
)
createdialog webbrowser_rollout
|
At this point, we would like to set a default URL for the browser to open at. To see
what properties are available in the WebBrowser control, we can call show Properties()
on the control:
CODE
|
showPropertieswebbrowser_rollout.wb
|
RESULT
|
.AccessibilityObject : <System.Windows.Forms.AccessibleObject>, read-only
.AccessibleDefaultActionDescription : <System.String>
.AccessibleDescription : <System.String>
.AccessibleName : <System.String>
.AccessibleRole : <System.Windows.Forms.AccessibleRole>
.ActiveXInstance : <System.Object>, read-only
.AllowDrop : <System.Boolean>
.AllowNavigation : <System.Boolean>
.AllowWebBrowserDrop : <System.Boolean>
.Anchor : <System.Windows.Forms.AnchorStyles>
.AutoScrollOffset : <System.Drawing.Point>
.AutoSize : <System.Boolean>
.BackColor : <System.Drawing.Color>
.BackgroundImage : <System.Drawing.Image>
.BackgroundImageLayout : <System.Windows.Forms.ImageLayout>
.BindingContext : <System.Windows.Forms.BindingContext>
.Bottom : <System.Int32>, read-only
.Bounds : <System.Drawing.Rectangle>
.CanFocus : <System.Boolean>, read-only
.CanGoBack : <System.Boolean>, read-only
.CanGoForward : <System.Boolean>, read-only
.CanSelect : <System.Boolean>, read-only
.Capture : <System.Boolean>
.CausesValidation : <System.Boolean>
.CheckForIllegalCrossThreadCalls : <System.Boolean>, static
.ClientRectangle : <System.Drawing.Rectangle>, read-only
.ClientSize : <System.Drawing.Size>
.CompanyName : <System.String>, read-only
.Container : <System.ComponentModel.IContainer>, read-only
.ContainsFocus : <System.Boolean>, read-only
.ContextMenu : <System.Windows.Forms.ContextMenu>
.ContextMenuStrip : <System.Windows.Forms.ContextMenuStrip>
.Controls : <System.Windows.Forms.Control+ControlCollection>, read-only
.Created : <System.Boolean>, read-only
.Cursor : <System.Windows.Forms.Cursor>
.DataBindings : <System.Windows.Forms.ControlBindingsCollection>, read-only
.DefaultBackColor : <System.Drawing.Color>, read-only, static
.DefaultFont : <System.Drawing.Font>, read-only, static
.DefaultForeColor : <System.Drawing.Color>, read-only, static
.DisplayRectangle : <System.Drawing.Rectangle>, read-only
.Disposing : <System.Boolean>, read-only
.Dock : <System.Windows.Forms.DockStyle>
.Document : <System.Windows.Forms.HtmlDocument>, read-only
.DocumentStream : <System.IO.Stream>
.DocumentText : <System.String>
.DocumentTitle : <System.String>, read-only
.DocumentType : <System.String>, read-only
.Enabled : <System.Boolean>
.EncryptionLevel : <System.Windows.Forms.WebBrowserEncryptionLevel>, read-only
.Focused : <System.Boolean>, read-only
.Font : <System.Drawing.Font>
.ForeColor : <System.Drawing.Color>
.Handle : <System.IntPtr>, read-only
.HasChildren : <System.Boolean>, read-only
.Height : <System.Int32>
.ImeMode : <System.Windows.Forms.ImeMode>
.InvokeRequired : <System.Boolean>, read-only
.IsAccessible : <System.Boolean>
.IsBusy : <System.Boolean>, read-only
.IsDisposed : <System.Boolean>, read-only
.IsHandleCreated : <System.Boolean>, read-only
.IsMirrored : <System.Boolean>, read-only
.IsOffline : <System.Boolean>, read-only
.IsWebBrowserContextMenuEnabled : <System.Boolean>
.LayoutEngine : <System.Windows.Forms.Layout.LayoutEngine>, read-only
.Left : <System.Int32>
.Location : <System.Drawing.Point>
.Margin : <System.Windows.Forms.Padding>
.MaximumSize : <System.Drawing.Size>
.MinimumSize : <System.Drawing.Size>
.ModifierKeys : <System.Windows.Forms.Keys>, read-only, static
.MouseButtons : <System.Windows.Forms.MouseButtons>, read-only, static
.MousePosition : <System.Drawing.Point>, read-only, static
.Name : <System.String>
.ObjectForScripting : <System.Object>
.Padding : <System.Windows.Forms.Padding>
.Parent : <System.Windows.Forms.Control>
.PreferredSize : <System.Drawing.Size>, read-only
.ProductName : <System.String>, read-only
.ProductVersion : <System.String>, read-only
.ReadyState : <System.Windows.Forms.WebBrowserReadyState>, read-only
.RecreatingHandle : <System.Boolean>, read-only
.Region : <System.Drawing.Region>
.Right : <System.Int32>, read-only
.RightToLeft : <System.Windows.Forms.RightToLeft>
.ScriptErrorsSuppressed : <System.Boolean>
.ScrollBarsEnabled : <System.Boolean>
.Site : <System.ComponentModel.ISite>, write-only
.Size : <System.Drawing.Size>
.StatusText : <System.String>, read-only
.TabIndex : <System.Int32>
.TabStop : <System.Boolean>
.Tag : <System.Object>
.Text : <System.String>
.Top : <System.Int32>
.TopLevelControl : <System.Windows.Forms.Control>, read-only
.UseWaitCursor : <System.Boolean>
.Version : <System.Version>, read-only
.Visible : <System.Boolean>
.WebBrowserShortcutsEnabled : <System.Boolean>
.Width : <System.Int32>
.WindowTarget : <System.Windows.Forms.IWindowTarget>
|
We can see that there is a property URL exposed by the control. We can assume that
this is the property we have to set in order to access a web page.
We also see that the type of the value expected by the DotNet control is System.Uri.
This means that we will have to convert the URL MAXScript String value to a dotNetObject
value of the expected type:
CODE
|
webbrowser_rollout.wb.url = dotNetObject "System.Uri" "http://www.autodesk.com"
|
At this point, if your computer has Internet access, the Web Browser should display
the Autodesk homepage:
A Web Browser requires at least an address text field so the user can enter other
URLs. We can easily transform our first script into a more advanced Web Browser by
adding a MAXScriptedittext control and some event handlers:
SCRIPT
|
rollout webbrowser_rollout "Web Test" width:600 height:600
(
edittext edt_url "URL:" text:"http://www.autodesk.com"
dotNetControl wb "System.Windows.forms.WebBrowser" pos:[10,22] width:580 height:570
fn openURL urlString = (
wb.url = dotNetObject "System.Uri" urlString )
on edt_url entered txt do openURL txt
on webbrowser_rollout open do openURL edt_url.text
)
createdialog webbrowser_rollout
|
Try typing in other URLs in the text field and see your Web Browser opening them...