Anuya
Anuya

Reputation: 8350

Dispose the handle on exit of application using c#

I am using the below code to block the taskbar which is working perfectly. But since my application is running in background, the only way to exit the application is by killing the .exe from task manager. So while exiting like this, the blocked task bar remains at the same state. But actually it shud resume the taskbar on exiting the application.

The reason i am doing this is, it is a kiosk application.

what is the way to overcome this.

public class Taskbar
{
    [DllImport("user32.dll")]
    public static extern int FindWindow(string className, string windowText);
    [DllImport("user32.dll")]
    public static extern int ShowWindow(int hwnd, int command);

    public const int SW_HIDE = 0;
    public const int SW_SHOW = 1;

    public int _taskbarHandle;
    protected static int Handle
    {
        get
        {
            return FindWindow("Shell_TrayWnd", "");
        }
    }

    public Taskbar()
    {
        _taskbarHandle = FindWindow("Shell_TrayWnd", "");
    }

    public static void Show()
    {
        ShowWindow(Handle, SW_SHOW);
    }

    public static void Hide()
    {
        ShowWindow(Handle, SW_HIDE);
    }
}

Upvotes: 1

Views: 782

Answers (5)

EKS
EKS

Reputation: 5623

Like the others have said when you killin the application no.

Your post is a bit sparse on why you cannot close your application gracefully, so il suggest this method.

1) Hotkeys ( http://www.codeproject.com/KB/system/Hotkeys.aspx ) that can be pressed that will close down your application gracefully. I personaly like this method, as i use hotkeys in many of my apps.

2) Starting a seperate application that will wake up every XXX and check if the main application is running, if its not running run the Show code and then kill itself. This method is very simular to how viruses often work, so its tried and works :)

Upvotes: 1

Ants
Ants

Reputation: 2668

Why not just use this implementation to run completely fullscreen?

http://www.codeproject.com/KB/cs/FullScreenDotNetApp.aspx

Upvotes: 2

manji
manji

Reputation: 47978

you can make your application check for the existance of a file (or any other thing you can control from outside and the app have access to it), if found: dispose & exit. it's dirty but gives a little bit more control of how your application terminate than killing it from the task manager.

Upvotes: 0

Anuya
Anuya

Reputation: 8350

For exiting the application, i am registering a hot key combination and resuming the task bar and kill the process from taskbar programatically.

Upvotes: 0

Aamir
Aamir

Reputation: 15576

If your only way to exit is by killing it, then I am afraid you can't reset the property back to normal.

There can be a workaround to this.

Create a service which monitors your application through polling and when it finds your application as 'not running', it restores the TaskBar to normal.

There can be other similar workarounds to this but I can't think of a way of doing this from within your application given the limitation.

Upvotes: 0

Related Questions