Может кто знает, какую литературку можно почитать, чтобы понять, как добраться до информации, кот.мне нужна,а именно что-то типа таблицы процессов, в которой указаны все запущенные процессы, и инфа о них. короче как если бы вы нажали Alt+Ctrl+Delete и перешли на вкладку процессы????????????????????????????????????????????????
20 декабря 2007 в 22:04
Ясно, спасибо
20 декабря 2007 в 12:03
Насчет списка запущенных процессов – есть несколько способов, общее API верхнего уровня для них (для современных ОС семейства Windows) – уже упомянутый здесь toolhelp (CreateToolhelp32Snapshot, Process32First и Process32Next).
Насчет приоритетов – хорошо описывает Дж. Рихтер.
Диапазон значений приоритета любого потока – от 1 до 31. Однако Win API скрывает эти конкретные значения, предлагая использовать абстракции класса приоритета процесса (process priority class – Set(Get)PriorityClass) и уровня приоритета каждого из его потоков (thread priority level – Set(Get)ThreadPriority). Возможные значения представлены в виде набора констант (от IDLE_PRIORITY_CLASS до REALTIME_PRIORITY_CLASS для класса приоритета процесса и от THREAD_PRIORITY_IDLE до THREAD_PRIORITY_TIME_CRITICAL для уровня приоритета потока). Фактическое значение приоритета потока (от 1 до 31) вычисляется на базе этих двух параметров.
Т.о. разработчик должен оперировать предоставляемым набором констант, а не конкретными значениями. Фактический алгоритм расчета приоритета потока может различаться для разных версий Windows – от разрабочика это скрыто, и это его не должно волновать.
В итоге, короче, не сможешь ты в SetPriorityClass передать другие значения Юзай комбинацию функций SetPriorityClass и SetThreadPriority.
20 декабря 2007 в 0:02
Ау!!!
16 декабря 2007 в 22:04
Базовый приоритет представляет собой число от 0 до 32 вроде как. Функция, изменяющая приоритет:
SetPriorityClass(hProcess:Cardinal; dwPriorityClass:Cardinal);
Первый параметр хэндл процесса, второй – одна из следующих констант:(NORMAL_PRIORITY_CLASS = $00000020;
IDLE_PRIORITY_CLASS = $00000040;
HIGH_PRIORITY_CLASS = $00000080;
REALTIME_PRIORITY_CLASS = $00000100;
$00008000
$00004000) ;;;;;;;;;
они возводят приоритет лишь в конкретные 6 значений (8, 4, 13, 24, 6, 10 соответственно) . Вопрос: А МОЖНО ЛИ СДЕЛАТЬ ТАК, ЧТОБ И ДРУГИЕ ЗНАЧЕНИЯ МОЖНО БЫЛО ПРИСВОИТЬ ПРИОРИТЕТУ???
11 ноября 2007 в 14:01
и вообще имхо системное программирование лучше изучать на Unix системах. Там сделано красивее и мозги не засоряются.Базовые принципы будут понятны – а если надо проф. работать под виндой – мсдн в руки
4 ноября 2007 в 3:01
Правильно сказал Руслан.
Если речь о Windows – то, что тебе надо хорошо описано в книге "Windows для профессионалов: создание эффективных Win32-приложений с учётом специфики 64-разрядной версии Windows"/пер. с английского, Джефри Рихтер, 4-е издание СПб "Питер" 2003, 752с.
На доступном языке автор раскрывает недокументрованные (и документированные) возможности.
Вообще-то, прав Олег Андреев, говоря, что здесь не собираются программисты
2 ноября 2007 в 18:05
Нет – просто флуд развели )
2 ноября 2007 в 14:03
О господи, неужели все так запущено… :-О
30 октября 2007 в 22:00
Бывает необходимость, например чтобы выловить руткит или вирус, они обманывают API. Но вряд ли это относится к текущему обсуждению, просто не удержался.
30 октября 2007 в 20:05
Да и зачем лезть в дебри системы, когда есть удобные инструменты в API
30 октября 2007 в 20:02
В идеале, в операционной системе один процесс (программа) не должен видеть данные другого процесса и влиять на другой процесс.
Все пользовательские процессы работают на третьем кольце защишенного режима. Смотреть всю память в винде можно только с нулевого кольца, т.е. из ядра. В ядро можно попасть либо через дыру в системе, либо будучи драйвером реального или виртуального устройства. Или смотри через API (то что разрешит система или дрова в системе).
30 октября 2007 в 19:01
Господа, а что, тут нет места для ассемблера? винда что не позволит посмотреть оперативу? обязательно использовать WinAPI?
30 октября 2007 в 9:03
Процессы представляют из себя связанный список. Самый простой способ получения CreateToolhelp32Snapshot, Process32First и Process32Next. Информация есть в любом справочнике по WinAPI.
Если нужна книга по устройству винды, то могу посоветовать Джеффри РИХТЕР "Создание эффективных WIN32-приложений
с учетом специфики 64-разрядной версии Windows"
Что касается Криса Касперски – его литература направлена на дизассемблирование, отладку и взлом программ на ассемблере.
30 октября 2007 в 8:01
Я бы посоветовал читать МСДН
Пять минут чтения и узнаём о том что WMI спасёт отца русской демократии.
Объект – Win32_Process. Пятнадцать минут кодинга – и на экране вся инфа о всех процессах системы.
Код бы выложил, да тут места мало чтобы двести строк кода вставить.
P.S. Достаточно было всего одного знака вопроса
UPD: порезал каменты, запостил код на Nopaste: //rafb.net/p/LAq2lS89.html
Использование:
1. Компилируем как консольную аппликуху (в 2005й студии компилится влёт, вроде ничего дополнительно прописывать не надо)
2. Запускаем из командной строки: имя_проги WQL_запрос поле1 поле2 …
3. Пример: WMIRequest.exe "SELECT * FROM Win32_Process" Caption ThreadCount WorkingSetSize
30 октября 2007 в 7:04
Я ща читаю системное программирование в среде Windows,джонсон м. харт
30 октября 2007 в 1:02
Надо читать книги (авторов сразу не вспомню) типа "Win32 и системное программирование", можно попробовать Касперски "Отладка приложения без исходного кода" и т.п. Если кто-нибудь прокомментит, то с удовольствием выслушаю другое мнение.