バックグラウンドで実行したいC#で小さなプログラムを作成しました。特定のキーの組み合わせが押されたときにのみ表示されます。これどうやってするの?
6 に答える
これを行うには、少なくとも 3 つの方法があります。
従来の Windows サービスアプリケーション。CodeProject の記事「 C# で基本的な Windows サービスを作成する」が役に立ちます。その場合、
System.ServiceProcess
名前空間を使用します。ところで、その場合は、MSDN の「 System.ServiceProcess Namespace 」の記事を読む必要があります。ここからの短い引用は次のとおりです。System.ServiceProcess 名前空間は、Windows サービス アプリケーションの実装、インストール、および制御を可能にするクラスを提供します。サービスは、ユーザー インターフェイスなしで実行される実行時間の長い実行可能ファイルです。
メモリー常駐プログラム。しかし、これは C# ではほとんど不可能です。必要に応じて、この目的のために C++ またはそれ以上の C を使用してください。自分で検索したい場合は、キーワードを使用してください
TSR
。
私の意見では、プログラムを完全に非表示にすることは悪い考えです。ユーザーがプログラムと対話できないためです。SysTray (Windows の時計の横にあるアイコン) に配置することをお勧めします。
trayIcon = new NotifyIcon();
trayIcon.Text = "My application";
trayIcon.Icon = TheIcon
// Add menu to the tray icon and show it.
trayIcon.ContextMenu = trayMenu;
trayIcon.Visible = true;
Visible = false; // Hide form window.
ShowInTaskbar = false; // Remove from taskbar.
キーボードを監視するには、LowLevel Keyboard フック (例を参照) を使用するか、またはホットキーを接続します (例を参照) 。
Windows サービス アプリケーションを作成できます。バックグラウンド プロセスとして実行されます。ユーザー インターフェイスはありません。これは、コンピューターの起動時に自動的に開始することもできます。タスク マネージャーで残りのバックグラウンド プロセスを確認するか、コマンド プロンプトで services.msc と入力することができます。
これは役立つかもしれません。http://msdn.microsoft.com/en-us/library/9k985bc9%28v=vs.80%29.aspx
手っ取り早いソリューション (Visual Studio Express および Standard では Window Service Application テンプレートを使用できないと思います):
新しい Windows フォーム アプリケーションを開始します。ソリューションに新しいクラスを追加し、その中に必要なコードを記述します。
フォーム デザイナーに戻り、WindowState プロパティを Minimized に設定し、Load イベントをフォームに追加します。イベント ハンドラーでフォームを非表示にして、クラスを呼び出します。
private void Form1_Load(object sender, EventArgs e)
{
this.Hide();
MyNewClass mynewclass=new MyNewClass();
}
アプリケーションはタスクバーに表示されず、Alt+Tab を押しても表示されません。マゴルが書いたように、必要に応じてシステムトレイアイコンを追加できます。
NotifyIcon trayIcon = new NotifyIcon();
trayIcon.Icon=new Icon(@"C:\iconfilename.ico");
trayIcon.Visible = true;
本当にバックグラウンドで実行されるプログラムを作成したい場合は、Windows サービスを作成してみてください。新しいプロジェクトを作成するときはそこにあります