- PR -

VB6でWINDOWSサービスの作成

投稿者投稿内容
ろーちゃん
ベテラン
会議室デビュー日: 2005/05/26
投稿数: 79
投稿日時: 2005-12-02 10:14
WINNDOWS2000サーバーマシンにVB6で作成したPGを
ServiceInstaller(九野氏作成)でサービスとして登録したのですが、
サービスが開始できませんでした。
サービスプログラムとして動かすには、いろいろ条件があるのでしょうか?

(VB6でのサービスプログラムのサンプルソースや
参考サイトなどがあればいいのですが)
お願いします。
Tdnr_Sym
ぬし
会議室デビュー日: 2005/09/13
投稿数: 464
お住まい・勤務地: 明石・神戸
投稿日時: 2005-12-02 13:08
こんにちは。

引用:

ろーちゃんさんの書き込み (2005-12-02 10:14) より:
WINNDOWS2000サーバーマシンにVB6で作成したPGを
ServiceInstaller(九野氏作成)でサービスとして登録したのですが、
サービスが開始できませんでした。



ServiceInstallerって、どんなアプリケーションなんだろと
Vectorからダウンロードして、公開されているソースコードを見てみましたが、
見てみて、「なぁんだ、それだけのこと!?」とガッカリしてしまいました。

もっと気の利いたアプリを想像していたのですが…
たとえば「普通のバッチ系プログラムなんかをサービスとして実行できる」など。

ServiceInstallerの作者の方には、大変申し訳ないんですけれども…
いちいちアプリを公開するほどのものでもない気がします。
Windows APIでSCM(Service Control Manager)経由で、サービスプログラムをインストールするだけのことです。
これだけなら、レジストリの「\\HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services」を
直接いじるだけでも可能でしょう?と思ってしまいました。
#失礼な発言ですね。スイマセン。

なので…
引用:

サービスプログラムとして動かすには、いろいろ条件があるのでしょうか?


"ちゃんとした"Windowsサービスアプリケーションを作成してください。
ServiceInstallerは、ただサービスアプリケーションを登録するためのツールですので。
普通のプログラムをサービスアプリケーションに変身させてはくれません。

引用:

(VB6でのサービスプログラムのサンプルソースや
参考サイトなどがあればいいのですが)


↓この辺のAPIを使えば、VB6でもできなくはないと思いますが
サービス
でも、VB6でスレッド作成できなければ、実質的に無理なんじゃないでしょうか?
#いや本当に無理かどうかはよくは分かりませんが
#C/C++で作るより逆に高度なテクニックが必要になる気がします。

率直なところ
VB.NETを使えば、お手軽にWindowsサービスが出来てしまいますよ。
Tdnr_Sym
ぬし
会議室デビュー日: 2005/09/13
投稿数: 464
お住まい・勤務地: 明石・神戸
投稿日時: 2005-12-02 15:56
こんにちは。

引用:

ろーちゃんさんの書き込み (2005-12-02 10:14) より:

(VB6でのサービスプログラムのサンプルソースや
参考サイトなどがあればいいのですが)



あっ、ネットで探していたらありました。
Auto Service
世界にはVB6でサービスプログラムを作ってしまう"ツワモノ"がいるんですね。
ソースの中身はWindows APIの呼び出しの応酬です。
#なぜそこまでしてVB6に拘ろうとするのか、私には理解できませんが。

いきなり上記のソースを見ても、分かりにくいと思いますのでヒントを…
・Windowsサービスプログラムは、通常、StartServiceCtrlDispatcherを始めに呼び出します。
・Windowsサービスプログラムは、ServiceMainServiceCtrlHandlerを作って登録する必要があります。

サービスに関しては次の書籍が参考になると思います。
Win32 システムサービスプログラミング 改訂版

まるく
大ベテラン
会議室デビュー日: 2004/01/09
投稿数: 181
投稿日時: 2005-12-02 17:13
リソースキット(SRVANY.EXE,INSTSRV.EXE)は使えませんか?
ろーちゃん
ベテラン
会議室デビュー日: 2005/05/26
投稿数: 79
投稿日時: 2005-12-02 18:01
どうもVB6で作るのはめんどくさそうですね。
せめて、右下のタスクバーのところにアイコンが入るようにしたいのですが。
(タスクバーにはプログラムが表示されないで)
これだと、ログインしていればサービスとほぼ同じなので。
todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2005-12-02 18:48
Me.Visible=false
未記入
ぬし
会議室デビュー日: 2004/09/17
投稿数: 667
投稿日時: 2005-12-02 21:41
ふつー、Visual Basic で、Windows サービスを作るときは NTSVC.OCX を使いませんか?
未記入
ぬし
会議室デビュー日: 2004/09/17
投稿数: 667
投稿日時: 2005-12-02 22:55
引用:
Tdnr_Symさんの書き込み (2005-12-02 22:32) より:
あら、そんな便利なOCXがあったんですね。皆さん、ふつーこれを使うんですね。
言い訳ですが、VBには詳しくないもので(~_~;)

でもリンク先の内容を見てみると、このOCXは
・サンプルで
・サポート対象外であり
・VC++ソースコードで提供されていて
・コンパイルされたOCXとしては提供されていない

と読めるんですけれども。どうなんでしょうか?


VB6 で、Platform SDK Service API を使ってもサポートは受けられません。(SCMが別スレッドで stop に入ってくるので。) コンパイル済みバイナリもそこらじゅうに転がっていますね。

無理に Service API を直接使うよりずいぶんと楽ができると思います。

スキルアップ/キャリアアップ(JOB@IT)