
No.5ベストアンサー
- 回答日時:
>ところで裏で常駐するコンソールアプリは、出来ればスタートアップで
>起動させたいのですが、起動後、タスクバーに表示させないように出来るでしょうか?
参考URLにはWindowsNT系では という限定付きで出来るような事が書いてあります。
この場合は、コンソールアプリケーションを制御するアプリケーション経由で
CreateProcess()を使って起動する必要がありますね。
参考URL:http://www.microsoft.com/japan/developer/winds/f …
URL拝見しました。丁度開発環境がNTだったんですよ。(^^
CreateProcess()を使えば画面表示させずに起動できそうですね。
これからCreateProcess()の引数を勉強します(^^;
No.7
- 回答日時:
> この先、メンテなどで表示する必要が出てくる場合は
> 表示、非表示の情報をINIファイルから読み込んで
> CreateProcess()の引数を操作しようと思っているのですが、
> いかがなものでしょうか?
それでもいいですけど、アプリケーションのオプションにする
という手もありますよ。
xxx.exe /d
デバッグオプション
みたいなやつです。

No.6
- 回答日時:
>mkiiさん
これってなんか目的のものと違うと思いますけど・・・
これってUNIXでの端末無しでのコマンド実行(標準出力が/dev/nullになる)と同じなのでは?
また、このFAQのだと、バックグラウンドでプロセスは走りますが、ウィンドウをアクティブに出来ません。(ShowWindow()しようにも対象のWindowHandleが無い)
なので
>起動後、タスクバーに表示させないように出来るでしょうか?
はOKですが、その後、そのWindowをActiveに出来ません。
この回答への補足
基本的に表示する必要があるものがないので、何も表示されなくても構わないのです。
この先、メンテなどで表示する必要が出てくる場合は
表示、非表示の情報をINIファイルから読み込んで
CreateProcess()の引数を操作しようと思っているのですが、
いかがなものでしょうか?

No.4
- 回答日時:
出来なくは無い、と思います
ただ、通常のConsoleApplicationプロジェクトではなく、WindowApplicationで作成し、そのプログラム内でAllocConsole、FreeConsoleしてやる必要があるでしょうが・・・
タスクトレイにアイコンを常駐させるため、CreateWindowしてそのウィンドウを非表示にしておく必要もあるでしょう。(タスクトレイでのイベントはこの非表示ウィンドウのウィンドウプロシージャで受け取り、処理させます)
んー、でもこの方法だとConsoleに来るイベントを取得できないですねぇ
最小化イベント発生時にタスクバーではなく、タスクトレイに引っ込めるような挙動をさせるのであればグローバルフックでメッセージをトラップする必要があるんですが・・・たしか出来なかったような・・・
構造的に無理臭い部分があるのは確かですね
まっとうな方法としてはWin32ベースでConsoleを自作するのが妥当でしょうね
No.2
- 回答日時:
> Console Applicationをタスクトレイに常駐できるのでしょうか?
できないんじゃないかなあ。
タスクトレイにプログラムを登録する API Shell_NotifyIcon() では、
引数の構造体に、タスクトレイのアイコンをクリックしたときのメッセージを
通知するウィンドウのハンドルを指定するようになっている。
ウィンドウを作成する為には、アプリケーションのインスタンスハンドルが
必要だけど、Console Application では、それが手に入らない(Window
アプリケーションであれば WinMain の引数として手に入れられる)。
やったことはないけど、メッセージの通知先ハンドルを NULL にしても
登録できちゃうかもしれない。でも、喩え、登録できたとしても、メッセージの
処理ができないんだったら、タスクトレイにアイコンをただ表示しているだけ
なので、常駐しているプログラムの意味が無いもんね。
No.1
- 回答日時:
やれないことはないのでは?
少し前のApache+ApacheRapperはそんな感じで
動作していましたよ。
要するにコンソールアプリケーションの実行画面を
非表示にするようにタスクトレイに常駐するソフトで
制御してやれば、何とかなるのでは?
ではでは☆
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フレームワーク「4.8.1」で、[S...
-
アプリケーションエラー 0xc00...
-
自分自身を更新するプログラム
-
VBA初心者です。ExcelのVBAで他...
-
VB.NETでMessageBoxを表示した...
-
vb6で異なるのプロジェクト間で...
-
WSH(VBScript)でアプリケーショ...
-
Accessフォームからの外部アプ...
-
VB6の強制終了について
-
VB6.0を使って、デバイス情報を...
-
コンソールアプリケーションの...
-
httpd.pidって何ですか?
-
pccNTmon.exeとntrtscan.exeの違い
-
VBSでのSendKeysでの画面の最小化
-
C#でGUI・CUIの判断する仕方を...
-
Macターミナルで実行中のプログ...
-
バックグラウンドのプロセスの...
-
C# シリアル通信でデータ受信...
-
UDP通信する時に、相手にどうや...
-
UDP通信におけるbind関数について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フレームワーク「4.8.1」で、[S...
-
コンソールアプリケーションの...
-
Vba アプリケーションが立ち上...
-
初回接続の遅い原因について
-
VBSでのSendKeysでの画面の最小化
-
イラストレーターCS4のシリアル...
-
pccNTmon.exeとntrtscan.exeの違い
-
VB.NETでMessageBoxを表示した...
-
VB6の強制終了について
-
OSによるWinExecの動...
-
C#でGUI・CUIの判断する仕方を...
-
vb6で異なるのプロジェクト間で...
-
対象のアプリケーションが終了...
-
WSH(VBScript)でアプリケーショ...
-
VB6での二重起動(複数起動)の制...
-
必須コンポーネントと起動条件...
-
アプリケーションをVBS(WSH?)で...
-
Windowsプログラムのビジー状態...
-
自分自身を更新するプログラム
-
httpd.pidって何ですか?
おすすめ情報