uses WinSvc;procedure TForm1.Button1Click(Sender: TObject);
var
x, y: SC_HANDLE;
c: PChar;
d: TServiceStatus;
begin
x := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
y := OpenService(a, 'MSSQLServer', SERVICE_ALL_ACCESS);
QueryServiceStatus(y, d);
if d = SERVICE_RUNNING then
ShowMessage('MSSQLServer 正在运行。');
//----------------------------------------------
StartService(b, 0, c); //开启MSSQLServer
ControlService(b, SERVICE_CONTROL_STOP, d); //中断MSSQLServer
end;
var
x, y: SC_HANDLE;
c: PChar;
d: TServiceStatus;
begin
x := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
y := OpenService(a, 'MSSQLServer', SERVICE_ALL_ACCESS);
QueryServiceStatus(y, d);
if d = SERVICE_RUNNING then
ShowMessage('MSSQLServer 正在运行。');
//----------------------------------------------
StartService(b, 0, c); //开启MSSQLServer
ControlService(b, SERVICE_CONTROL_STOP, d); //中断MSSQLServer
end;
应该是 d.dwCurrentState = SERVICE_RUNNING 吧!
Dim l As Long, l1 As Long, sqlRunning As Boolean
sqlRunning = False
l = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)
If l Then
my.dwSize = 1060
If (Process32First(l, my)) Then
Do
If InStr(my.szExeFile, "SQLSERVR.EXE") Then
sqlRunning = True
l1 = CloseHandle(l)
Exit Sub
End If
Loop Until (Process32Next(l, my) < 1)
End If
l1 = CloseHandle(l)
End If
If sqlRunning = False Then
Shell "c:\mssql7\binn\scm.exe -Action 1 -Silent 1", vbHide
MsgBox "还没有启动数据库服务,正在启动...", 0, "提示"
End If
End Sub
TO ckwin(飞龙) 你的代码我正在看。