Hiding other windows in C#

shabbir's Avatar author of Hiding other windows in C#
This is an article on Hiding other windows in C# in C#.
To start with include namespaces

Code: CSharp
using System.Diagnostics;               // For prcesss related information
using System.Runtime.InteropServices;   // For DLL importing
 
Now declare these variables

Code: CSharp
private const int SW_HIDE = 0;
Now declare win32 function ShowWindow

Code: CSharp
[DllImport("User32")]
private static extern int ShowWindow(int hwnd, int nCmdShow);
The above function accepts 2 parameters hWnd is handle of a window whose state we needs to be modified and nCmdShow contains integer value which denotes state. Here are the list of available states
Code:
SW_HIDE             0
SW_SHOWNORMAL       1
SW_NORMAL           1
SW_SHOWMINIMIZED    2
SW_SHOWMAXIMIZED    3
SW_MAXIMIZE         3
SW_SHOWNOACTIVATE   4
SW_SHOW             5
SW_MINIMIZE         6
SW_SHOWMINNOACTIVE  7
SW_SHOWNA           8
SW_RESTORE          9
SW_SHOWDEFAULT      10
SW_FORCEMINIMIZE    11
SW_MAX              11
Now the main problem is how to get handle of a particular window. Its simple

Process[] processRunning = Process.GetProcesses();

This will return array of all the processes. After this you can use foreach loop to iterate through each process in the array.

Code: CSharp
int hWnd;
Process[] processRunning = Process.GetProcesses();
foreach (Process pr in processRunning)
{
    if (pr.ProcessName == "notepad")
    {
        hWnd = pr.MainWindowHandle.ToInt32();
        ShowWindow(hWnd, SW_HIDE);
    }
}
Note Remember that it will just Hide the notepad process and not kill it. You need to be killing all the notepad.exe's running in the background through task manager. If you even wish to kill the process use
Code: CSharp
pr.Kill();
inside the if block.
Newbie Member
22Nov2006,18:20   #2
cselvaraju's Avatar
Works just great
Newbie Member
4Apr2007,11:41   #3
eye_v_eye's Avatar
Okie, I have success hide the application into the process list. Any idea how to bring it back from the process list. In another word restore/show back the application.

I have used the SW_RESTORE, it doesn't work.
Newbie Member
3Jun2009,14:47   #4
booyeeka's Avatar
Hi,

I have two errors related to this:
1. The name 'ShowWindow' does not exist in the current context
2. The name 'SW_HIDE' does not exist in the current context

Can you help me how to solve this, and what I did wrong?

Thank you in advance!
Newbie Member
13Nov2009,08:21   #5
Imrul Kayser's Avatar
I want able/ Disable local area connections (may be dial up or broadband) using C#
How can I do that?

I will be grateful if anyone help me
Newbie Member
27Nov2009,12:45   #6
oasisfleeting's Avatar
What about never letting another applications window pop up?
I have a magic jack and when a call is being made, (outgoing or incoming) the interface window pops up and interrupts my video games or movies. I want to permanently force this window to be hidden.
Skilled contributor
27Nov2009,13:24   #7
sameer_havakajoka's Avatar
can we have a downloadable source code plz, if possible
Go4Expert Founder
27Nov2009,13:50   #8
shabbir's Avatar
Quote:
Originally Posted by sameer_havakajoka View Post
can we have a downloadable source code plz, if possible
Its just one API Call and so I did not had it.
Skilled contributor
27Nov2009,15:15   #9
sameer_havakajoka's Avatar
k f9, bt it ll be much useful for extreme beginners