Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2011, 16:43   #1
Deathcore
Новичок
Джуниор
 
Регистрация: 05.04.2011
Сообщений: 1
По умолчанию Информация о созданном процессе процессе

Здравствуйте, задание таково:
Создать программу, порождающую несколько процессов. Получить всю информацию о созданных процессах.
Процессы породил, но вот информацию о них вывести не могу. Получается только о текущем процессе, тобиш о самой, созданной программе.
Помогиет исправить.
Мой код
Цитата:
#include <windows.h>
#include <stdio.h>

main()
{
STARTUPINFO StartupInfo;
PROCESS_INFORMATION ProcessInformation;

StartupInfo.cb=sizeof(STARTUPINFO);
StartupInfo.lpReserved =NULL;
StartupInfo.lpDesktop =NULL;
StartupInfo.lpTitle =NULL;
StartupInfo.dwFlags =STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow =SW_SHOWNORMAL;
StartupInfo.cbReserved2 =0;
StartupInfo.lpReserved2 =NULL;
if(CreateProcess("C:\\Windows\\Syst em32\\NOTEPAD.EXE",
"-o F:\\1.txt", NULL, NULL, FALSE,
0, NULL, NULL,
&StartupInfo,
&ProcessInformation)) //printf("Hello World!\n"); //
{{
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );
if( !CreateProcess( NULL, "c:/windows/system32/calc.exe", NULL, NULL, FALSE,
0, NULL, NULL, &si, &pi))

//получаем идентификатор процесса
DWORD p=GetCurrentProcessId();
//получаем HANDLE процесса (открываем процесс)
HANDLE hCur=OpenProcess(PROCESS_ALL_ACCESS |PROCESS_QUERY_INFORMATION,
true, GetCurrentProcessId());
DWORD i,code,pr,sh,sh1;
int k;
char buf[100];
char *b;
printf("Info about current process\n");
//Текущий каталог
i=GetCurrentDirectory(100,buf);
printf("Current Directory ->%s\n",buf);
//Командная строка
b=GetCommandLine();
printf("Command Line ->%s\n",b);
//Переменніе окружения
b=GetEnvironmentStrings();
printf("Environment Strings->%s\n",b);
//Код статуса завершения
k=GetExitCodeProcess(hCur,&code);
printf("ExitCode Process ->%d\n",code);
//Параметры перезагрузки
k=GetProcessShutdownParameters(&sh, &sh1);
if (k==1)
//{ printf("Shutdown Parameters->%s Flag->%s\n",sh,sh1); } //
//Версия
i=GetProcessVersion(GetCurrentProce ssId());
printf("Pracess Version ->%d\n",i);
getchar();
}}}
Deathcore вне форума Ответить с цитированием
Старый 05.04.2011, 19:54   #2
Napkin
Пользователь
 
Аватар для Napkin
 
Регистрация: 09.12.2009
Сообщений: 25
По умолчанию

А ничего, что вы вот здесь:
Код:
DWORD p=GetCurrentProcessId();
получаете ид текущего процесса (т.е. непосредственно вашей программы, которую вы компилируете)
Попробуйте использовать DWORD GetProcessID(HANDLE process), передавая хэндлы созданных вами процессов.
Удел сильных - уделывать слабых
Napkin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Библиотека и приложение в чужом процессе Johnson Общие вопросы Delphi 12 09.02.2011 17:48
Обновление формы в процессе выполнения процедуры ssvetlanka Компоненты Delphi 5 14.09.2010 00:09
Нити в процессе JustLikeFar Win Api 6 23.08.2009 17:32
Блокировка функции в процессе ее работы Andr180nag JavaScript, Ajax 2 11.08.2008 18:07