8

重複の可能性:
.NET を使用した Windows システム トレイ アプリケーションの作成

こんにちは、
私は .NET でアプリケーションをプログラミングしていますが、それを Windows インターフェイスにしたくありません。
少し前に ApplicationContext クラスから継承してやったのを覚えていますが、今は達成できません。

どうすればそれができますか?

ありがとう!

編集: 通知アイコンで管理されるアプリケーションです。フォームではなく、システム クロックの近くにアイコンとして表示する必要があります。私はこれをやっています:

class Sync : ApplicationContext
{
    public Sync()
    {
        ...
    }
}

[STAThread]
static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new Sync());
}
4

4 に答える 4

23

(質問を編集してsystrayを記述したため、廃止されました。参照用に残しました)

UI(コンソールでさえも)がなく、サービスなどがないexeが必要な場合は、Windowsフォームアプリを作成しますが、フォームは表示しないでください。WinFormアプリであるという事実は、コンソールウィンドウが表示されないことを意味しますが、作成したもの以外のUIは表示されません。Mainメソッド(通常はProgram.csVSテンプレートにあります)を見て、私が何を意味するかを確認してください。

于 2009-06-18T11:29:34.990 に答える
9

コンソール アプリケーションやサービスなどを作成できます。正確に何をしたいですか?

于 2009-06-18T11:20:45.443 に答える
3

コンソール アプリケーションWindows サービスを使用するのはどうでしょうか。

于 2009-06-18T11:21:10.700 に答える
1

ここを参照してください:http://bluehouse.wordpress.com/2006/01/24/how-to-create-a-notify-icon-in-c-without-a-form/

編集:リンクが停止した場合に備えて、この回答へのリンクにコードを追加しました。このコードの作者にはクレジットが与えられます。

using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.ComponentModel;
using System.Drawing;

class ControlContainer : IContainer
{
    ComponentCollection _components;

    public ControlContainer()
    {
        _components = new ComponentCollection(new IComponent[] { });
    }

    public void Add(IComponent component) { }
    public void Add(IComponent component, string Name) { }
    public void Remove(IComponent component) { }

    public ComponentCollection Components
    {
        get { return _components; }
    }

    public void Dispose()
    {
        _components = null;
    }
}

class MainEntryClass
{
    static void Main(string[] args)
    {
        SomeClass sc = new SomeClass();
        Application.Run();
    }
}

class SomeClass
{
    ControlContainer container = new ControlContainer();
    private System.Windows.Forms.NotifyIcon notifyIcon1;

    public SomeClass()
    {
        this.notifyIcon1 = new NotifyIcon(container);
    }
}
于 2009-06-18T11:37:44.957 に答える