Welcome to TechNet Blogs Sign in | Join | Help

Cravings of OSD

Cravings of OSD
Hiding Background with OSD - A C# Sample to Hide Window

In this post the basics for finding and hiding a window will be shown in Visual Studio 2008 (C#). As previously mentioned in Snazzy OSD status with BGInfo, hiding the Windows 7 Setup window will be demonstrated.

Creating and Compiling

First, create a simple Console Application under the C# tree.

image

Next, copy and paste the code sample below.

using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;   // Namespace for Import DLL
 
 
namespace HideSetupWindow
{
 
    class Program
    {
 
        static void Main(string[] args)
        {
            // ####################
            // | Find Window
            // ####################
            int hwnd = WinAPI.FindWindow(null, "FirstUXWnd");
            Console.WriteLine("FindWindow API Result: " + hwnd.ToString());
 
            // ####################
            // | Hide Window : 0 = Hide, 1 = Show
            // ####################
            if (hwnd != 0) WinAPI.ShowWindow(hwnd, 0);
 
        }
 
        internal static class WinAPI
        {
            // ----------------------------------------------------------
            // FindWindow : http://msdn.microsoft.com/en-us/library/ms633499.aspx
            // ----------------------------------------------------------
            [DllImport("user32.dll", SetLastError = true)]
            internal static extern int FindWindow(string lpClassName, string lpWindowName);
 
            // ----------------------------------------------------------
            // Show Window : http://msdn.microsoft.com/en-us/library/ms633548.aspx
            // ----------------------------------------------------------
            [DllImport("user32.dll", SetLastError = true)]
            internal static extern int ShowWindow(int hwnd, int nCmdShow);
        }
 
        // ####################
        // NOTE: Any of the following will work...
        // ####################
        // ----------------------------------------------------------------
        //int hwnd = WinAPI.FindWindow("FirstUXWndClass", null);
        //int hwnd = WinAPI.FindWindow("FirstUXWndClass", "FirstUXWnd");
        //int hwnd = WinAPI.FindWindow(null, "FirstUXWnd");
        // ----------------------------------------------------------------
 
    }
}

Finally, compile the application.

 

Tips & Tricks

Use the code sample below to hide an instance of Notepad. Two points worth mentioning:

  1. The Class Name for Notepad windows is “Notepad”; all Notepad windows will share this common class name.
  2. The Text or Window Name for Notepad windows may vary for each window; for example, a new instance of Notepad will usually contain the window text “Untitled – Notepad”

Parameter 1 is the Class Name. Parameter 2 is the Window Name. Searching on either (or both) parameter is possible:

/* Sample 1 */ int hwnd = WinAPI.FindWindow("Notepad", null);
/* Sample 2 */ int hwnd = WinAPI.FindWindow(null, "Untitled - Notepad");
/* Sample 3 */ int hwnd = WinAPI.FindWindow("Notepad", "Untitled - Notepad

In parting, a very accommodating utility for learning and working with this type of window manipulation is Winspector.

Posted: Tuesday, May 12, 2009 8:23 AM by cmse
Filed under:
Leave a Comment

(required) 

(required) 

(optional)

(required) 

  
Enter Code Here: Required

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Page view tracker