delphi怎样判断sqlservr.exe是否启动
delphi怎样在程序中判断系统中提供的某种服务已经启动?,比如delphi怎样判断sqlserver是否启动...
delphi怎样在程序中判断系统中提供的某种服务已经启动? ,比如delphi怎样判断sql server是否启动
展开
4个回答
展开全部
判断进程~~~~
uses TLHelp32
注意
function FindProcess(AFileName: string): boolean;
var
hSnapshot: THandle;//用于获得进程列表
lppe: TProcessEntry32;//用于查找进程
Found: Boolean;//用于判断进程遍历是否完成
begin
Result :=False;
hSnapshot := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);//获得系统进程列表
lppe.dwSize := SizeOf(TProcessEntry32);//在调用Process32First API之前,需要初始化lppe记录的大小
Found := Process32First(hSnapshot, lppe);//将进程列表的第一个进程信息读入ppe记录中
while Found do
begin
if ((UpperCase(ExtractFileName(lppe.szExeFile))=UpperCase(AFileName)) or (UpperCase(lppe.szExeFile )=UpperCase(AFileName))) then
begin
Result :=True;
end;
Found := Process32Next(hSnapshot, lppe);//将进程列表的下一个进程信息读入lppe记录中
end;
end;
例子 if FindProcess( 'mysqld-nt.exe ') then memo1.Lines.Add( '发现SQL服务! ');
uses TLHelp32
注意
function FindProcess(AFileName: string): boolean;
var
hSnapshot: THandle;//用于获得进程列表
lppe: TProcessEntry32;//用于查找进程
Found: Boolean;//用于判断进程遍历是否完成
begin
Result :=False;
hSnapshot := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);//获得系统进程列表
lppe.dwSize := SizeOf(TProcessEntry32);//在调用Process32First API之前,需要初始化lppe记录的大小
Found := Process32First(hSnapshot, lppe);//将进程列表的第一个进程信息读入ppe记录中
while Found do
begin
if ((UpperCase(ExtractFileName(lppe.szExeFile))=UpperCase(AFileName)) or (UpperCase(lppe.szExeFile )=UpperCase(AFileName))) then
begin
Result :=True;
end;
Found := Process32Next(hSnapshot, lppe);//将进程列表的下一个进程信息读入lppe记录中
end;
end;
例子 if FindProcess( 'mysqld-nt.exe ') then memo1.Lines.Add( '发现SQL服务! ');
展开全部
1、先use TLHelp32, PsAPI,使用其中Process32First的函数和Process32Next遍历所有进程。
2、然后判断是否存在scktsrvr.exe。
3、函数代码:
function checkAppExists(appN: string): Boolean;
var
lppe: TProcessEntry32;
found : boolean;
Hand : THandle;
P:DWORD;
s:string;
begin
result := false;
Hand := CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
found := Process32First(Hand,lppe);
while found do
begin
s := StrPas(lppe.szExeFile);
if lppe.th32ProcessID>0 then
p := lppe.th32ProcessID
else
p := 0;
if (s = appN) then
begin
Result:= True;
Break;
end;
found := Process32Next(Hand,lppe);
end;
end;
4、程序示例,判断sqlservr.exe是否存在:
procedure TForm1.btn1Click(Sender: TObject);
begin
if checkAppExists('sqlservr.exe') then
begin
ShowMessage('sqlservr.exe在运行!');
end
else
begin
ShowMessage('sqlservr.exe没有运行!');
end;
end;
2、然后判断是否存在scktsrvr.exe。
3、函数代码:
function checkAppExists(appN: string): Boolean;
var
lppe: TProcessEntry32;
found : boolean;
Hand : THandle;
P:DWORD;
s:string;
begin
result := false;
Hand := CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
found := Process32First(Hand,lppe);
while found do
begin
s := StrPas(lppe.szExeFile);
if lppe.th32ProcessID>0 then
p := lppe.th32ProcessID
else
p := 0;
if (s = appN) then
begin
Result:= True;
Break;
end;
found := Process32Next(Hand,lppe);
end;
end;
4、程序示例,判断sqlservr.exe是否存在:
procedure TForm1.btn1Click(Sender: TObject);
begin
if checkAppExists('sqlservr.exe') then
begin
ShowMessage('sqlservr.exe在运行!');
end
else
begin
ShowMessage('sqlservr.exe没有运行!');
end;
end;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
添加uses TLHelp32
将判断进程运行写成一个函数比较简洁:
function CheckTask(ExeFileName: string): Boolean;
const
PROCESS_TERMINATE = $0001;
var
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
result := False;
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
while integer(ContinueLoop) <> 0 do begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = UpperCase(ExeFileName))
or (UpperCase(FProcessEntry32.szExeFile) = UpperCase(ExeFileName))) then
result := True;
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
end;
end;
调用方法:CheckTask('sqlservr.exe'),如果返回True则进程正在运行,否则没有运行。
将判断进程运行写成一个函数比较简洁:
function CheckTask(ExeFileName: string): Boolean;
const
PROCESS_TERMINATE = $0001;
var
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
result := False;
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
while integer(ContinueLoop) <> 0 do begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = UpperCase(ExeFileName))
or (UpperCase(FProcessEntry32.szExeFile) = UpperCase(ExeFileName))) then
result := True;
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
end;
end;
调用方法:CheckTask('sqlservr.exe'),如果返回True则进程正在运行,否则没有运行。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
判断进程不是好办法,去检测服务吧.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询