Function InstallCService(CFolder, port)
Dim BatCommand, ReturnValue
BatCommand = CFolder & "\InstallServer\" & port & ".bat"
ReturnValue = Shell("d:\TEMP\notepad.exe", 4)
ReturnValue = Shell(BatCommand, 9)
End Function程序功能如下
首先生成一个BAT文件
然后从ASP中调用组件,由组件执行这个BAT文件很奇怪,ReturnValue能返回值,说明已经执行BAT文件,但是却没有相应的效果
我加了一行ReturnValue = Shell("d:\TEMP\notepad.exe", 4)进行测试
发现在进程中会出现notepad.exe但是看不到记事本,并且出现的进程无法结束请问由DLL引用外部文件该如何写,万分感谢!!!
Dim BatCommand, ReturnValue
BatCommand = CFolder & "\InstallServer\" & port & ".bat"
ReturnValue = Shell("d:\TEMP\notepad.exe", 4)
ReturnValue = Shell(BatCommand, 9)
End Function程序功能如下
首先生成一个BAT文件
然后从ASP中调用组件,由组件执行这个BAT文件很奇怪,ReturnValue能返回值,说明已经执行BAT文件,但是却没有相应的效果
我加了一行ReturnValue = Shell("d:\TEMP\notepad.exe", 4)进行测试
发现在进程中会出现notepad.exe但是看不到记事本,并且出现的进程无法结束请问由DLL引用外部文件该如何写,万分感谢!!!
Function InstallCService(CFolder, port)
Dim BatCommand, ReturnValue
BatCommand = CFolder & "\InstallServer\" & port & ".bat"
ReturnValue = Shell("d:\TEMP\notepad.exe", 4)
ReturnValue = Shell(BatCommand, 9)
End Function中,函数InstallCService要声明为public的
并且,你要给函数一个返回值,如果不需要返回值的话,就声明为过程最后,要看看你的bat文件
可是我们抛开BAT文件不谈
我在d:\TEMP\放了notepad.exe
执行之后,在进程中可以看到notepad.exe
但是无法看到记事本,也无法结束进程。。
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
ReturnValue = ShellExecute(Handle, "open", "d:\bchat\notepad.exe", nil, nil, SW_SHOW)
和用SHELL的效果还是一样的,有进程,没显示
执行BAT文件还是没效果。。哭
i = Shell("C:\WINDOWS\System32\calc.exe", vbNormalFocus)
<%
Set myobj=Server.CreateObject("G.XXXClient")
call myobj.InstallChatService(CFolder,port)
Set myobj=nothing
%>
bat文件代码:
d:\cserver\xserver.exe -install d:\cserver\port\port.ini
DLL文件代码:
Function InstallCService(CFolder, port)
Dim BatCommand, ReturnValue
BatCommand = CFolder & "\InstallServer\" & port & ".bat"
ReturnValue = Shell(BatCommand, 9)
End Function程序完成功能
1 通过组件生成BAT文件installservice.bat
2 通过ASP代码调用DLL组件,由DLL组件执行installservice.bat
3 通过执行installservice.bat驻留系统服务
4 通过WMI启动此系统服务
5 通过WMI修改此系统服务状态为自动运行目前遇到问题就是
第二步 在调用DLL组件执行installservice.bat时,无法正确执行,导致服务无法驻留
第五步 不知道如何通过WMI修改系统服务为自动运行以下是WMI部分代码:
strComputer = "."
Set Services = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set ServiceObject = Services.Get("Win32_Service='xxx_port'")
Response.Write ServiceObject.DisplayName '显示名称
Response.Write ServiceObject.State '当前服务状态
Response.Write ServiceObject.StartMode '启动模式
ServiceObject.StartService
就是通过DLL调用外部文件没解决了,大家再帮帮忙啊,拜托了