Get and Set Windows Values Example (C#)

This example shows how to get and set various DraftSight application and document window values.

//--------------------------------------------------------------
// Preconditions:
//  1. Create a C# Windows console project.
//  2. Copy and paste this project into the C#.
//  3. Add a reference to
//     install_dir\APISDK\tlb\DraftSight.Interop.dsAutomation.dll
//  4. Add references to System and System.Windows.Forms.
//  5. Start DraftSight.
//  6. Open the Immediate window.
//  7. Press F5.
//
// Postconditions: 
// 1. Document window is minimized.
// 2. Examine the Immediate window where
//    the application and document window handle values, 
//    visibility values, window states, and frame and 
//    geometry positions and sizes are printed.
// 3. Interactively maximize the document window in DraftSight.
//----------------------------------------------------------------
 
using System.IO;
using DraftSight.Interop.dsAutomation;
using System.Diagnostics;
using System.Windows.Forms;
using System.Runtime.InteropServices;
 
 
static class Module1
{
 
    static DraftSight.Interop.dsAutomation.Application dsApp;
    static Document dsDoc;
    static DraftSight.Interop.dsAutomation.DSWindow dsAppWindow;
    static DraftSight.Interop.dsAutomation.DSWindow dsDocWindow;
 
    public static void Main()
	{
		//Connect to DraftSight
        		dsApp = (DraftSight.Interop.dsAutomation.Application)Marshal.GetActiveObject("DraftSight.Application");
 
 
		//Abort any command currently running in DraftSight to avoid nested commands
		dsApp.AbortRunningCommand();
 
		//Get application's window handle, visibility, and state
		Debug.Print("Application window using Application object:");
		Debug.Print("  Window handle: " + dsApp.GetHWND());
		Debug.Print("  Visible:       " + dsApp.Visible);
		Debug.Print("  State:         " + dsApp.WindowState);
 
		Debug.Print("");
 
		//Get active document
		dsDoc = dsApp.GetActiveDocument();
		if ((dsDoc != null)) {
			// Get application's window handle, visibility, and state
			Debug.Print("Application window using DSWindow object:");
			dsAppWindow = dsApp.GetMainWindow();
			int windowHandle = 0;
			dsAppWindow.GetHWND(out windowHandle);
			Debug.Print("  Window handle:     " + windowHandle);
			Debug.Print("  Visible            " + dsAppWindow.Visible);
			Debug.Print("  State:             " + dsAppWindow.WindowState);
			int x = 0;
			int y = 0;
			// Get application's frame and geometry positions and sizes
			dsAppWindow.GetFramePosition(out x, out y);
			Debug.Print("  Frame position:    " + x + ", " + y);
			dsAppWindow.GetFrameSize(out x, out y);
			Debug.Print("  Frame size:        " + x + ", " + y);
			dsAppWindow.GetGeometryPosition(out x, out y);
			Debug.Print("  Geometry position: " + x + ", " + y);
			dsAppWindow.GetGeometrySize(out x, out y);
			Debug.Print("  Geometry size:     " + x + ", " + y);
 
			Debug.Print(" ");
 
			// Get document's window handle, visibility, state,
			// frame and geometry positions and sizes
			Debug.Print("Document window using DSWindow object before minimizing window:");
			dsDocWindow = dsDoc.GetWindow();
			dsDocWindow.GetHWND(out windowHandle);
			Debug.Print("  Window handle:     " + windowHandle);
			Debug.Print("  Visible            " + dsDocWindow.Visible);
			Debug.Print("  State:             " + dsDocWindow.WindowState);
			dsDocWindow.GetFramePosition(out x, out y);
			Debug.Print("  Frame position:    " + x + ", " + y);
			dsDocWindow.GetFrameSize(out x, out y);
			Debug.Print("  Frame size:        " + x + ", " + y);
			dsDocWindow.GetGeometryPosition(out x, out y);
			Debug.Print("  Geometry position: " + x + ", " + y);
			dsDocWindow.GetGeometrySize(out x, out y);
			Debug.Print("  Geometry size:     " + x + ", " + y);
 
			//Minimize document window
			dsDocWindow.WindowState = 0;
 
			Debug.Print("");
			// Get document's window handle, visibility, state,
			// frame and geometry positions and sizes after minimizing
			// window
			Debug.Print("Document window using DSWindow object after minimizing the window:");
			dsDocWindow = dsDoc.GetWindow();
			dsDocWindow.GetHWND(out windowHandle);
			Debug.Print("  Window handle:     " + windowHandle);
			Debug.Print("  Visible            " + dsDocWindow.Visible);
			Debug.Print("  State:             " + dsDocWindow.WindowState);
			dsDocWindow.GetFramePosition(out x, out y);
			Debug.Print("  Frame position:    " + x + ", " + y);
			dsDocWindow.GetFrameSize(out x, out y);
			Debug.Print("  Frame size:        " + x + ", " + y);
			dsDocWindow.GetGeometryPosition(out x, out y);
			Debug.Print("  Geometry position: " + x + ", " + y);
			dsDocWindow.GetGeometrySize(out x, out y);
			Debug.Print("  Geometry size:     " + x + ", " + y);
 
		} else {
			MessageBox.Show("There are no open documents in DraftSight.");
		}
 
	}
 
}