2009-09-09 83 views
1

我正在使用下面的代碼來阻止完美工作的任務欄。 但是由於我的應用程序在後臺運行,退出應用程序 的唯一方法是通過從任務管理器中殺死.exe。因此,在退出時,被阻止的任務欄保持相同的狀態。但實際上它在退出應用程序時恢復任務欄。使用c處理應用程序出口處的句柄#

我這樣做的原因是,它是一個信息亭應用程序。

克服這一點的方法是什麼。

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); 
    } 
} 

回答

0

如果您唯一的退出方式是殺死它,那麼恐怕您無法將屬性重置爲正常。

可以有一個解決方法。

創建一個服務,通過輪詢監視您的應用程序,當它發現您的應用程序爲「未運行」時,它將TaskBar恢復到正常狀態。

可以有其他類似的解決方法,但我不能想到在你的應用程序內部進行這種限制的方法。

0

對於退出應用程序,我正在註冊一個熱鍵組合並恢復任務欄並以編程方式從任務欄中終止該進程。

0

如果找到,您可以讓應用程序檢查文件的存在(或任何其他可以從外部控制並且應用程序可以訪問的東西):處理&退出。 它很髒,但對於應用程序終止方式的控制要比從任務管理器中刪除更多。

1

和其他人一樣,當你扼殺應用說不。

你的文章有點稀疏,爲什麼你不能優雅地關閉你的應用程序,所以我建議這種方法。

1) 可以按下的熱鍵(http://www.codeproject.com/KB/system/Hotkeys.aspx)可以優雅地關閉應用程序。我個人喜歡這種方法,因爲我在我的許多應用程序中使用熱鍵。

2) 啓動一個獨立的應用程序,它會喚醒每個XXX,並檢查主應用程序是否正在運行,如果未運行,則運行顯示代碼並自行終止。這種方法是非常類似病毒如何經常工作,所以它的嘗試和工作:)

相關問題