程序需要求该
结果发现重装了系统
sqlSERVER连接不上了,调试的时候,出现错误!
就是判断语句上,indy组件里面的
请大家给出其他的判断方法,谢谢!
结果发现重装了系统
sqlSERVER连接不上了,调试的时候,出现错误!
就是判断语句上,indy组件里面的
请大家给出其他的判断方法,谢谢!
解决方案 »
- 请教----------如何用FastReport把金额分隔显示到财务的金额上?
- 如何获取一个TComponent控件所在位置的屏幕坐标???
- 获取memo控件第1行内容?
- >>今天结完了今年所有的贴子>>大约2000多分>>再散200分给没有得分的DELPHI朋友>>...
- 如何用QuickRep打印ListView 控件中的列表内容;(急)
- 客户端用dephi作一个应用程序,改写网站虚拟目录中的Access数据库,能实现吗?
- 一个DLL,多个DLL?有关MTS/COM+
- 如何在midas中支持事务?
- 那种"船坞"是怎么做的呢(不好意思呀~只是在某本书上看到这个提法)
- 我自己用DELPHI做了个OICQ炸弹,不过......
- delphi paintBox的问题
- dll调用问题
WinSvc;function GetServiceStatus(const ServiceName: String): Cardinal;
var
FSS: TServiceStatus;
schSCManager, schService: SC_HANDLE;
sclLock: SC_LOCK;
begin
Result := 0;
// Open service control manager database
schSCManager := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
if schSCManager <> 0 then // if
try // try
// Requests ownership of the service control manager database lock.
// Only one process can own the lock at any given time.
sclLock := LockServiceDatabase(schSCManager);
if Assigned(sclLock) then // if
try // try
// Opens an existing service
schService := OpenService(schSCManager, PChar(ServiceName), SERVICE_QUERY_STATUS);
if schService <> 0 then // if
try // try
// Load Library and Get Proc Address
if QueryServiceStatus(schService, FSS) then // if
Result := FSS.dwCurrentState;
finally // wrap up finally
CloseServiceHandle(schService);
end; // end try finally
finally // wrap up finally
UnlockServiceDatabase(sclLock);
end; // end try finally
finally // wrap up finally
CloseServiceHandle(schSCManager);
end; // end try finally
end;
function g_ServerOnRun(serverName: string): boolean;
var
ProcessList : Thandle;
pe : TPROCESSENTRY32;
ProcList : TStringList;
i : integer;
begin
result := false;
ProcList := TStringList.Create;
try
ProcessList := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
pe.dwSize := sizeof(TPROCESSENTRY32);
if process32first(ProcessList,pe) then
begin
ProcList.Add(pe.szexefile);
while process32next(ProcessList,pe) do
ProcList.Add(pe.szexefile);
end;
for i := 0 to ProcList.Count -1 do
begin
if LowerCase(ProcList[i]) = LowerCase(serverName) then
begin
result := true;
break;
end;
end;
finally
ProcList.Free;
end;
end;
方法1需要补充:在服务端需要写一个socket server,处理客户端数据库联接侦测以及检测本地数据库是否已启动。方法2:设置ADOConnection.Connected := true进行判断
这个方法判断存在缺陷,如果是网络或者其他原因导致连接异常,并不能说明服务器数据库未启动。...
begin
ClientSocket1.Address := '127.0.0.1';
ClientSocket1.Port := 1433;
ClientSocket1.Active := True;
end;procedure TForm1.ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
begin
ShowMessage('server is open');
end;procedure TForm1.ClientSocket1Error(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
if ErrorCode=10061 then
begin
ShowMessage('Server does not open ');
ErrorCode := 0;
end;
end;