# 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.");
    		}

    	}

    }