Форум программистов, компьютерный форум CyberForum.ru

ReadProcessMemory медленно читает значение адреса - C++

Восстановить пароль Регистрация
 
AndreySeVeN
2 / 2 / 1
Регистрация: 06.06.2014
Сообщений: 147
Записей в блоге: 1
05.07.2015, 18:06     ReadProcessMemory медленно читает значение адреса #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
while (true)
    {
        if (isRun) {
            try
            {
                ReadProcessMemory(ProcessHandle, (void*)TimeAddress, &Time, sizeof(osuTime), NULL);
                std::cout << Time << std::endl;
            }
            catch (const std::exception&) {}
        }
        Sleep(sleepTime);
    }
Есть таймер, который обновляется каждую миллисекунду. CheatEngine читает адрес нормально даже в интервале "1 миллисекунда", но вот код на C++ не так быстро читает, выводит (std::cout) каждую миллисекунду, но вот значение переменной Time меняется раз в приблизительно 18 миллисекунд. Вот вывод моей программы в консоли:
27589
27589
27589
27624
27624
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
AndreySeVeN
2 / 2 / 1
Регистрация: 06.06.2014
Сообщений: 147
Записей в блоге: 1
05.07.2015, 18:09  [ТС]     ReadProcessMemory медленно читает значение адреса #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
while (true)
    {
        if (isRun) {
            try
            {
                ReadProcessMemory(ProcessHandle, (void*)TimeAddress, &Time, sizeof(osuTime), NULL);
                std::cout << Time << std::endl;
            }
            catch (const std::exception&) {}
        }
        Sleep(sleepTime);
    }
Есть таймер, который обновляется каждую миллисекунду. CheatEngine читает адрес нормально даже в интервале "1 миллисекунда", но вот код на C++ не так быстро читает, выводит (std::cout) каждую миллисекунду, но вот значение переменной Time меняется раз в приблизительно 18 миллисекунд. Вот вывод моей программы в консоли:
Кликните здесь для просмотра всего текста
27589
27589
27589
27624
27624
27624
27624
27624
27624
27624
27624
27624
27624
27624
27624
27624
27624
27624
27641
27641
27641
27641
27641

Как видно, есть некий интервал, когда значение таймера успевает смениться.
P.S. адрес таймера, который я читаю, обновляется раз в 1 мс 100%. Я делал такую же программу на C# и там все работало, переменная time обновлялась каждую миллисекунду (как в CheatEngine).
как решить проблему со чтением адреса?
Убежденный
Системный программист
 Аватар для Убежденный
14199 / 6214 / 986
Регистрация: 02.05.2013
Сообщений: 10,356
Завершенные тесты: 1
05.07.2015, 21:38     ReadProcessMemory медленно читает значение адреса #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Замените Sleep на что-нибудь другое, например, на какой-нибудь multimedia timer.
У этой функции не такая высокая точность, чтобы выдавать промежутки времени
строго в 1 миллисекунду.
AndreySeVeN
2 / 2 / 1
Регистрация: 06.06.2014
Сообщений: 147
Записей в блоге: 1
05.07.2015, 23:02  [ТС]     ReadProcessMemory медленно читает значение адреса #4
Убежденный, Задержки вывода на консоль нет!!!!! Криво читает адрес.
castaway
Эксперт С++
4846 / 2985 / 368
Регистрация: 10.11.2010
Сообщений: 11,026
Записей в блоге: 10
Завершенные тесты: 1
05.07.2015, 23:07     ReadProcessMemory медленно читает значение адреса #5
Цитата Сообщение от AndreySeVeN Посмотреть сообщение
Убежденный, Задержки вывода на консоль нет!!!!! Криво читает адрес.
Объясни понятным языком что тебе нужно. У тебя в названии темы написано: "ReadProcessMemory медленно читает значение адреса ".
Krasiosoft
 Аватар для Krasiosoft
51 / 51 / 15
Регистрация: 01.06.2015
Сообщений: 189
06.07.2015, 01:13     ReadProcessMemory медленно читает значение адреса #6
Когда-то тоже сталкивался с такой же проблемой. Только у меня sleep делал задержку примерно в 12 мс. Но таймер не помог. С помощью таймера я смог достичь только задержки в 1 мс. Возможно, тут будет корректнее сделать через перехват функции, которая обновляет переменную.

И если не ошибаюсь, то try-catch не нужен для ReadProcessMemory.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.07.2015, 13:30     ReadProcessMemory медленно читает значение адреса
Еще ссылки по теме:

Написать программу которая читает из командной строки два аргумента: имя переменной и значение этой переменой C++
Пирамидальная сортировка работает очень медленно C++
C++ Слишком медленно работает перегруженный оператор

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

Или воспользуйтесь поиском по форуму:
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
06.07.2015, 13:30     ReadProcessMemory медленно читает значение адреса #7
AndreySeVeN, значит в переменную значение заносится раз в 18 мс...
которую вы читаете по данному адресу
Yandex
Объявления
06.07.2015, 13:30     ReadProcessMemory медленно читает значение адреса
Ответ Создать тему
Опции темы

Текущее время: 00:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru