服务程序里不能调用ShellExcute吗?

eagleldj 2002-06-30 11:12:04
服务程序里不能调用ShellExcute吗?
...全文
40 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyhold 2002-07-01
  • 打赏
  • 举报
回复
第一:你上面的str得到是一个目录路径, 所以不行

第二,如果你直接用文件名,注意一不能有空格!

试试祝你好运!!!!!!
eagleldj 2002-07-01
  • 打赏
  • 举报
回复
uses shellapi这一句有写。
我的代码:

str := ExtractFileDir(Paramstr(0))+'\temp.exe';
while true do
begin
HandleTemp:=FindWindow(nil,'text');
if HandleTemp=0 then
ShellExecute(handle,'open',
pchar(str),'', nil, SW_SHOWNORMAL);
//str我用‘c:\temp\temp.exe'也没用
sleep(5000);
Windows.beep(200,200);
end;
beep这一句有执行。就是shellExcute没反应。
eagleldj 2002-07-01
  • 打赏
  • 举报
回复
uses shellapi这一句已经有了。
以下是我的代码:

procedure TService1.ServiceExecute(Sender: TService);
var
HandleTemp:THandle;
begin
while true do
begin
HandleTemp:=FindWindow(nil,'text');

if HandleTemp=0 then
ShellExecute(0,'open', 'test.exe','', nil,SW_SHOWNORMAL); {}
sleep(5000);
Windows.beep(200,200);
end;
end;
naughtyboy 2002-07-01
  • 打赏
  • 举报
回复
uses shellapi
yansea 2002-07-01
  • 打赏
  • 举报
回复
不会吧,你看看调用是否有问题。
eagleldj 2002-07-01
  • 打赏
  • 举报
回复
不是错误,而是没反应。
我让服务程序运行先运行ShellExcute,然后运行Beep,
运行结果有蜂咛声,但是ShellExcute语句没反应。
eagleldj 2002-07-01
  • 打赏
  • 举报
回复
to hzb(Explorer) :Thanks!
就是没指定TService的Interactive为true。

现在问题解决了。给分。
yuleibo 2002-07-01
  • 打赏
  • 举报
回复
主要问题,你打开的文件路径不对。

你在C:下面新建一个TXT文件,直接用这个地址来打开试试。呵。一定可以打开的。

www.softdiy.com 我和朋友办的,有时间过来交流一下。
hzb 2002-07-01
  • 打赏
  • 举报
回复
你的服务程序可以和桌面交互吗?在程序里,指定TService的Interactive为true,或者,在2000的服务管理里面,在“登录”页上把“允许服务与桌面交互”打勾。我的服务程序可以运行shellExecute.另外,要获取服务程序的路径好像不能用ExtractFileDir,那样得到的是系统路径.试试下面的函数:
FUNCTION GetCurrentDirEx(): ansistring;
VAR
ModuleFileName : ARRAY[0..MAX_PATH] OF Char;
BEGIN
GetModuleFileName(HInstance, @ModuleFileName[0], MAX_PATH);
//取得当前文件名
result := IncludeTrailingBackslash(ExtractFilePath (ModuleFileName)) ;
END;

haohaisen 2002-06-30
  • 打赏
  • 举报
回复
应该每问题;
luoyangq 2002-06-30
  • 打赏
  • 举报
回复
在use里加上shellapi,然后就可以在程序里调用了,比如:
shellexecute(handle,nil,pchar('C:\WINDOWS\SOL.EXE'),nil,nil,sw_shownormal);
调用扑克游戏
iamtalent 2002-06-30
  • 打赏
  • 举报
回复
只要引用shellapi单元就ok了。
耙子 2002-06-30
  • 打赏
  • 举报
回复
什么错误?
饱含了Windows和shellapi了吗?
yang6130 2002-06-30
  • 打赏
  • 举报
回复
可以
njbudong 2002-06-30
  • 打赏
  • 举报
回复
什么服务程序里?
netlib 2002-06-30
  • 打赏
  • 举报
回复
uses shellapi;
应该可以。

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧