[Delphi:90795] サービスアプリケーション

407 views
Skip to first unread message

松本 英俊

unread,
Oct 11, 2008, 9:05:03 PM10/11/08
to Del...@ml.users.gr.jp
松本です
いつもお世話になっています
サービスアプリケーションを作ろうとしています
下記のようにしました

procedure TService1.ServiceCreate(Sender: TObject);
begin
Timer1.Interval:=5*60*1000;//5分
Timer1.Enabled:=True;
end;

procedure TService1.Timer1Timer(Sender: TObject);
var
F:TextFile;
FileName:string;
re:Integer;
begin

re:=ShellExecute(0,
'open',
PChar('c:\windows\Notepad.exe'),
nil,
PChar(ExtractFilePath(Application.Exename)),
SW_SHOWDEFAULT);

FileName:=ChangeFileExt(Application.exename,'.log');
AssignFile(F,FileName);
if FileExists(FileName) then
Append(F)
else
ReWrite(F);

Writeln(F,DateTimeToStr(Now)+'_'+inttostr(re));
CloseFile(F);

end;

これをサービスに登録し、開始すると
Fには期待通りに時刻とShellExecuteの返値(42)が10秒ごとに書き込まれています
が、Notepadが起動しません、
目的は、Logに書き込むことではなく他のアプリケーションを起動することです。
サービスアプリケーションからは、他のアプリケーションを起動出来ないのでしょうか


フォームアプリケーションで実行すると、全て期待通りに動作しています。

環境
Win Xp sp2
BDS2006


戸田 英夫

unread,
Oct 11, 2008, 11:33:50 PM10/11/08
to Del...@ml.users.gr.jp
戸田です

----- Original Message -----
送信者 : "松本 英俊" <hidetoshi...@highway-kansei.co.jp>
宛先 : <Del...@ml.users.gr.jp>
送信日時 : 2008年10月12日 10:05
件名 : [Delphi:90795] サービスアプリケーション


> これをサービスに登録し、開始すると
> Fには期待通りに時刻とShellExecuteの返値(42)が10秒ごとに書き込まれています
> が、Notepadが起動しません、
> 目的は、Logに書き込むことではなく他のアプリケーションを起動することです。
> サービスアプリケーションからは、他のアプリケーションを起動出来ないのでしょうか

1.実行時のアクセス権(アカウント)は?
2.ディスクトップとの対話をサービスに許可しているか?

以上の説明が無いのですが?

---- (^_^)(^_^)(^_^) THE REAL PROGRAMMER (^_^)(^_^)(^_^) ----
At the beach, The Real Programmer is the one drawing flowcharts in the sand.
戸田 英夫 mailto:to...@384.jp;hideo...@chugoku.ntt-neo.co.jp


松本 英俊

unread,
Oct 11, 2008, 11:55:08 PM10/11/08
to Del...@ml.users.gr.jp

> 1.実行時のアクセス権(アカウント)は?

個人のPCなので管理者権限です

> 2.ディスクトップとの対話をサービスに許可しているか?
意味がよくわかりません。
ご教授ください


松本 英俊

unread,
Oct 11, 2008, 11:59:26 PM10/11/08
to Del...@ml.users.gr.jp
松本です
すみません。途中で送信してしまいました。


> 1.実行時のアクセス権(アカウント)は?

個人のPCなので管理者権限です

> 2.ディスクトップとの対話をサービスに許可しているか?
意味がよくわかりません。
ご教授ください

普通に(フォームアプリケーションと同じコードように)書いて、
サービスとして登録すれば良いものと考えていました


Takuo Nakamura

unread,
Oct 12, 2008, 2:01:48 AM10/12/08
to Del...@ml.users.gr.jp
中村@ブレーンです。

サービスから起動されたプロセスは「デスクトップ」が現在ログオンしている
画面とは異なるので「表示」されません。
#タスクマネージャで NotePad.exeが起動されているか
#チェックしてみてください。多分起動していると思います。

サービスから起動されたアプリを「表示」するには以下の解説が参考になると
思います。

「サービスからアプリケーションデスクトップへのアクセス」
http://support.microsoft.com/default.aspx?scid=kb;ja;173687

但し、使い方によっては危険です。
また、Vista では出来なくなったらしいです。

"[Delphi:90795] サービスアプリケーション" において


>これをサービスに登録し、開始すると
>Fには期待通りに時刻とShellExecuteの返値(42)が10秒ごとに書き込まれています
>が、Notepadが起動しません、
>目的は、Logに書き込むことではなく他のアプリケーションを起動することです。
>サービスアプリケーションからは、他のアプリケーションを起動出来ないのでしょうか
>

-------------------------------------------------------------------
中村拓男 東京都日野市
中村の里 http://www.asahi-net.or.jp/~HA3T-NKMR/ 2002/8/15
DGSサポート http://www.asahi-net.or.jp/~HA3T-NKMR/DGS/ 2002/9/26
PGP FP: AF 31 35 65 65 DB C1 8A AF F8 EC 08 CE 49 FF BA

matumoto

unread,
Oct 12, 2008, 9:14:53 PM10/12/08
to Del...@ml.users.gr.jp
松本です
返信が遅れすみません

>
> サービスから起動されたプロセスは「デスクトップ」が現在ログオンしている
> 画面とは異なるので「表示」されません。
> #タスクマネージャで NotePad.exeが起動されているか
> #チェックしてみてください。多分起動していると思います。

確認しました。
ありがとうございました


Reply all
Reply to author
Forward
0 new messages