![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Определить, запущен ли exe, не составляя список процессов. [D6, D7, WinXP]
Shakesbeer © (2007-06-26 11:55:00)Здраствуйте. Делюсь проблемой - как мне узнать, запущен ли конкретный (то есть я знаю путь к файлу) exe? Тут _ http://delphi-faq.zoxt.net/732.htmесть решение этого вопроса. Так же полезные вещи я обнаружил и в "Королевстве Дельфи". Но все они так или иначе составляют список процессов, из которого определяеться нужный. В принципе, этого достаточно, но я уже "загорелся" проблемой - как обойти составление оного списка. Почитал описания ф-ций WinAPI, но скорей всего что-то упустил. Может кто знает решение - пожалуйста хоть намекните :)
Shakesbeer (2007-06-26 15:04:00) [1]Спасибо Rouse_'у, подсказал ещё, что параметр GENERIC_READ меняуться на GENERIC_WRITE. Всё заработало.
Сергей М. (2007-06-26 14:34:00) [2]
> не знаю какая делфя у вас
Ты еще спроси, в какого размера горошка у него рисунок на исподнем)
Shakesbeer (2007-06-26 14:09:00) [3]
> Ну ежели тупо в лоб
:) не получилось.. хэндл возвращаеться вполне положительный. Если есть время попробуйте сами
procedure TForm1.Button1Click(Sender: TObject);
begin
if IsFileRunnig('C:\Program Files\Borland\Delphi6\Bin\delphi32.exe')
then showmessage('da') else showmessage('no');
end;
только не знаю какая делфя у вас...
Сергей М. (2007-06-26 13:21:00) [4]
> Однокамушкин (26.06.07 13:06) [7]
А я и не говорил про поддержку.
Да, поддерживается, но в список попадают не все процессы.
Rouse_ (2007-06-26 13:18:00) [5]
> Dimaxx © (26.06.07 13:09) [9]
> А разве GetModuleHandle не катит? Вернет либо хэндл процесса,
> либо INVALID_HANDLE_VALUE.
Сам пробовал?
Dimaxx (2007-06-26 13:09:00) [6]А разве GetModuleHandle не катит? Вернет либо хэндл процесса, либо INVALID_HANDLE_VALUE.
Однокамушкин (2007-06-26 13:06:00) [7]
> Сергей М. © (26.06.07 12:53) [4]
> Это решение - для Маздая.
> А у тебя - ХР.
> А для ХР следует пользовать PSAPI, хотя и там строятся списки.
Начиная с Win2000 Tool Help поддерживается и в NT-линейке, так что в XP работать будет...
Shakesbeer (2007-06-26 13:06:00) [8]Спасибо. Проверю на обеденном перерыве :)
Rouse_ (2007-06-26 13:02:00) [9]CloseHandle(hFile); еще добавить нужно ;)
Сергей М. (2007-06-26 12:53:00) [10]
> Тут _ http://delphi-faq.zoxt.net/732.htmесть решение этого
> вопроса
Это решение - для Маздая.
А у тебя - ХР.
А для ХР следует пользовать PSAPI, хотя и там строятся списки.
Rouse_ (2007-06-26 12:53:00) [11]Ну ежели тупо в лоб:
function IsFileRunnig(const Path: String): Boolean;
var
hFile: THandle;
begin
Result := False;
hFile := CreateFile(PChar(Path),
GENERIC_READ, 0, nil, OPEN_EXISTING, 0, 0);
if hFile = INVALID_HANDLE_VALUE then
Result := GetLastError = ERROR_SHARING_VIOLATION;
end;
Shakesbeer (2007-06-26 12:07:00) [12]Это я понимаю. Но имееться ввиду то что врят ли будет прятаться - Винамп там, Ася...
Cj (2007-06-26 12:03:00) [13]
> как мне узнать, запущен ли конкретный
а некоторые процессы могут себя и скрывать.
Сергей М. (2007-06-26 11:58:00) [14]
> как обойти составление оного списка
чем он тебе насолил ?)