![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Серис для WinXP [D6, Win2k, WinXP]
TerminalHead © (2005-08-20 22:00:00)Серис для WinXP
Я пытаюсь сделать сервис для WinXP его задача должна заключатся в том чтобы запускатся вместе с ОС и проверять запущена ли определенная программа, и если она не запущена то запускать ее.
Только проблема в том что он все делает правильно за исключением того что программа в процессах висит, но она не работает, нет ни форм, ни других признаков ее работы. Но в процессах программа есть, и если ее завершить, то сервис как и надо запускает снова.
Притом если этот же код используется в обычном приложении то он работает отлично.
Вот код:
----
function EXE_Running(FileName: string; bFullpath: Boolean): Boolean;
var
i: Integer;
MyProcList: TstringList;
begin
MyProcList := TStringList.Create;
try
GetProcessList(MyProcList);
Result := False;
if MyProcList = nil then
Exit;
for i := 0 to MyProcList.Count - 1 do
begin
if not bFullpath then
begin
if CompareText(ExtractFileName(MyProcList.Strings[i]), FileName) = 0
then
Result := True
end
else if CompareText(MyProcList.strings[i], FileName) = 0 then
Result := True;
if Result then
Break;
end;
finally
MyProcList.Free;
end;
end;
procedure TXService.Timer1Timer(Sender: TObject);
begin
if not EXE_Running('C:\WINDOWS\system32\Project1.exe', True) then
begin
StrPcopy(p1, '');
if GetModuleHandle(p1) = 0 then
begin
StrPcopy(p2, 'C:\WINDOWS\system32\Project1.exe');
w1 := WinExec(p2, SW_Restore);
end;
end;
end;
----
TerminalHead (2005-08-20 22:08:00) [1]исходники : http://vova.ws/service3.rar