public Result Execute(
ExternalCommandData commandData,
ref string message,
ElementSet elements)
{
IntPtr revitHandle = System.Diagnostics.Process
.GetCurrentProcess().MainWindowHandle;
string s = GetWindowTextUsingWinApi(
revitHandle );
// Much simpler direct access:
s = System.Diagnostics.Process.
GetCurrentProcess().MainWindowTitle;
// My system returns:
// "Autodesk Revit 2013 - Not For Resale Version
// - [Floor Plan: Level 1 - rac_empty.rvt]"
bool isDemo = s.Contains( "VIEWER" );
// Language independent serial number check:
string serial_number = UIFrameworkServices
.InfoCenterService.ProductSerialNumber;
isDemo = serial_number.Equals( "000-00000000" );
string sDemo = isDemo ? "Demo" : "Production";
TaskDialog.Show(
"Serial Number and Demo Version Check",
string.Format(
"Serial number: {0} : {1} version.",
serial_number, sDemo ) );
return Result.Succeeded;
}