Creating A Simple Web Browser Using DotNet

new.gif NEW in 3ds Max 9: 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.

Script:

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 showProperties() on the control:

Code:

showProperties webbrowser_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

.Url : <System.Uri>

.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:

dotnet_wb_autodesk.gif

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 MAXScript edittext 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...

See also

DotNet In MAXScript