temtriss Опубликовано 31 октября, 2017 Поделиться Опубликовано 31 октября, 2017 (изменено) Всем привет, наверно странный вопрос. Понадобилась такая тема как отображение процессов(Помогаю товарищу), да задача элементарная. Что-то типо этого: void GetProcessesList() { DWORD ProccessID = NULL; HANDLE hSnapshot; // Обьявим структуру ProcessEntry и сразу заполним ее размер. PROCESSENTRY32 pe32 = { sizeof(PROCESSENTRY32) }; hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); // Начинаем перебирать с первого процесса!) if (Process32First(hSnapshot, &pe32)) { // Цикл do { // Чуть позже переделаю AddText в функцию с неизвестным кол-вом параметров и буду формировать строки // Через vsprintf уже внутри, а пока е... с буфером // Лишние 3 строки для переделывания AddText это перебор для меня ProccessID = pe32.th32ProcessID; char buff[255]; sprintf(buff, "PID: %d", ProccessID); AddTextToList(hListBox1, buff); AddTextToList(hListBox1, pe32.szExeFile); } // До тех пор пока есть след. процесс while (Process32Next(hSnapshot ,&pe32 )); } AddTextToList(hListBox1, "Finish \n"); CloseHandle(hSnapshot); } Вроде все просто и работает отлично. Но мне нужно отфильтровать процессы, не найти какой-то конкретны(Это слишком легкая задача), а отфильтровать типо системный/пользовательский и отобразить только пользовательские. Или можно, а даже лучший вариант это как в CE 6.7 вкладка Application но это уже не обязательно. Как бы это можно реализовать? Может не правильно гуглил, но гугл инфы не дал Заранее спасибо! Изменено 31 октября, 2017 пользователем temtriss Ссылка на комментарий Поделиться на другие сайты Поделиться
ReWanet Опубликовано 31 октября, 2017 Поделиться Опубликовано 31 октября, 2017 https://msdn.microsoft.com/ru-ru/library/windows/desktop/ms682623(v=vs.85).aspx https://stackoverflow.com/questions/3477097/get-full-running-process-list-visual-chttp://www.cplusplus.com/forum/windows/45564/ Может чем поможет. Ссылка на комментарий Поделиться на другие сайты Поделиться
temtriss Опубликовано 31 октября, 2017 Автор Поделиться Опубликовано 31 октября, 2017 9 минут назад, ReWanet сказал: Может чем поможет. Спасибо, но чуть выше в коде это и реализовано)) А вот как отличить системное приложение и пользовательское вообще не сообразить Ссылка на комментарий Поделиться на другие сайты Поделиться
ReWanet Опубликовано 31 октября, 2017 Поделиться Опубликовано 31 октября, 2017 1 час назад, temtriss сказал: А вот как отличить системное приложение и пользовательское вообще не сообразить https://msdn.microsoft.com/en-us/library/aa446654(VS.85).aspxhttps://msdn.microsoft.com/en-us/library/aa379573(v=vs.85).aspxhttp://www.cyberforum.ru/post2471350.html ( Там по C# но это не меняет сути ) 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
temtriss Опубликовано 2 ноября, 2017 Автор Поделиться Опубликовано 2 ноября, 2017 В 31.10.2017 в 23:17, ReWanet сказал: но это не меняет сути Пока не было времени посмотреть :(( Работа :(( Но завтра последний рабочий день и 3 выходных, обязательно гляну!)) Спасибо и + в репу в любом случае :))) Если ответов больше не будет, то тему можно закрыть в выходные сам разберусь если инфа выше не поможет :)) Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 2 ноября, 2017 Поделиться Опубликовано 2 ноября, 2017 Проще через SID получить имя владельца процесса. LookupAccountSid + GetTokenInformation + OpenProcessToken Открываешь токен для каждого процесса, получаешь SID владельца токена который передаешь в LookupAccountSid и получаешь имя владельца, домен и всякое такое. В 31.10.2017 в 21:33, temtriss сказал: Как бы это можно реализовать? Открой исходники CE и посмотри как там это реализовано, да и перепиши под себя 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
temtriss Опубликовано 6 ноября, 2017 Автор Поделиться Опубликовано 6 ноября, 2017 В 02.11.2017 в 21:53, partoftheworlD сказал: имя владельца процесса. Хех, я не подумал об одном моменте, для получения токена нужен хэндл, а на стадии получения хэндла отсеивается 99% ненужных приложений из списка c ошибкой 0x5(Windows (User-Mode): Access is denied.). В общем решил задачу!) Всем еще раз спасибо за участие, тему можно закрыть!) Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения