6

論理的に関連するいくつかの個別のプロセスがあります(ただし、すべてが個別に開始されます-共通の「親」プロセスはありません)。

それらを Windows タスクバーに 1 つのグループとして表示することはできますか?

作業サンプル

レミーの答えに触発された実用的なコードを次に示します

using System;
using System.Runtime.InteropServices;
using System.Security;

namespace ConsoleApplication1
{
    [SuppressUnmanagedCodeSecurity]
    internal static class SafeNativeMethods
    {
        [DllImport("shell32.dll")]
        public static extern int SetCurrentProcessExplicitAppUserModelID([MarshalAs(UnmanagedType.LPWStr)] string AppID);

        [DllImport("kernel32.dll")]
        public static extern bool AllocConsole();

        [DllImport("kernel32.dll")]
        public static extern bool FreeConsole();
    }

    internal class Program
    {
        public static int SetApplicationUserModelId(string appId)
        {
            // check for Windows 7
            Version version = Environment.OSVersion.Version;
            if ((version.Major > 6) || (version.Major == 6 && version.Minor >= 1))
                return SafeNativeMethods.SetCurrentProcessExplicitAppUserModelID(appId);
            return -1;
        }

        [STAThread]
        public static void Main(string[] args)
        {
            int result = SetApplicationUserModelId("Gardiner.Sample1");

            SafeNativeMethods.AllocConsole();

            // Now we have a console, we can write to it
            Console.Title = "Sample 1";

            Console.WriteLine("Sample 1 {0}", result);
            Console.ReadLine();
            SafeNativeMethods.FreeConsole();
        }
    }
}

これを機能させるには、実行可能ファイルの [出力の種類] を [Windows アプリケーション] に設定し、[スタートアップ オブジェクト] を [ConsoleApplication1.Program] に設定する必要があります (上記のコード サンプルの場合)。

4

1 に答える 1

5

はい。ただし、Windows 7 以降のみです。同じアプリケーション ユーザー モデル IDが割り当てられている場合、複数のプロセスとウィンドウはタスクバー上でグループ化されます。

于 2012-12-18T01:02:41.747 に答える