2012-02-08 9 views
0

私はそれを表示することを選択するまで、C#アプリからタスクバーボタンを表示せずにC#アプリを起動する方法を探しています。lauch c#app from C++ taskbar buttonなし

タスクバーボタンを隠して表示できるクラスがありますが、タスクバーボタンはC#アプリケーションを起動すると非常に短時間で表示されます。

osがタスクバーボタンを作成せずにC#アプリを起動する方法はありますが、後でタスクバーボタンを表示することはできますか?

現在、タスクバーのボタンを非表示にして表示するために使用しているコードです。 ShowInTaskbarWinFormsまたはWPF)プロパティを設定

using System; 
using System.Diagnostics; 
using System.Runtime.InteropServices; 

class Program 
{ 
    static void Main() 
    { 
     var tb = new Taskbar(); 
     tb.DeleteTab(); 
     bool hidden = true; 

     while (true) 
     { 
      Console.WriteLine("Press any key to toggle taskbar button"); 
      Console.ReadKey(); 
      Console.Clear(); 

      if (hidden) 
       tb.AddTab(); 
      else 
       tb.DeleteTab(); 

      hidden = !hidden; 
     } 
    } 
} 

class Taskbar 
{ 
    public void AddTab() 
    { 
     GetTaskbarList().AddTab(GetMainWindowHandle()); 
    } 

    public void DeleteTab() 
    { 
     GetTaskbarList().DeleteTab(GetMainWindowHandle()); 
    } 

    ITaskbarList GetTaskbarList() 
    { 
     var taskbarList = (ITaskbarList)new CoTaskbarList(); 
     taskbarList.HrInit(); 
     return taskbarList; 
    } 

    IntPtr GetMainWindowHandle() 
    { 
     return Process.GetCurrentProcess().MainWindowHandle; 
    } 

    [ComImport] 
    [Guid("56fdf344-fd6d-11d0-958a-006097c9a090")] 
    class CoTaskbarList 
    { 
    } 

    [ComImport, 
    Guid("56fdf342-fd6d-11d0-958a-006097c9a090"), 
    InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] 
    interface ITaskbarList 
    { 
     /// <summary> 
     /// Initializes the taskbar list object. This method must be called before any other ITaskbarList methods can be called. 
     /// </summary> 
     void HrInit(); 

     /// <summary> 
     /// Adds an item to the taskbar. 
     /// </summary> 
     /// <param name="hWnd">A handle to the window to be added to the taskbar.</param> 
     void AddTab([In] IntPtr hWnd); 

     /// <summary> 
     /// Deletes an item from the taskbar. 
     /// </summary> 
     /// <param name="hWnd">A handle to the window to be deleted from the taskbar.</param> 
     void DeleteTab([In] IntPtr hWnd); 

     /// <summary> 
     /// Activates an item on the taskbar. The window is not actually activated; the window's item on the taskbar is merely displayed as active. 
     /// </summary> 
     /// <param name="hWnd">A handle to the window on the taskbar to be displayed as active.</param> 
     void ActivateTab([In] IntPtr hWnd); 

     /// <summary> 
     /// Marks a taskbar item as active but does not visually activate it. 
     /// </summary> 
     /// <param name="hWnd">A handle to the window to be marked as active.</param> 
     void SetActiveAlt([In] IntPtr hWnd); 
    } 
} 

答えて

1

最初にfalseに設定すると、アプリケーションは表示されません。

アプリケーションをタスクバーに表示する場合は、trueに設定します。使用

0

this.ShowInTaskbar = false; 
あなた Formのコンストラクタで

(またはデザイナーでそれを設定し、可能な場合は)何のタスクバーボタンが最初に作成されていないことを確認する必要があります。私はあなたがまだ必要なときに作成できるはずだと思います。