hSCManager = OpenSCManager(vbNullString, vbNullString, SC_MANAGER_ALL_ACCESS)小弟在exe文件中用了一个类,其中的一条语句(关于服务管理器方面的),再执行时hSCManager被正确赋值. 可是小弟用这个类建立了一个 Acitivx dll 文件,在执行时其中的 hSCManager 就变成0了. 这是怎么回事啊? 呜呜~~
dll 中的 Instancing = MultiUse

解决方案 »

  1.   

    不会有这个问题呀,你不会是在win98下调试的吧,OpenSCManager这个函数只在nt下有效看看你调试的代码和dll的代码
      

  2.   

    dll 中的代码
    Private Sub StopService(ServiceName As String)
    '停止服务
    Dim hSCManager As Long
    Dim hService As Long
    Dim cmd As String
    Dim ss As SERVICE_STATUS
    hSCManager = OpenSCManager(vbNullString, vbNullString, SC_MANAGER_ALL_ACCESS)
    hService = OpenService(hSCManager, ServiceName, SERVICE_ALL_ACCESS)'函数向Win32service发送控制码
    '其中参数hService是指向某项服务的句柄,由OpenService函数返回
    '参数dwControl为控制码,常用的有
    '    SERVICE_CONTROL_STOP     //停止服务
    '    SERVICE_CONTROL_PAUSE    //暂停服务
    '    SERVICE_CONTROL_CONTINUE    //唤醒暂停的服务
    '    SERVICE_CONTROL_INTERROGATE//刷新某服务的状态
    '参数lpServiceStatus指向SERVICE_STATUS结构,用于存放该服务最新的状态信息。
    '函数返回值:函数执行成功则返回True,失败则返回False
    ControlService hService, SERVICE_CONTROL_STOP, ss
    CloseServiceHandle hService
    CloseServiceHandle hSCManager
    End Sub
      

  3.   

    哦,不对, private 已经改为 public
      

  4.   

    asp中的代码 d_debug.d_file是上面函数所属的类
    W3SVC 是web服务的名字
    我想通过asp代码控制dll来停止web服务 结果上面的hSCManager返回值是0小弟用vb编了一个程序,引用d_debug.d_file中的StopService方法,结果成功了看来问题出在asp代码上 set d_debug = Server.Createobject("d_debug.d_file") 
     
    call d_debug.StopService("W3SVC")
     
      

  5.   

    但是asp中的问题出在哪里呢? 怎样解决呀,拜托各位大哥