Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
6 / 4 / 3
Регистрация: 25.07.2016
Сообщений: 65

Ctypes при использовании Module32First в python 64 и 32 bit разный результат

31.07.2018, 16:29. Показов 2255. Ответов 2

Студворк — интернет-сервис помощи студентам
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
    TH32CS_SNAPMODULE = 0x00000008
 
    class MODULEENTRY32(Structure):
        _fields_ = [('dwSize', DWORD),
                    ('th32ModuleID', DWORD),
                    ('th32ProcessID', DWORD),
                    ('GlblcntUsage', DWORD),
                    ('ProccntUsage', DWORD),
                    ('modBaseAddr', POINTER(BYTE)),
                    ('modBaseSize', DWORD),
                    ('hModule', HMODULE),
                    ('szModule', c_char * 256),
                    ('szExePath', c_char * 260)]
 
 
     def enumerate_modules(self):
        
        module = self.MODULEENTRY32()
        module_list = []
        snapshot = windll.kernel32.CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, self.pid)
 
        if snapshot == INVALID_HANDLE_VALUE:
           raise ("CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, %d" % self.pid, True)
 
        # we *must* set the size of the structure prior to using it, otherwise Module32First() will fail.
        module.dwSize = sizeof(module)
 
        found_mod = self.Module32First(snapshot, byref(module))
 
        while found_mod:
            module_list.append((module.szModule, module.modBaseAddr))
            found_mod = self.Module32Next(snapshot, byref(module))
 
        self.CloseHandle(snapshot)
        return module_list
Этот код выводит список библиотек и их начальный адрес. При запуске этого кода в интерпритаторе 64 и 32 результат разный. При запуске в 64:
[(b'hl.exe', <ctypes.wintypes.LP_c_byte object at 0x0000000001DBCD48>),
(b'ntdll.dll', <ctypes.wintypes.LP_c_byte object at 0x0000000001DBCDC8>),
(b'wow64.dll', <ctypes.wintypes.LP_c_byte object at 0x0000000001DBCE48>),
(b'wow64win.dll', <ctypes.wintypes.LP_c_byte object at 0x0000000001DBCEC8>),
(b'wow64cpu.dll', <ctypes.wintypes.LP_c_byte object at 0x0000000001DBCF48>),
(b'klhkum.dll', <ctypes.wintypes.LP_c_byte object at 0x0000000002C03048>)]

при запуске в 32 список другой:
[(b'hl.exe', <ctypes.wintypes.LP_c_byte object at 0x01FEE030>),
(b'ntdll.dll', <ctypes.wintypes.LP_c_byte object at 0x01FEE350>),
(b'kernel32.dll', <ctypes.wintypes.LP_c_byte object at 0x01FEE530>),
(b'KERNELBASE.dll', <ctypes.wintypes.LP_c_byte object at 0x01FEE580>)...]

Я как понимаю, выводит библиотеки, которые используются при запуске игры под 64bit. Мне нужно вывести всё.
P/s решение в гугле не нашел.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.07.2018, 16:29
Ответы с готовыми решениями:

Почему разный тип возвращаемых данных при использовании await?
Привет! Есть такой класс: class TaskTests { public Task&lt;int&gt; GetIntAsync(int divider) { return Task.Run&lt;int&gt;(()...

Разный результат при одинаковом вводе
Суть задачи в следующем: нужно заданную квадратную матрицу n-размера умножить на вводимое число k и отдельно начальную матрицу возвести в...

Runas - разный результат при вводе
Итак, имеются две команды: runas /savecred /user:Admin cmd в результате запуска в bat-файле или в командной строке запускается cmd...

2
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
31.07.2018, 17:02
Лучший ответ Сообщение было отмечено LegionSSS как решение

Решение

Вот тут https://docs.microsoft.com/en-... 32snapshot написано, что флаг должен быть такой TH32CS_SNAPMODULE32
1
6 / 4 / 3
Регистрация: 25.07.2016
Сообщений: 65
31.07.2018, 18:03  [ТС]
Python
1
2
3
TH32CS_SNAPMODULE32 = 0x00000010 #.................
#.........
snapshot = windll.kernel32.CreateToolhelp32Snapshot(TH32CS_SNAPMODULE32 | TH32CS_SNAPMODULE, self.pid)
В итоге получилась такая строчка
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
31.07.2018, 18:03
Помогаю со студенческими работами здесь

При одинаковом коде разный результат
Почему при одинаковом коде абсолютно разный результат? мой код: &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;link...

Разный результат при запуске и при компиляции
Есть подключение типа: Provider=Microsoft.Jet.OLEDB.4.0; Data Source=.\*.mdb При запуске программы(Run) выдаёт ошибку подключения, При...

Почему при поиске в HashTable разный результат?
var superHashtable = new SuperHashTable&lt;Person&gt;(100); var person = new Person() { Name = &quot;Евгений&quot;, Age = 17, Gender = 0 }; ...

Разный результат при суммировании элементов массива
double a={0.50,0.51,0.52,0.53,0.54,0.55,0.56};// значеиня х double a2; double a3; double a4; double...

В GCC 4.6.2 32-bit, при использовании STL в 20 - 30 раз увеличивается размер exe
С примерно 20 килобайт до 600 с лишним. При использовании деструктора увеличивается почти на 200Kb. Уже думаю часть кода, где STL и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru