0

私はこのプログラムを作成しました:

//Includes....
int main()
{
   ifstream readfile("File.txt");
   string str;
   while(1)
   {
      getline(readfile,str);
      system("cls");
      Sleep(10000);
   }
}

ファイル「File.txt」から10秒ごとに1行を読み取るだけのプログラムです

バックグラウンドで動作させたいのですが、どうすればいいですか?

4

8 に答える 8

3

このサンプルでは、​​コンソールウィンドウを非表示にします。


#include "windows.h"
#include fstream 
#include string
#include stdio.h

using namespace std;


int main()
{
    WCHAR path[260];

    GetModuleFileName(NULL,path,260);

    HWND console = FindWindow(L"ConsoleWindowClass",path);

    if(IsWindow(console))

    ShowWindow(console,SW_HIDE); // hides the window

    //---------------------------------------------------

    ifstream readfile("File.txt");
    string str;
    while(1)
    {
        getline(readfile,str);
        system("cls");
        Sleep(10000);
    }

    //----------------------------------------------------

    if(IsWindow(console))

        ShowWindow(console,SW_SHOW); // shows the window

}
于 2009-01-15T14:35:32.313 に答える
3

これが UNIX の場合、プログラム名の後にアンパサンド "&" を付けて、シェルからプログラムを実行します。

于 2009-01-15T10:51:57.537 に答える
1

プラットフォームに依存。しかし、「cls」コマンドのためにWindowsを使用していると思います。新しいコマンド プロンプトを起動して、正しい .exe ファイルを実行できないのはなぜですか。次に、プログラムを最小化して、実行することになっていることを実行します。起動フェーズ (Linux/Unix の cron など) を自動化したい場合は、組み込みの Windows スケジューラを使用します。

于 2009-01-15T10:18:29.290 に答える
1

コンソール ウィンドウやその他のウィンドウをまったく使用しない (サービス以外の) プログラムが必要な場合は、main() を winmain() に変更します。ただし、コマンドライン引数を取得するのはもう少し複雑です。

于 2009-01-15T16:58:26.767 に答える
0

プログラムを Dos コンソールから起動する場合は、コマンド を使用できますstart \B myprogram.exe。これは、UNIX のアンパサンドとほぼ同等です。ただし、プログラムを実行し続けるには、コンソールを開いたままにしておく必要があります。

もう 1 つの解決策は、アプリケーションを Windows サービスに変換することですが、その場合、アプリケーションを書き直す (またはラップする) 必要があります。

于 2009-01-15T13:39:13.347 に答える
0

ある種の出力をログに記録していて、変更を表示したいためにこれが必要な場合は、変更時にファイルを自動的にリロードする TextPad などのエディターを使用できます。

ただし、これが必要な理由を指定していないため、これは適切ではない場合があります。

于 2009-01-15T13:44:47.517 に答える
0

申し訳ありませんが、あなたが何を意味するのかよくわかりません...私の知る限り(間違っている場合は修正してください)、単純なC(++)プログラムを実行する方法はありませんコンソール ウィンドウ。ただし、リソースをほとんど使用しない方法で「スリープ」させたい場合は、現在の時刻を確認し、最後に読み取りを完了した時刻と比較することで実現できます。

通常、スリープ機能はこれよりも多くのリソースを使用しますが、同様に機能するため、リソースの上限がそれほど重要でない場合は、同様に機能します。

これが役に立ったことを願っています。

于 2009-01-15T10:20:16.680 に答える
-1

適切な方法は、Windows サービスを使用することです。これを行う方法については、Google に十分な情報があります。

于 2009-01-15T23:53:23.047 に答える