タイトル通りの質問です。
あんまりそういうソフト見たこと無いので、もしかしたら
出来ないんじゃないかと思ったりもしています。
Console Applicationをタスクトレイに常駐できるのでしょうか?
以上よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (7件)

>ところで裏で常駐するコンソールアプリは、出来ればスタートアップで


>起動させたいのですが、起動後、タスクバーに表示させないように出来るでしょうか?

参考URLにはWindowsNT系では という限定付きで出来るような事が書いてあります。
この場合は、コンソールアプリケーションを制御するアプリケーション経由で
CreateProcess()を使って起動する必要がありますね。

参考URL:http://www.microsoft.com/japan/developer/winds/f …
    • good
    • 0
この回答へのお礼

URL拝見しました。丁度開発環境がNTだったんですよ。(^^
CreateProcess()を使えば画面表示させずに起動できそうですね。
これからCreateProcess()の引数を勉強します(^^;

お礼日時:2001/08/22 18:18

> この先、メンテなどで表示する必要が出てくる場合は


> 表示、非表示の情報をINIファイルから読み込んで
> CreateProcess()の引数を操作しようと思っているのですが、
> いかがなものでしょうか?

それでもいいですけど、アプリケーションのオプションにする
という手もありますよ。

xxx.exe /d
デバッグオプション

みたいなやつです。
    • good
    • 0

>mkiiさん



これってなんか目的のものと違うと思いますけど・・・
これってUNIXでの端末無しでのコマンド実行(標準出力が/dev/nullになる)と同じなのでは?

また、このFAQのだと、バックグラウンドでプロセスは走りますが、ウィンドウをアクティブに出来ません。(ShowWindow()しようにも対象のWindowHandleが無い)

なので
>起動後、タスクバーに表示させないように出来るでしょうか?
はOKですが、その後、そのWindowをActiveに出来ません。

この回答への補足

基本的に表示する必要があるものがないので、何も表示されなくても構わないのです。
この先、メンテなどで表示する必要が出てくる場合は
表示、非表示の情報をINIファイルから読み込んで
CreateProcess()の引数を操作しようと思っているのですが、
いかがなものでしょうか?

補足日時:2001/08/22 18:19
    • good
    • 0

出来なくは無い、と思います


ただ、通常のConsoleApplicationプロジェクトではなく、WindowApplicationで作成し、そのプログラム内でAllocConsole、FreeConsoleしてやる必要があるでしょうが・・・
タスクトレイにアイコンを常駐させるため、CreateWindowしてそのウィンドウを非表示にしておく必要もあるでしょう。(タスクトレイでのイベントはこの非表示ウィンドウのウィンドウプロシージャで受け取り、処理させます)
んー、でもこの方法だとConsoleに来るイベントを取得できないですねぇ
最小化イベント発生時にタスクバーではなく、タスクトレイに引っ込めるような挙動をさせるのであればグローバルフックでメッセージをトラップする必要があるんですが・・・たしか出来なかったような・・・

構造的に無理臭い部分があるのは確かですね
まっとうな方法としてはWin32ベースでConsoleを自作するのが妥当でしょうね
    • good
    • 0

質問されている事とは異なってしまいますが、



コンソールアプリケーションは裏で常駐として、
そのコンソールアプリケーションを制御するアプリケーション(起動・終了等)
をタスクトレイに常駐させる
というのが一般的な作りではないでしょうか。

この回答への補足

このやり方は目から鱗でした。
ところで裏で常駐するコンソールアプリは、出来ればスタートアップで
起動させたいのですが、起動後、タスクバーに表示させないように出来るでしょうか?

補足日時:2001/08/20 14:56
    • good
    • 0

> Console Applicationをタスクトレイに常駐できるのでしょうか?



できないんじゃないかなあ。

タスクトレイにプログラムを登録する API Shell_NotifyIcon() では、
引数の構造体に、タスクトレイのアイコンをクリックしたときのメッセージを
通知するウィンドウのハンドルを指定するようになっている。

ウィンドウを作成する為には、アプリケーションのインスタンスハンドルが
必要だけど、Console Application では、それが手に入らない(Window
アプリケーションであれば WinMain の引数として手に入れられる)。

やったことはないけど、メッセージの通知先ハンドルを NULL にしても
登録できちゃうかもしれない。でも、喩え、登録できたとしても、メッセージの
処理ができないんだったら、タスクトレイにアイコンをただ表示しているだけ
なので、常駐しているプログラムの意味が無いもんね。
    • good
    • 0

やれないことはないのでは?



少し前のApache+ApacheRapperはそんな感じで
動作していましたよ。

要するにコンソールアプリケーションの実行画面を
非表示にするようにタスクトレイに常駐するソフトで
制御してやれば、何とかなるのでは?

ではでは☆
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QコンソールアプリケーションでのWIN32 APIメッセージ処理

コンソールアプリケーションでのWIN32 APIメッセージ処理

VisualStdio.NET 2005のC++で作成しているコンソールアプリケーションで、
PostMessageでメッセージを送信しているのに、PeekMessageで検出できません。
下のプログラムに誤った点があるのでしょうか?

尚、ウィンドウハンドルの確認部分はパスしますが、
PostMessageとPeekMessageの引数hWndをNULLに置き換えるとメッセージの検出はできるので、
やはり、ウィンドウハンドルに問題があるのかもしれません。


#include <windows.h>
#include <stdio.h>

void main( void )
{
  char OldTitle[1024], NewTitle[1024];
  char WindowText[1024], ConsoleTitle[1024];
  HWND hWnd;
  MSG Msg;

  /*** ウィンドウハンドルの取得 ***/

  GetConsoleTitle( OldTitle, 1024 );
  wsprintf( NewTitle, "%d/%d", GetTickCount(), GetCurrentProcessId());
  SetConsoleTitle( NewTitle );
  Sleep(40);
  hWnd = FindWindow( NULL, NewTitle );
  SetConsoleTitle( OldTitle );

  /*** ウィンドウハンドルの確認 ***/

  GetWindowText( hWnd, WindowText, 1024 );
  GetConsoleTitle( ConsoleTitle, 1024 );

  if ( strcmp( WindowText, ConsoleTitle ) != 0 ){
    printf( "ウィンドウハンドルが不正です" );
    return;
  }

  /*** メッセージの送信と検出 ***/

  PostMessage( hWnd, 1050, 0, 0 );
  do{
    while ( PeekMessage( &Msg, hWnd, 0, 0, PM_REMOVE )){
      printf( "メッセージを検出しました" );
      return;
    }
  } while( 1 );
}

コンソールアプリケーションでのWIN32 APIメッセージ処理

VisualStdio.NET 2005のC++で作成しているコンソールアプリケーションで、
PostMessageでメッセージを送信しているのに、PeekMessageで検出できません。
下のプログラムに誤った点があるのでしょうか?

尚、ウィンドウハンドルの確認部分はパスしますが、
PostMessageとPeekMessageの引数hWndをNULLに置き換えるとメッセージの検出はできるので、
やはり、ウィンドウハンドルに問題があるのかもしれません。


#include <windows.h>
#include <stdio.h>
...続きを読む

Aベストアンサー

ANo2のソースは勘違いでした。
FindWindowで0が返っています。
うまく行っていたように見えただけでした。

http://support.microsoft.com/kb/124103/jaの中に

[FindWindowで]取得した HWND の値は、すべてのウィンドウハンドルを使用する処理において、適切なものであるとは保証されていません。

と書いてあります。

これが正しいのではないかと思います。

QWin32 Console Applicationで作った実行ファイルのアイコン変更

前に同じような質問をしましたがMFC AppWizardの変更の仕方ではなくWin32 Console Applicationで作成した実行ファイルのアイコンを変更したいのですがどうしたらいいでしょうか?
プロジェクトごとに違うということを知らなかったので、記述することができませんでした。
どうか教えてください。

Aベストアンサー

1.リソーススクリプト(.rc)をプロジェクトに新規追加
2.リソースにアイコンを追加。

IDは何でもかまいませんが、アイコンを複数作成した場合は一番小さいIDのものがexeのアイコンになります。

#ウィンドウの左上や、タスクバーに表示されるアイコンとは別物です。

QWinコンソール上でMsysのconfigure

現在Windows上でConsole2+nyaosにて操作を行っています。
c++ソースのパッケージを利用したく./configureを使用するためMinGWとMsysをインストールしました。
私はインストールすればConsole2上で./configureを実行できると思っていたのですが、Msys付属のコンソール上でしかできないようです。
コマンドプロンプト上でも実行できませんでした。
一応MinGWとMsysのbinディレクトリにPathは通してあります。
どうにかしてWindowsのコンソール(Msys付属のではない)上で./configureを実行させることはできないでしょうか。
関係あるかは分かりませんが、MinGWの他にBorlandもインストールしてあります。
よろしくお願いします。

Aベストアンサー

コマンドプロンプト上で ./configure と入力して動作しなかった、ということでしょうか?
だとすれば、3つの点から動作しないと思います。

1) ./configure という書き方は,unix系OSで使われる書式です。MSYSは、unix 系で使われているコマンドの一部をWindowsで動かすものなので、これに準じます。
意味は
. : カレントディレクトリ
/ : パスの区切り
confiugre : 実行ファイル名
です。 コマンドプロンプトでのパスの区切りは\なので、同じコマンドをコマンドプロンプトから実行するには
.\configure
となります。

2) 通常、 configureはシェルスクリプトで記述されています。実行するには、シェルを使う必要があります。
ここで、 unix系OSでは、1行目に 「#!コマンド」 と記述して、ファイルに実行属性を付加すると、
コマンド ファイル
と入力したのと同じになる、という機能があります。MSYSも同様です。
そのため
./configure
と実行すると、で#!以下の記述を使って
sh configure
としたのと同様に動作するようになっています。
コマンドプロンプトにはそんな仕組みは無いので、 sh configure と#!を自分で展開する必要があります。

3) sh configure で実行したとしても、 MSYSで動いているshが持っているシステム情報とWindowsのそれとは異る点があります。この違いがconfigureの実行結果に影響を及ぼす可能性があります。

コマンドプロンプト上で ./configure と入力して動作しなかった、ということでしょうか?
だとすれば、3つの点から動作しないと思います。

1) ./configure という書き方は,unix系OSで使われる書式です。MSYSは、unix 系で使われているコマンドの一部をWindowsで動かすものなので、これに準じます。
意味は
. : カレントディレクトリ
/ : パスの区切り
confiugre : 実行ファイル名
です。 コマンドプロンプトでのパスの区切りは\なので、同じコマンドをコマンドプロンプトから実行するには
.\configure
となります...続きを読む

Qアプリ終了時にタスクトレイからアイコンを消すには?

以下を参考にタスクトレイにアイコンを追加するようにしました。

http://www.alpha-net.ne.jp/users2/uk413/vc/VCT_TaskTray.html

しかしながら、プログラムを終了させてもタスクトレイにアイコンが残っており、マウスポインタをアイコンに近づけるとようやくアイコンが消えます。

一般的なアプリのようにプログラム終了時に即アイコンが消えるようにするにはどうすれば良いのですか?

<環境> WIN98 VC++6.0 MFC 

Aベストアンサー

1.呼ばれてない
2.呼ぶタイミングが悪い

では?

呼ばれていないについては、デバッグすればわかるでしょう。
呼ぶタイミングが悪いについては、
CDialog::OnDestroy();
を呼ぶ前にAPIをコールしてみるとか。

Qsyslogをコンソールに出力する方法

syslog.confで出力先を/dev/console(コンソールに出力)に設定したのですが、
logger後、X上のターミナルには何も表示されません。
X上のターミナルはコンソールとは言わないのでしょうか?
上記設定で出力内容を確認するには1~3のrunlevelでないと不可能なのでしょうか?

Aベストアンサー

コンソールは端末の一種ですが、端末はいくつでもつなげられるのに対して、コンソールは(少なくとも論理的には)1つだけです。

xconsole とか xterm -C とかで/dev/consoleに出力される内容をXで表示できます。

Qタスクトレイからのバルーン表示

タスクトレイ(タスクバーの横)にアイコンが並んでいますが、
ここからバルーンを表示する方法を教えてください。

これは、「Windowsアップデートの通知」などで使われているものです。
Windows初回使用時のスタートボタンに対しての「ここから始めます」みたいなものも同様です。

タスクトレイからメッセージボックスを表示すると
そのようになるのかなと思ったのですが、そうではないようです。

バルーンと書きましたが、きちんとした名称も分からず
検索もうまくいきません。

以上、よろしくお願いします。

Aベストアンサー

『猫~』にこんなのがありましたが、これのこと?

「ツールチップのスタイルにTTS_BALLOONを加えるだけ
です。」
だそうです。

そうでなければ、ノッペラボウのウィンドウを作成し
吹き出し型のリ-ジョンを加えて手製で作るしかない
ようです。

参考URL:http://www.kumei.ne.jp/c_lang/sdk4/sdk_307.htm

QCall of Duty:Modern Warfare 2のチート(コンソール)について

今作のPC版CoD:MW2には、コンソールを利用したチートは無いのでしょうか?
Optionを調べてみてもGameConsoleの項目は見当たりませんし、+seta thereisacow 1337をショートカットに加えてみても変化無しでした。
インテルも実績のみですし、何かもの悲しい感じです。。。

Aベストアンサー

 よく知りませんが、先日チートプレイヤーが大規模にbanされたと発表
されました。壁越しに相手が見えるとか、AIMが異常に早いとか、無限弾
とか色々あったらしいです。
 自分はPS3でプレイする者ですが、PS3でも有るらしいですね。実際
キルカメラで見る限り、自分の姿が壁越しに見えているとしか思えない
攻撃をたびたび受けますね。

Qタスクトレイのアイコンが消えてしまう。

こんにちは。
今、タスクトレイに常駐するプログラムを作成しています。
プログラム起動するとすぐ、メインウインドウとタスクトレイにアイコンが
表示されます。
メインウインドウ右上の最小化ボタンまたは、終了ボタンを押すと
メインウインドウが消えてタスクトレイのアイコンだけが残るように
したいと考えています。
最小化ボタンの場合はWM_SIZEをキャッチして、ShowWindow(hwnd, SW_HIDE)
で、メインウインドウだけ消え、タスクトレイのアイコンは残ります。
しかし、終了ボタンの場合は、WM_DESTROY をキャッチし、同じくShowWindow(hwnd, SW_HIDE)
でメインウインドウを消しているのですが、メインウインドウだけでなく、
アイコンも消えてしまいます。アイコンを消さずに残すようにしたいのですが、
どうしたらよいでしょうか。WM_DESTROYでは、PostQuitMessage(0)はポストして
おらず、最後にreturn 0;を返しています。
どうぞよろしくお願いします。

環境 BCC、WindowsXP、C言語、Win32 API

こんにちは。
今、タスクトレイに常駐するプログラムを作成しています。
プログラム起動するとすぐ、メインウインドウとタスクトレイにアイコンが
表示されます。
メインウインドウ右上の最小化ボタンまたは、終了ボタンを押すと
メインウインドウが消えてタスクトレイのアイコンだけが残るように
したいと考えています。
最小化ボタンの場合はWM_SIZEをキャッチして、ShowWindow(hwnd, SW_HIDE)
で、メインウインドウだけ消え、タスクトレイのアイコンは残ります。
しかし、終了ボタンの場合は、WM_DEST...続きを読む

Aベストアンサー

VCユーザーですが、
WM_DESTROYのかわりにWM_CLOSEやWM_SYSCOMMANDに変更するのはBCCならどうですか。

Qシスコルーター コンソール接続方法

こんにちは。

シスコのルータとPCをコンソールポートで接続して初期設定する際、PCがWindowsの場合、ターミナルを開いてポート設定でOKをおすとそのまま接続され、ターミナル画面にルータのプロンプトが出ると思いますが、
Linux(CentOS)でウィンドウがない場合の接続方法を教えてください。
コマンドは #console terminal で接続できるのでしょうか。

よろしくお願い致します。

Aベストアンサー

実際に試した事はありませんが、
$ screen /dev/ttyS0 9600
で接続できないでしょうか。

参考URL:http://blog.livedoor.jp/hakin/archives/51266944.html

QConsole.ReadLine()で、入力デフォルト値を指定できます

Console.ReadLine()で、入力デフォルト値を指定できますか?

C#でプログラムをつくっています。
Console.ReadLine()を使えば、コマンドプロンプト上からのキー入力を文字列として受け取れますが、最初は空の状態です。
例えば、

string s = Console.ReadLine()

を実行し、Enterキーを押すと、sは何も入力されませんが、デフォルト値を指定することで、ユーザーがただEnterキーを押したときに、デフォルト値を返すような方法はありますか?
また、指定したデフォルト値を画面上に表示し、ユーザーが編集できるような方法はありますでしょうか?

どうぞよろしくお願いします。

Aベストアンサー

何だかよさそうなもの見付けましたよ。

説明(英語): http://tirania.org/blog/archive/2008/Aug-26.html
ライブラリ(これを取り込む): http://anonsvn.mono-project.com/source/trunk/mcs/tools/csharp/getline.cs

LineEditorのEdit()メソッドは第1引数がプロンプトで第2引数が初期値のようです。
C#の基本ライブラリのみに依存し、外部プログラムは必要ないそうです。
ライセンスも制限が緩いもののようです。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング