![]() |
|
|
![]()
|
|
| Mishail |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 3.5.2007 Репутация: нет Всего: нет |
Доброго всем здравия!
Чем больше я пытась познать С++ тем больше удивляюсь. По большей части удивления приятные, но: Задача: получить модули выбранного процесса. Решение (точнее его часть, взято из примеров):
По нажатию Button1 - получаем в ListBox список процессов. По нажатию Button2 - получаем список модулей выбранного процесса. Не знаю есть ли ошибка в коде, но он успешно компилируется и даже работает, но далеко не на всех компьютерах! Единственная закономерность, которую мне пока удалось установить - это то, что программа успешно работает на компьютерах с WinXP SP1. Со вторым же сервис паком ХР ситуация следующая: процессы находятся нормально, а вот модули в них - ну никак Собственно вопрос: неужели версия ОС может так сильно влиять? Или это проблема в компиляторе (VC++ 6.0). Может настройки какие хитрые покрутить? Удивительно, но аналогичная программка написанная на VB (с использованием этих же функций) успешно работает на всех, принимавших участие в тестировании, компьютерах независимо от версии ОС. С надеждой, Михаил |
|||
|
||||
| Greeen |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 710 Регистрация: 13.8.2006 Где: Петербург Репутация: 10 Всего: 18 |
MSDN говорит что перед вызовом Module32First надо у структуры MODULEENTRY32 заполнить поле swSize. Может в этом проблема (хотя вряд ли)
-------------------- Подпись больше не нужна |
|||
|
||||
| Mishail |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 3.5.2007 Репутация: нет Всего: нет |
Не помогло Может всетаки что-то с компилятором (диск столетней давности... мож сервис пак какой поставить?)? У VB проблем же нет... Михаил |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: нет Всего: 121 |
Вот самый простой пример, работает на SP1/SP2 без проблем. -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| Mishail |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 3.5.2007 Репутация: нет Всего: нет |
Спасибо большое!
Но, видимо, проблема всетаки в настройках компилятора. Как всегда - совершенно случайно обнаружилось что Debug-версия программы РАБОТАЕТ!!! Правда на компьютере без VC++ требует библиотеку MFC42D.DLL. Разбираюсь пока Project -> Settings, но пока березультатно Может будут какие соображения? С надеждой, Михаил. |
|||
|
||||
| DigitSphinx |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 28.4.2007 Где: Москва Репутация: нет Всего: 3 |
Если release версия не работает, а debug работает , то может быть из-за не инициализированных переменных
Добавлено через 13 минут и 12 секунд Для того чтобы запустить прогу на компе без VStudio Открой погу программой dependency walker (входит в комплект VS) и посмотри от каких библотек зависит твоя прога , и самое простое решение это таскать эти либы с прогой ! А в конфигурации проекта надо поставить Use Static Library (и для релиза и для дебага) |
|||
|
||||
| Mishail |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 3.5.2007 Репутация: нет Всего: нет |
Заранее прошу прощения если буду задавать глупые вопросы (в C - новичек поэтому некотрые категории и понятия, возможно, неправильно понимаю).
Что под собой подразумевает инициализация переменных? (параллельно ищу ответ на этот вопрос в интернете Просто как-то интересно получается на одном компьютере работает на другом нет... Вцелом же проект создавался следующим образом: MFC AppWizard далее ListBox, 2 кнопки, m_List1. Затем: #include "tlhelp32.h" и код (пример см. 1-ое сообщение). Мысль по поводу "таскания" библиотек была, но - не хотелось бы, не правильно это как-то получается, хотя если это будет единственный выход - то, наверное придется
Не дано такого варианта - только Use MFC in a Shred DLL. Может не там настраиваю? (Project -> Settings General)/ С уважением, Михаил. P/S видимо всетаки проблема в VC. Пошел качать SP5. Это сообщение отредактировал(а) Mishail - 16.6.2007, 19:15 |
|||
|
||||
| DigitSphinx |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 28.4.2007 Где: Москва Репутация: нет Всего: 3 |
Я имел ввиду «Use MFC in a Static Library»
и если твоя прога зависит только от MFC то таскать ничего не надо ! Инициализировать значит давать значение при создании переменной в особенности указатели , если указатель не инициализирован то при работе сним ты получишь ошибку типа “Access violation” и твоя прога завершает работу но это только догадки ! , надо смотреть код на наличие ляпов . Добавлено через 2 минуты и 19 секунд P.S. Раз пошел качать то лучше сразу “КУПИ” VS2005 Это сообщение отредактировал(а) DigitSphinx - 16.6.2007, 19:39 |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |