Mam's WebSite
Delphiでお手軽プログラミング

トップページ⇒Delphiでサービスアプリケーションを作成する

Delphiでサービスアプリケーションを作成する


Delphiでサービスアプリケーションを作成してみます。作成したアプリはコントロールパネル⇒管理ツール⇒サービスに登録することができます。
サービスに登録すると、WindowsにログオンしなくてもPCの電源をOnにするだけでアプリケーションが動作します。
ただし、ウィンドウ等を表示させることはできません。今回はWEBサーバー(といっても超簡易です)のWindowsサービスを作成してみます。
プログラムも10行程度しか入力しません。

Delphiを起動して新規作成を行う

Delphiを起動し、ファイル→新規作成→その他・・・をクリックします。


左ペインの「Delphi プロジェクト」を選択し、右ペインの「サービスアプリケーション」をクリックし「OK」ボタンをクリックします。


以下の表示が出た場合は「OK」をクリックします。


以下画面になります。


Unit1のタブをクリックします。


ツールパレットからTIdHTTPServerをドラッグ&ドロップします。


プロパティのDefaultPortを8100にします。


とりあえず保存する

ツールバーにある「すべて保存」ボタンを押して、Unit1およびProject1を適当にフォルダを作成して保存します。




そろそろプログラムを記述する

IdHTTPServer1をクリックして選択し、「イベント」タブに切り替えます。
次にOnCommandGetの右側の個所をダブルクリックします。


以下ソースコードを記述します。
procedure TService1.IdHTTPServer1CommandGet(AContext: TIdContext;
  ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
var strm:TStringStream;
    st:string;
begin
  AResponseInfo.ContentType:='text/html; charset=UTF-8';
  st:='<html>'+
    '<head><meta charset="UTF-8"></head>'+
    '<body>リクエストに応答</body>'+
    '</html>';
  strm:=TStringStream.Create(st,TEncoding.UTF8);
  AResponseInfo.ContentStream:=strm;
end;


キーボードの「F12」キーをおして、デザインモードに切り替え、フォームの何もないところ(下図の青い矢印あたり)をクリックし、「イベント」タブに切り替えます。
次にOnExecuteの右側の個所をダブルクリックします。


以下ソースコードを記述して、保存ボタンを押しましょう。プログラムはこれで終了です。
procedure TService1.ServiceExecute(Sender: TService);
begin
  IdHTTPServer1.Active:=True;
  while not Terminated do
  begin
    ServiceThread.ProcessRequests(True);
  end;
  IdHTTPServer1.Active:=False;
end;


コンパイルする

「プロジェクト」→「全てのプロジェクトのビルト」をクリックします。
] 保存先フォルダの、win32のDebugフォルダにコンパイルされたProject1.exeファイルが生成されています。


インストールと実行

Cドライブ直下にtestという名前のフォルダを作成し、コンパイルされたProject1.exeファイルをコピーします。


管理者権限コマンドプロンプトを起動します。(スタート→Windowsシステムツールにあるコマンドプロンプトを右クリックして「その他」→「管理者として実行」)
以下コマンドを入力して、サービスをインストールします。
cd \test
Project1.exe -install





サービスの開始

スタートを右クリック→コントロールパネル→管理ツール→サービスを選択して表示させます。
スクロールして「Service1」という名前を探します。


「Service1」を右クリックして「開始」をクリックします。

ブラウザを起動してテストする。

ブラウザを起動します。
URLに
http://localhost:8100/
と入力してEnterキーを押します。
WEBサーバーがサービスとして動作しているのが確認できました。


Mam's WebSite