![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как получить список процессов из консольного или не имеющего окна [D5, Win95/98]
anton_cor © (2003-04-22 15:31:00)Доброе время суток.
Мастера, помогите! Собственно сабж.
Пример взят из справки по WinAPI c http://www.soobcha.ru/rushelp
Беда в том, что если код выполняется в консольном приложение или не имеющем окна
(с соответствующими поправками на вывод результата), то не могу получить списк.
С чем это может быть связано?
Привожу сам код:
var
handler:thandle;
data:TProcessEntry32;
function return_name:string; // Вспомоготельная функция получения имени
var
i:byte;
names:string;
begin
names:="";
i:=0;
while data.szExeFile[i] <> "" do
begin
names:=names+data.szExeFile[i];
inc(i);
end;
return_name:=names;
end;
begin //Основная функция перечисления процессов
handler:=CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
if Process32First(handler,data) then
begin
memo1.Items.add(return_name);
while Process32Next(handler,data) do
memo1.Items.add(return_name);
end
else
showmessage("Ошибка получения информации :)");
CloseHandle(handler); //Хендл закрывать обязательно!!
end;
jack128 (2003-04-22 22:56:00) [1]Не знаю как оно могло работать...
Я не знаю точно как инициализируются локал. переменные, но если там мусор, то тебе попал очень удачный мусор ..
anton_cor (2003-04-22 16:46:00) [2]>jack128
Спасибо, помогло! Если еще обяснишь почему это работало раньше, без задания размера структуры, то я буду благодарен еще больше!
На счет ф-ции согласен. Зачем ее в хелп тогда запихнули? :)
jack128 (2003-04-22 15:46:00) [3]aeyrция = функция :-)
jack128 (2003-04-22 15:45:00) [4]
data.dwSize := sizeof(data);
Вот это ты забыл.
aeyrция return_name - лишняя
default (2003-04-22 15:35:00) [5]даа
Memo1 тут прям к месту...