# RhinoApp class

Namespace: [Rhino](https://developer.rhino3d.com/api/rhinocommon/namespace/rhino.md) · Assembly: [RhinoCommon](https://developer.rhino3d.com/api/rhinocommon/assembly/rhinocommon.md)

```cs
public static class RhinoApp
```

.NET RhinoApp is parallel to C++ CRhinoApp.

## Properties

- [BuildDate](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/builddate.md): (static) Gets the build date.
- [CanSave](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/cansave.md): (static) Returns true when Rhino is allowed to save, false otherwise Conditions where Rhino is not allowed to save are: when evaluation licenses are expired; when a Cloud Zoo lease is expired; when a license is shared by a single user on multiple computers, and the current computer is not active.
- [CheckNewObject](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/checknewobject.md): (static) Returns true if Rhino will validate each object added to the document. This can be time consuming but is valuable for debugging.
- [CommandHistoryWindowText](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/commandhistorywindowtext.md): (static) Text in Rhino's command history window.
- [CommandLineOut](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/commandlineout.md): (static) Provides a TextWriter that can write to the command line.
- [CommandPrompt](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/commandprompt.md): (static) Rhino command prompt.
- [CommandWindowCaptureEnabled](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/commandwindowcaptureenabled.md): (static) Enable or disable capturing of the strings sent to the CommandWindow through Write and WriteLine calls
- [CurrentRhinoId](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/currentrhinoid.md): (static) Gets the current ID of Rhino.
- [DaysUntilExpiration](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/daysuntilexpiration.md): (static) Returns number of days until license expires. Zero when license is expired. Raises InvalidLicenseTypeException if LicenseExpires would return false.
- [DefaultUiFont](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/defaultuifont.md): (static) Default font used to render user interface
- [ExeServiceRelease](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/exeservicerelease.md): (static) Service release version of Rhino executable (0, 1, 2, ...) The integer is the service release number of Rhino. For example, this function returns "0" if Rhino V4SR0 is running and returns "1" if Rhino V4SR1 is running.
- [ExeVersion](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/exeversion.md): (static) Major version of Rhino executable 4, 5, ...
- [InCommand](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/incommand.md): (static) Gets the nested command count.
- [InstallationType](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/installationtype.md): (static) Gets the product installation type, as seen in Rhino's ABOUT dialog box.
- [InstallationTypeString](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/installationtypestring.md): (static) Gets the type of installation (product edition) of the license or lease.
- [InvokeRequired](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/invokerequired.md): (static) Returns true if we are currently not running on the main user interface thread
- [IsClosing](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/isclosing.md): (static) Returns true if Rhino is in the process of closing, false otherwise. This can be true even before the Closing event fires, such as when RhinoDoc.CloseDocument event is called.
- [IsCloudZooNode](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/iscloudzoonode.md): (static) Returns true if rhino is currently using the Cloud Zoo false otherwise
- [IsEvaluation](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/isevaluation.md): (static) Returns true if Rhino is licensed as an Evaluation product false otherwise
- [IsExiting](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/isexiting.md): (static) Returns true if Rhino is in the process of exiting, false otherwise. This can be true even before the Closing event fires, such as when RhinoDoc.CloseDocument event is called.
- [IsInternetAccessAllowed](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/isinternetaccessallowed.md): (static) Returns true when Rhino is allowed to access the Internet, false otherwise. Note, this does not test if Internet access is available.
- [IsLicenseValidated](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/islicensevalidated.md): (static) Returns true if the license is validated false otherwise
- [IsOnMainThread](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/isonmainthread.md): (static) Is the current thread the main thread
- [IsParentDesktop](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/isparentdesktop.md): (static) Returns true if Rhino's parent window is the desktop, false otherwise.
- [IsPreRelease](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/isprerelease.md): (static) Returns true if Rhino is compiled as pre-release build (Beta, WIP) false otherwise
- [IsRunningAutomated](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/isrunningautomated.md): (static) Is Rhino currently being executed through automation
- [IsRunningBatchMode](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/isrunningbatchmode.md): (static) Is Rhino currently being executed as a batch run, either started with the /batchmode command line switch or put into batch mode since by the BatchMode command. A batch run has a main window but no user: commands take their input from the command line rather than showing dialogs, and modal message boxes are written to the command line instead of being shown.
- [IsRunningHeadless](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/isrunningheadless.md): (static) Is Rhino currently being executed in headless mode
- [IsRunningUnattended](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/isrunningunattended.md): (static) Is Rhino running with no user available to answer a question. True when either [RhinoApp.IsRunningHeadless](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/isrunningheadless.md) or [RhinoApp.IsRunningBatchMode](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/isrunningbatchmode.md) is true.
- [IsSafeModeEnabled](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/issafemodeenabled.md): (static) Is Rhino being executed in safe mode
- [IsSkinned](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/isskinned.md): (static) Is Rhino currently using custom, user-interface Skin.
- [LicenseExpires](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/licenseexpires.md): (static) Returns true if the license will expire false otherwise
- [LicenseUserName](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/licenseusername.md): (static) Gets the name of the user that owns the license or lease.
- [LicenseUserOrganization](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/licenseuserorganization.md): (static) Gets the name of the organization of the user that owns the license or lease.
- [LoggedInUserAvatar](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/loggedinuseravatar.md): (static) Returns the logged in user's avatar picture. Returns a default avatar if the user does not have an avatar or if the avatar could not be fetched.
- [LoggedInUserName](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/loggedinusername.md): (static) Returns the name of the logged in user, or null if the user is not logged in.
- [MainApplicationWindow](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/mainapplicationwindow.md): (static, obsolete) Same as MainWindow function, but provides the concrete class instead of an interface
- [Name](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/name.md): (static) Gets the application name.
- [NodeType](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/nodetype.md): (static) Gets license the node type.
- [Rhino2Id](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/rhino2id.md): (static) Gets the ID of Rhino 2.
- [Rhino3Id](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/rhino3id.md): (static) Gets the ID of Rhino 3.
- [Rhino4Id](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/rhino4id.md): (static) Gets the ID of Rhino 4.
- [Rhino5Id](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/rhino5id.md): (static) Gets the ID of Rhino 5
- [Rhino6Id](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/rhino6id.md): (static) Gets the ID of Rhino 6
- [Rhino7Id](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/rhino7id.md): (static) Gets the ID of Rhino 7
- [SchemeName](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/schemename.md): (static) Gets the current Registry scheme name.
- [SdkServiceRelease](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/sdkservicerelease.md): (static) Rhino SDK 9 digit SDK service release number in the form YYYYMMDDn Service release of the Rhino SDK supported by this executable. Rhino will only load plug-ins that require a service release of <= this release number. For example, SR1 will load all plug-ins made with any SDK released up through and including the SR1 SDK. But, SR1 will not load a plug-in built using the SR2 SDK. If an "old" Rhino tries to load a "new" plug-in, the user is told that they have to get a free Rhino.exe update in order for the plug-in to load. Rhino.exe updates are available from http://www.rhino3d.com.
- [SdkVersion](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/sdkversion.md): (static) Rhino SDK 9 digit SDK version number in the form YYYYMMDDn Rhino will only load plug-ins that were build with exactly the same version of the SDK.
- [SendWriteToConsole](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/sendwritetoconsole.md): (static) Enable or disable sending command window strings to the console RhinoApp.Write(...) calls would be sent to the console when this is enabled
- [SerialNumber](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/serialnumber.md): (static) Gets the product serial number, as seen in Rhino's ABOUT dialog box.
- [ToolbarFiles](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/toolbarfiles.md): (static) Collection of currently open toolbar files in the application
- [UpdatesAndStatisticsStatus](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/updatesandstatisticsstatus.md): (static) Returns true when Rhino is allowed to access the Internet, false otherwise. Note, this does not test if Internet access is available.
- [UserIsLoggedIn](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/userisloggedin.md): (static) Returns true if the user is logged in; else returns false. A logged in user does not guarantee that the auth tokens managed by the CloudZooManager instance are valid.
- [ValidationGracePeriodDaysLeft](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/validationgraceperioddaysleft.md): (static) Returns number of days within which validation must occur. Zero when validation grace period has expired. Raises InvalidLicenseTypeException if LicenseType is one of: EvaluationSaveLimited EvaluationTimeLimited Viewer Unknown
- [Version](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/version.md): (static) File version of the main Rhino process
- [VersionControlRevision](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/versioncontrolrevision.md): (static) McNeel version control revision identifier at the time this version of Rhino was built.

## Methods

- [AskUserForRhinoLicense](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/askuserforrhinolicense.md): (static) Display UI asking the user to enter a license for Rhino or use one from the Zoo.
- [CapturedCommandWindowStrings](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/capturedcommandwindowstrings.md): (static) Get list of strings sent to the command window through calls to Write or WriteLine when capturing has been enabled
- [ChangeLicenseKey](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/changelicensekey.md): (static) Display UI asking the user to enter a license for the product specified by licenseId.
- [ClearCommandHistoryWindow](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/clearcommandhistorywindow.md): (static) Clear the text in Rhino's command history window.
- [ExecuteCommand](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/executecommand.md): (static) Execute a Rhino command.
- [Exit](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/exit.md): (2 overloads, static) Exits, or closes, Rhino.
- [GetDataDirectory](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/getdatadirectory.md): (2 overloads, static) Gets the data directory.
- [GetExecutableDirectory](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/getexecutabledirectory.md): (static) Directory where main RhinoCore binary is located
- [GetInstallDirectory](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/getinstalldirectory.md): (static) Directory where all of Rhino is installed
- [GetPlugInObject](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/getpluginobject.md): (2 overloads, static) Gets the object that is returned by PlugIn.GetPlugInObject for a given plug-in. This function attempts to find and load a plug-in with a given Id. When a plug-in is found, it's GetPlugInObject function is called and the result is returned here. Note the plug-in must have already been installed in Rhino or the plug-in manager will not know where to look for a plug-in with a matching id.
- [InFullScreen](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/infullscreen.md): (static) Verifies that Rhino is running in full screen mode.
- [InvokeAndWait](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/invokeandwait.md): (static) Work-In-Progress. Testing this with our unit test framework
- [InvokeOnUiThread](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/invokeonuithread.md): (static) Execute a function on the main UI thread.
- [IsInstallationBeta](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/isinstallationbeta.md): (static) If licenseType is a beta license, returns true. A beta license grants full use of the product during the pre-release development period.
- [IsInstallationCommercial](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/isinstallationcommercial.md): (static) If licenseType is a commercial license, returns true. A commercial license grants full use of the product.
- [IsInstallationEvaluation](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/isinstallationevaluation.md): (static) If licenseType is an evaluation license, returns true. An evaluation license limits the ability of Rhino to save based on either the number of saves or a fixed period of time.
- [LoginToCloudZoo](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/logintocloudzoo.md): (static) Logs in to the cloud zoo.
- [MainWindow](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/mainwindow.md): (static, obsolete) Main Rhino Window
- [MainWindowHandle](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/mainwindowhandle.md): (static) Gets the HWND of the Rhino main window.
- [OutputDebugString](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/outputdebugstring.md): (static) Print a string to the Visual Studio Output window, if a debugger is attached. Note that the developer needs to add a newline manually if the next output should come on a separate line.
- [ParseTextField](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/parsetextfield.md): (2 overloads, static) Parses a text field string.
- [PostCancelEvent](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/postcancelevent.md): (static) Post a cancel event to the command line
- [PostEnterEvent](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/postenterevent.md): (static) Post an enter event to the command line
- [RefreshRhinoLicense](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/refreshrhinolicense.md): (static) Refresh the license used by Rhino. This allows any part of Rhino to ensure that the most current version of the license file on disk is in use.
- [RefreshScreen](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/refreshscreen.md): (static) Request OS to update UI on screen.
- [ReleaseMouseCapture](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/releasemousecapture.md): (static) Releases the mouse capture.
- [RunMenuScript](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/runmenuscript.md): (static) Run a Rhino menu item script. Will add the selected menu string to the MRU command menu.
- [RunningInRdp](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/runninginrdp.md): (static) Find out if Rhino is running in a remote session
- [RunningOnVMWare](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/runningonvmware.md): (static) Verifies that Rhino is running on VMWare
- [RunScript](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/runscript.md): (4 overloads, static) Runs a Rhino command script.
- [SendKeystrokes](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/sendkeystrokes.md): (static) Sends a string of printable characters, including spaces, to Rhino's command line.
- [SetCommandPrompt](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/setcommandprompt.md): (2 overloads, static) Sets the command prompt in Rhino.
- [SetCommandPromptMessage](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/setcommandpromptmessage.md): (static) Set the text that appears in the Rhino command prompt. In general, you should use the SetCommandPrompt functions. In rare cases, like worker thread messages, the message that appears in the prompt has non-standard formatting. In these rare cases, SetCommandPromptMessage can be used to literally specify the text that appears in the command prompt window.
- [SetFocusToMainWindow](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/setfocustomainwindow.md): (2 overloads, static) Sets the focus to the main window. This function attempts to use the ActiveDoc on Mac to figure out which window to set focus to.
- [ValidateRhinoLicense](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/validaterhinolicense.md): (static) Validates a stand-alone Rhino license key for the given Rhino account email against the McNeel validation server, without asking the user for any input. Shows the validation wizard's connection/validation progress steps; problems reported by the server route to the wizard's normal interactive steps. On success the license is locked to this computer (standalone node). Used by the rhinoN://license protocol handler to install a license from a web link.
- [Wait](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/wait.md): (static) Pauses to keep OS message pump alive.
- [Write](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/write.md): (4 overloads, static) Print formatted text in the command window.
- [WriteLine](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/writeline.md): (5 overloads, static) Print a newline in the command window.

## Events

- [AppSettingsChanged](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/appsettingschanged.md): (static) Is raised when settings are changed.
- [Closing](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/closing.md): (static) Is raised when the application is about to close.
- [CommandPromptChanged](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/commandpromptchanged.md): (static) Fired when the command line changes
- [EscapeKeyPressed](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/escapekeypressed.md): (static) Can add or removed delegates that are raised when the escape key is clicked.
- [Idle](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/idle.md): (static) Occurs when the application finishes processing and is about to enter the idle state
- [Initialized](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/initialized.md): (static) Is raised when the application is fully initialized.
- [KeyboardEvent](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/keyboardevent.md): (static) Can add or removed delegates that are raised by a keyboard event.
- [LicenseStateChanged](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/licensestatechanged.md): (static) Fires when the license state has changed
- [MainLoop](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/mainloop.md): (static) Gets called every loop iteration inside Rhino's main message loop.
- [RdkCacheImageChanged](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/rdkcacheimagechanged.md): (static) Monitors when the RDK thumbnail cache images are changed.
- [RdkGlobalSettingsChanged](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/rdkglobalsettingschanged.md): (static) Monitors when RDK global settings are modified.
- [RdkNewDocument](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/rdknewdocument.md): (static) Monitors when RDK document information is rebuilt.
- [RdkPlugInUnloading](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/rdkpluginunloading.md): (static) Monitors when RDK client plug-ins are unloaded.
- [RdkUpdateAllPreviews](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/rdkupdateallpreviews.md): (static) Monitors when RDK thumbnails are updated.
- [RendererChanged](https://developer.rhino3d.com/api/rhinocommon/type/rhino.rhinoapp/rendererchanged.md): (static) Monitors when Rhino's current renderer changes.
