Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.221.165.246] |
|
Сообщ.
#1
,
|
|
|
Как определить, устанавлена ли InterBase на Windows?
|
Сообщ.
#2
,
|
|
|
можно узнать запущен ли он:
Procedure CreateWin9xProcessList(List:TStringList); Var hSnapShot:THandle; ProcInfo:TProcessEntry32; Begin If List=Nil Then Exit; hSnapShot:=CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0); If (hSnapShot <> THandle(-1)) Then begin ProcInfo.dwSize := SizeOf(ProcInfo); if (Process32First(hSnapshot, ProcInfo)) then begin List.Add(ProcInfo.szExeFile); while (Process32Next(hSnapShot, ProcInfo)) do List.Add(ProcInfo.szExeFile); end; CloseHandle(hSnapShot); end; end; procedure CreateWinNTProcessList(List: TstringList); var PIDArray: array [0..1023] of DWORD; cb: DWORD; I: Integer; ProcCount: Integer; hMod: HMODULE; hProcess: THandle; ModuleName: array [0..300] of Char; begin if List = nil then Exit; EnumProcesses(@PIDArray, SizeOf(PIDArray), cb); ProcCount := cb div SizeOf(DWORD); for I := 0 to ProcCount - 1 do begin hProcess := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ,False,PIDArray[I]); if (hProcess <> 0) then begin EnumProcessModules(hProcess, @hMod, SizeOf(hMod), cb); GetModuleFilenameEx(hProcess, hMod, ModuleName, SizeOf(ModuleName)); List.Add(ModuleName); CloseHandle(hProcess) end end end; procedure GetProcessList(var List: TStringList); var ovi: TOSVersionInfo; begin if List = nil then Exit; ovi.dwOSVersionInfoSize := SizeOf(TOSVersionInfo); GetVersionEx(ovi); case ovi.dwPlatformId of VER_PLATFORM_WIN32_WINDOWS: CreateWin9xProcessList(List); VER_PLATFORM_WIN32_NT: CreateWinNTProcessList(List); end end; Function EXE_Running(FileName:String;FullPath:Boolean=False):Boolean; var I:Integer; MyProcList:TStringList; begin MyProcList:=TStringList.Create; Try GetProcessList(MyProcList); Result:=False; If MyProcList<>Nil Then For I:=0 To Pred(MyProcList.Count) Do Begin If Not FullPath Then Result:=CompareText(ExtractFileName(MyProcList.Strings[i]),FileName)=0 Else Result:=CompareText(MyProcList.Strings[i],FileName)=0; If Result then Break; End Finally MyProcList.Free; End; End; // (с) процедур чьи-то... не помню... :'( // 1) Запущен ли сервер? If Not EXE_Running('ibserver.exe') Then ExitProgram('Внимение!'#13#10'Сервер InterBase не работает!'#13#10'Работа программы прерывается'); |
Сообщ.
#3
,
|
|
|
Как я понял, здесь поиск в taskliste конкретного процесса..
|