我建了一个服务程序,服务开启后,要执行一个命令,把一个文件夹下的图片打个包,就是用ShellExecute(Application.handle,'open','winrar.exe',PChar('a '+ filename+' '+ apiczip+'\*.jpg'),nil,sw_hide); 
(其中 filename , apiczip都是有效的文件名或路径)
这种方式执行压缩文件的命令,可是,每次服务程序都没执行它。怎么回事呢?求高手解决,不胜感激。

解决方案 »

  1.   

    问题已经解决,在win7环境下可以的,在xp环境下,不行,正在找更深的原因。
      

  2.   

     楼上的 bdmh ,你好。后来我又更深地找了下原因,后来才发现。不是系统是win7还是 xp的原因,而是,正常的服务程序是不能与用户交互的,所以,ShellExecute(Application.handle,'open','winrar.exe',PChar('a '+ filename+' '+ apiczip+'\*.jpg'),nil,sw_hide); 这行代码在正常情况下是不会执行的。解决方法:进服务里面,找到这个服务,然后在“属性”里面,在“登录”中勾上“允许服务与桌面交互”,这样,调用windows外壳的方法就会正常执行,哈哈。。