Форум: "WinAPI";
Текущий архив: 2008.01.27;
Скачать: [xml.tar.bz2];
ВнизОпределить, запущен ли exe, не составляя список процессов. Найти похожие ветки
← →
Shakesbeer © (2007-06-26 11:55) [0]Здраствуйте. Делюсь проблемой - как мне узнать, запущен ли конкретный (то есть я знаю путь к файлу) exe? Тут _http://delphi-faq.zoxt.net/732.htm есть решение этого вопроса. Так же полезные вещи я обнаружил и в "Королевстве Дельфи". Но все они так или иначе составляют список процессов, из которого определяеться нужный. В принципе, этого достаточно, но я уже "загорелся" проблемой - как обойти составление оного списка. Почитал описания ф-ций WinAPI, но скорей всего что-то упустил. Может кто знает решение - пожалуйста хоть намекните :)
← →
Сергей М. © (2007-06-26 11:58) [1]
> как обойти составление оного списка
чем он тебе насолил ?)
← →
Cj © (2007-06-26 12:03) [2]
> как мне узнать, запущен ли конкретный
а некоторые процессы могут себя и скрывать.
← →
Shakesbeer © (2007-06-26 12:07) [3]Это я понимаю. Но имееться ввиду то что врят ли будет прятаться - Винамп там, Ася...
← →
Сергей М. © (2007-06-26 12:53) [4]
> Тут _http://delphi-faq.zoxt.net/732.htm есть решение этого
> вопроса
Это решение - для Маздая.
А у тебя - ХР.
А для ХР следует пользовать PSAPI, хотя и там строятся списки.
← →
Rouse_ © (2007-06-26 12:53) [5]Ну ежели тупо в лоб:
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;
← →
Rouse_ © (2007-06-26 13:02) [6]CloseHandle(hFile); еще добавить нужно ;)
← →
Однокамушкин (2007-06-26 13:06) [7]
> Сергей М. © (26.06.07 12:53) [4]
> Это решение - для Маздая.
> А у тебя - ХР.
> А для ХР следует пользовать PSAPI, хотя и там строятся списки.
Начиная с Win2000 Tool Help поддерживается и в NT-линейке, так что в XP работать будет...
← →
Shakesbeer © (2007-06-26 13:06) [8]Спасибо. Проверю на обеденном перерыве :)
← →
Dimaxx © (2007-06-26 13:09) [9]А разве GetModuleHandle не катит? Вернет либо хэндл процесса, либо INVALID_HANDLE_VALUE.
← →
Rouse_ © (2007-06-26 13:18) [10]
> Dimaxx © (26.06.07 13:09) [9]
> А разве GetModuleHandle не катит? Вернет либо хэндл процесса,
> либо INVALID_HANDLE_VALUE.
Сам пробовал?
← →
Сергей М. © (2007-06-26 13:21) [11]
> Однокамушкин (26.06.07 13:06) [7]
А я и не говорил про поддержку.
Да, поддерживается, но в список попадают не все процессы.
← →
Shakesbeer © (2007-06-26 14:09) [12]
> Ну ежели тупо в лоб
:) не получилось.. хэндл возвращаеться вполне положительный. Если есть время попробуйте сами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 14:34) [13]
> не знаю какая делфя у вас
Ты еще спроси, в какого размера горошка у него рисунок на исподнем)
← →
Shakesbeer © (2007-06-26 15:04) [14]Спасибо Rouse_"у, подсказал ещё, что параметр GENERIC_READ меняуться на GENERIC_WRITE. Всё заработало.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2008.01.27;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.014 c