• ベストアンサー

バックグラウンドで実行されるプログラムを作るには?

バックグラウンドで実行されるプログラムを作るにはどうすればよいのですか? あと自分自身へのリンクを自動で作成するにはどうすればいいのですか? win xp borland c++です。

質問者が選んだベストアンサー

  • ベストアンサー
  • xcrOSgS2wY
  • ベストアンサー率50% (1006/1985)
回答No.1

特別なことは何もする必要はありません。どんなふうにプログラムを作っても、そのプログラムを実行すれば他のプログラムに対してバックグラウンドで実行されます。 リンクの作成にはIShellLinkインターフェースを使用します。使用方法は参考URLをご覧ください。また「IShellLink」で検索すると使用例がたくさん出てきます。 http://msdn.microsoft.com/library/en-us/shellcc/platform/shell/reference/ifaces/ishelllink/ishelllink.asp

参考URL:
http://msdn.microsoft.com/library/en-us/shellcc/platform/shell/reference/ifaces/ishelllink/ishelllink.asp

その他の回答 (3)

回答No.4

Borland C++のことは知らないですが、VisualStudioならATLを使えば30分もあれば、一丁前のサービスプログラムが作れますよ。要するにCOMなんですが、Borlandならどうするのかな・・・。

参考URL:
http://program.station.ez-net.jp/special/vc/atl/service_vc6.asp
  • jagd-doga
  • ベストアンサー率31% (14/45)
回答No.3

#1の方もおっしゃられていますが「バックグラウンドで実行されるプログラム」を作るのでしたら、とくに何も考える必要はありません。 ただ単に、出来たプログラム(アプリ)をバックグラウンドで動かせばよいわけですから。 質問を 「あるプログラムを実行すると、そいつが別プログラムをバックグラウンドで起動して、何かをするためには・・・」 と(勝手に)拡大解釈するならば、 子プロセスを生成する fork() というシステムコールがあったように思います。 使い方までは詳しくわからないですけど。

  • buihyaku
  • ベストアンサー率29% (97/326)
回答No.2

バックグラウンドで実行される、というのがサービスのことをさしているのだとすると、自分で作るのは結構大変だったとおもいます。 私も昔1回しか作ったことがないのでうろ覚えですが、 すべてのサービスはサービスコントロールマネージャ(SCM)と呼ばれるシステムにより管理されますので、おつくりになったプログラムもこのSCMに対して登録してあげる必要があります。 サービスで動作するプログラムは通常のmain/WinMainのほかにSCMからサービスとして呼び出されたときに実行されるServiceMain関数を持ちます。 また、SCMから呼び出される一時停止、停止、再開などの操作をハンドルするHandler関数を備えなければなりません。 詳しくはWin32SDKヘルプを参照ください。 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/service_control_manager.asp また、自分で全部作らなくてもsc.exeで通常のプログラムをサービスとして動作させることもできるようです。 詳しくは以下を参照ください。

参考URL:
http://support.microsoft.com/default.aspx?scid=kb;ja;251192

関連するQ&A

  • C++のプログラムをバックグラウンドで実行

    C++のプログラムをバックグラウンドで実行する方法はないでしょうか? 具体的には http://www.atmarkit.co.jp/fdotnet/dotnettips/436bgworker/bgworker.html のページにあるようなプログラムをC++で作成したいのです。 よろしくお願いします。

  • バックグラウンドで実行されているプログラムの追究がしたい

    WIN98、FMV-ME・・・を使用しています。最近、何故かバックグラウンドで何かが実行されています。作業中に重くなってしまったり、タスクトレイの全てのプログラム(ウィルスチェック、タスク、IME等全て)を終了させてもハードディスクはさかんに動いています。 そのため(だと思う)、スタンバイ状態から勝手に起動されてしまうし、Cドライブのデフラグも10%に満たないうちに0%から再試行されてしまうということが何度も繰り返される、といった有様です。先日オンラインでウィルスチェックをしてみたのですが、ウィルスは発見されませんでした。 最近になってしたことといえば、Office2000からXPにアップグレードしたことくらいですが、それと何か関係が? バックグラウンドで何が実行されているのか、追究をする方法はありませんか?うっとうしくてたまらないので、すぐに実行を中止させたいのです!! よろしくお願いいたします。

  • ソフトやプログラムをバックグラウンドで実行することはできないでしょうか

    ソフトやプログラムをバックグラウンドで実行することはできないでしょうか? とあるソフト、たとえば動画の変換ソフトを実行中に、そのソフトをタスクバーに表示させず、さらに画面にも表示させないということはできるでしょうか? そのソフトにはそういう機能はないので、他のソフトとか設定とかでできないかなと思っています。

  • MATLABで外部プログラムをバックグラウンド実行

    MATLABで外部プログラムを実行したいと考えています。 具体的に申し上げると、ファイル起動時にデータを吸い上げcsvとして出力するマExcelファイルを起動させ、csvが出力されたらMATLABで読み込み、処理を行うというものです。   そこで、!を使えば、外部プログラムが立ち上がるので、 例えば、 ! C:\work\test.xlsx とすると、test.xlsxを立ち上げることが出来ますが、test.xlsxを閉じないとMATLABのほうに戻ってきません。   そこで、末尾に & を付けて ! C:\work\test.xlsx & とすると、目的は達成できたのですが、 黒い窓(コマンドブロンプト)が出てきて、見た目が悪いので、 この黒い窓を出さずに、外部プログラムをバックグラウンドで実行する方法は無いでしょうか?

  • プログラムの実行時間

    Cで書いたのプログラムの時間を測りたいのですが、 何か良い方法はありますか?? 調べたところclock関数というのがあるそうですが「処理系の最良の近似で返す」ってどうなんだろうと思って聞いてみました。 何が必要か良くわからないのですが、Windouws XPでコンパイラはBorland C++を使っています。

  • Borland C++ Builderで簡単なC言語プログラムの作成・実行

    Borland C++ Builderで簡単なCのプログラムを作り実行させるにはどうしたらよいですか? DOS窓上でコンパイルするのではなく、Borland C++ Builderのメニューから行いたいのです。 一応、「ファイル→新規作成→その他→Cファイル」でCのファイルは作成できるのですが、このファイルを「プロジェクト→ユニットのコンパイル」でコンパイルすることができません。 Formオブジェクト(?)を作成しておくとコンパイルできます。 Formは特に必要ないので、FormなしでCのファイルだけをコンパイルしたいのです。 DOS窓でのコンパイル・実行はできます。 事情があってBorland C++ Builderを使わなくてはなりませんので、他のIDEはこの際全く解決になりません。 よろしくお願いします。

  • Borland C++を利用しているのですが、簡単なプログラムが実行できません。

    Borland C++を利用しているのですが、簡単なプログラムが実行できません。 以下のようなプログラムをコンパイルして実行しようとしたのですが... #include <stdio.h> void main(void) { int i,j,k; i=1; j=2; k=i+j; printf( "k=%d,k); } Borland C++は、初めて使うのですが、C言語の勉強には使えないのでしょうか? もし使えるなら、どのようにすればよいのでしょうか?

  • プログラムを実行すると文字化けする。

    Windws98の頃に、VisualBasicで作成したプログラムを、Windows XP Professionalの、コマンドプロンプトで実行すると問題なく実行するのですが、Windows Server 2008 Standardの、コマンドプロンプトで実行すると、コマンドプロンプトの画面で漢字が文字化けしてしまいます。例えば、そのプログラムを、C:\プログラムというフォルダにおいて実行すると、コマンドプロンプトの表示が、C:\??????????>という表示なります。フォルダ名を漢字にしないと、文字化けはするのですが、プログラムは実行されます。何か設定で解決することは出来るのでしょうか。それとも、プログラムを作成し直した方が良いのでしょうか。

  • あるプログラム実行中に別のプログラムを起動したい

    とあるC言語で出来たa.outというプログラム実行中に、b.outというプログラムを実行するプログラム「c.c」を作成したいのですが、どのようにプログラミングすればよいでしょうか? a.outは無限ループするような十分に実行時間の長いプログラムです。 ちなみに、c.cはシェルスクリプト「c.sh」でも構いません。

  • バックグラウンドからフォアグラウンドへの切り替え

    LinuxでのC言語プログラムについての質問です。 バックグラウンドにてイベントを監視 ↓ イベントが発生したら別のプログラムにて処理を行う ↓ その後監視に戻る というプログラムを作っているのですが、 ”別のプログラムにて処理を行う”ところをフォアグラウンドにて 行いたいと思っています。 ・バックグラウンドで実行中にフォアグラウンドに切り替える。 ・バックグラウンドで実行中のプログラムから、別のプログラムを  フォアグラウンドにて実行する。 このどちらかを行うことはできないでしょうか? よろしくお願い致します。

専門家に質問してみよう