用程序的啓動sql server 服務 |
尚未結案
|
double9999
一般會員 發表:8 回覆:12 積分:4 註冊:2004-12-09 發送簡訊給我 |
|
chris_shieh
高階會員 發表:46 回覆:308 積分:240 註冊:2004-04-26 發送簡訊給我 |
參考 http://delphi.ktop.com.tw/topic.php?topic_id=61405 先確定SQL Server的 Service Name (不是在[服務]控制台外面看到的, 是按下SQL Server->[內容]看到的)
Use ...WinSvc; type TSvcAction = (saQuery, saControl); function QuerySvcState(hSvc: SC_HANDLE): DWORD; var SvcStatus: TServiceStatus; begin if (hSvc > 0) and QueryServiceStatus(hSvc, SvcStatus) then Result := SvcStatus.dwCurrentState else Result := 0 end; function ControlSvcState(svcName: string; svcAct: TSvcAction; bRun: Boolean = False): DWORD; //return CurrentState var hScm, hSvc: SC_HANDLE; SvcStatus: TServiceStatus; lpArgs: PChar; begin lpArgs := nil; Result := 0; try hScm := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS); if hScm > 0 then begin hSvc := OpenService(hScm, PAnsiChar(svcName), SERVICE_ALL_ACCESS); if hSvc > 0 then begin if svcAct = saQuery then Result := QuerySvcState(hSvc) else begin if bRun then begin StartService(hSvc, 0, lpArgs); Result := QuerySvcState(hSvc); end else begin ControlService(hSvc, SERVICE_CONTROL_STOP, SvcStatus); Result := QuerySvcState(hSvc); end; end; end else Showmessage(SysErrorMessage(GetLastError)); end else Showmessage(SysErrorMessage(GetLastError)); finally CloseServiceHandle(hScm); end; end; procedure TForm1.QueryClick(Sender: TObject); var svcAct: TSvcAction; begin svcAct := saQuery; Memo1.Lines.Add(ControlSvcState('ServiceName', svcAct)); end; procedure TForm1.StartClick(Sender: TObject); var svcAct: TSvcAction; begin svcAct := saControl; Memo1.Lines.Add(ControlSvcState('ServiceName', svcAct, True)); end; procedure TForm1.StopClick(Sender: TObject); var svcAct: TSvcAction; begin svcAct := saControl; Memo1.Lines.Add(ControlSvcState('ServiceName', svcAct, False)); end;@瞭解越多.懂得越少@ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |