Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to close the window by its name?

Tags:

c#

winapi

I want to close window with some name (any application, for example, calculator and etc.). How to do it in C#? Import WinAPI functions?

like image 470
Artem Tsarionov Avatar asked Feb 12 '12 11:02

Artem Tsarionov


People also ask

How do I close an existing window?

Press Alt + F4 to close a window.

How do I close a window using JavaScript?

close() method simply close the window or tab opened by the window. open() method. Remember that - You have to define a global JavaScript variable to hold the value returned by window. open() method, which will be used later by the close() method to close that opened window.

How do I close the current window in HTML?

close() The Window. close() method closes the current window, or the window on which it was called. This method can only be called on windows that were opened by a script using the Window.

How do you close window using JavaScript which is opened by the user with a URL?

Simply call window. close() and it will close the current window.


1 Answers

Yes, you should import the Windows API functions: FindWindow(), SendMessage(); and WM_CLOSE constant.

Native definitions of the Windows API functions:

[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

/// <summary>
/// Find window by Caption only. Note you must pass IntPtr.Zero as the first parameter.
/// </summary>
[DllImport("user32.dll", EntryPoint = "FindWindow", SetLastError = true)]
static extern IntPtr FindWindowByCaption(IntPtr ZeroOnly, string lpWindowName);

[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);

const UInt32 WM_CLOSE = 0x0010;

Client code:

IntPtr windowPtr = FindWindowByCaption(IntPtr.Zero, "Untitled - Notepad");
if (windowPtr == IntPtr.Zero)
{
    Console.WriteLine("Window not found");
    return;
}

SendMessage(windowPtr, WM_CLOSE, IntPtr.Zero, IntPtr.Zero);
like image 75
Sergey Vyacheslavovich Brunov Avatar answered Oct 22 '22 16:10

Sergey Vyacheslavovich Brunov