Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на Delphi

Выпуск № 060
от 12.08.2002, 01:10

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 121
Отправлено ответов: 168
Активность: 138.8 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе]


 Список экспертов, ответы которых опубликованы в данном выпуске

Pablo
Статус: Опытный
Общий рейтинг: 129.47
URL: Моя страничка
[Подробней >>]
baldr
Статус: Профессиональный
Общий рейтинг: 117.68
URL: Сайт об ОС DOS. Всем, кто любит эту ОС!
[Подробней >>]
Артём Шегеда
Статус: Профессиональный
Общий рейтинг: 120.25
URL: Пристанище неодинокого программиста
[Подробней >>]
 
Sanya
Статус: Опытный
Общий рейтинг: 134.26
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 116. Не знаете ли как зделать трейнер на Delphi?. То есть в игре есть числовое значение (например здоровь... (ответов: 2)
Вопрос № 117. Здравствуйте! У меня такой вопрос: Программа на Delphi должна отредактировать файл boot.ini. Подскаж... (ответов: 2)
Вопрос № 118. Здарова эксперты! У меня тут глюк какойто пытаюсь запустить браузер по оперделенному аддресу, ну ти... (ответов: 3)

Вопросов: 3, ответов: 7


 Вопрос № 116

Не знаете ли как зделать трейнер на Delphi?. То есть в игре есть числовое значение (например здоровье). Его нужно найти и исправить. Только напишите поподробней, plz.
Заранее благодарен.
pcgamer@mail.ru



Вопрос отправлен: 07.08.2002, 10:30
Отправитель: PC Gamer (pcgamer@mail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Pablo

Здравствуйте, PC Gamer!
Есть два способа:
1. Покопаться в созранном файле и исправить там все что нужно.
2. Влезть в пространство адресов игрушки и там уже исправлять что нужно.
Первый способ более простой, а для второго ттебе нужно разбираться в организацией памяти и ее менеждмента и защиты в виндах!))) Есть там конечно в WinAPI такие функции, будем надеяться что тут такие знатоки есть!))))

Ответ отправлен: 07.08.2002, 19:36
Отправитель: Pablo


Отвечает baldr

Доброе время суток, PC Gamer!
А ты знаешь как вообще такие вещи исправляются? Немного теории:
Во время игры она "замораживается" и в памяти ищется какое-либо число. Например, у игрока
3 жизни. Ищется во всей (или не во всей, а только в некоторой области) памяти все числа 3.
Их позиции запоминаются. В игре специально создается ситуация когда число жизней уменьшается
(увеличивается) - например, сознательно убивают персонаж. Далее по всем запомненным ранее
адресам смотрится - какие из них стали равны текущему количеству жизней. Если их несколько, то
опять убивают персонаж. И так до тех пор, пока не будем точно знать - по какому адресу содержится
число жизней. Тогда это число изменяют на, скажем, 99 - И играют дальше... Примерно так.
А написать свой довольно сложно по причине труностей с тем, что многие игры перехватывают
довольно много ресурсов.


Ответ отправлен: 09.08.2002, 01:32
Отправитель: baldr


 Вопрос № 117

Здравствуйте!
У меня такой вопрос:
Программа на Delphi должна отредактировать файл boot.ini.
Подскажите, пожалуйта функцию WinAPI, при помощи которой можно из буквы диска получить номер винчестера, раздела и т.д.
Заранее спасибо!



Вопрос отправлен: 09.08.2002, 00:20
Отправитель: Slava (slava-9@yandex.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Pablo

Здравствуй, Slava!
Ниже описаны апишные функции для работы с логическими дисками :
GetLogicalDrives - получение числа логических дисков
GetLogicalDriveStrings - получение букв логических дисковы
GetDriveType - получние типа диска исходя из буквы
GetDiskFreeSpace - получние сободного места диска исходя из буквы
GetVolumeInformation - получение системной информации исходя из буквы диска
Следующая функция предоставляет относительно низкий доступ к диску.
DeviceIoControl - прямое управление дисковым устрйоством определенным идентификатором
Чтобы получить идентификатор устройства нужно использовать следующую функцию:
hDevice = CreateFile("\\.\C:", 0, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);


Ответ отправлен: 09.08.2002, 22:19
Отправитель: Pablo


Отвечает Артём Шегеда

Приветствую Вас, Slava!

Насколько я понял, этот файл принадлежит WindowsNT, а значит, Ваша задача немного упрощается. Смотрите документацию по функции DeviceIoControl, в частности, параметр dwIoControlCode=IOCTL_DISK_GET_DRIVE_LAYOUT и dwIoControlCode=IOCTL_DISK_GET_PARTITION_INFO. Эта фукция полноценно работает только в WindowsNT (хотя возможно её использование под Win95).
А вообще, не мешало бы заглянуть на Microsoft MSDN и поискать то, что Вам нужно.
А отмазки, что интернет дохлый и денег много на него надо - не катят, поскольку такой URL пройдёт на ура: попробуй - понравится (глядишь, подсядешь как на наркоту)

Ответ отправлен: 09.08.2002, 12:58
Отправитель: Артём Шегеда


 Вопрос № 118

Здарова эксперты!
У меня тут глюк какойто
пытаюсь запустить браузер по оперделенному аддресу, ну типа
ShellExecute(0,'open','http://www.rusfaq.ru',nil,nil,SW_SHOW);
В итоге немного пошебуршит винт, и нифига не открывается :<
Поможите, кто чем могет,.. сами мы не местные.. и все такое...



Вопрос отправлен: 09.08.2002, 01:03
Отправитель: Mr. J

[Следующий вопрос >>] [Список вопросов]

Отвечает Pablo

Приветствую тебя, Mr. J!
Попробуй использовать функцию CreateProcess например так:
STARTUPINFO si;
PROCESS_INFORMATION pi;
memset(&si,0,sizeof(STARTUPINFO));
si.cb = sizeof(si);
BOOL f = CreateProcess(NULL,"filename.exe",NULL,NULL,FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi);

Ответ отправлен: 09.08.2002, 22:20
Отправитель: Pablo


Отвечает Артём Шегеда

Приветствую Вас, Mr. J!

Если из командной строки удастся выполнить такое (с видимым результатом):

start http://www.rusfaq.ru

то попробуй написать в програиие так:

ShellExecute(0,nil,'http://www.rusfaq.ru',nil,'.',SW_SHOWDEFAULT);

иначе - ищи в реестре: у тебя неадекватно реагирует система на HTTP URL

Ответ отправлен: 09.08.2002, 12:22
Отправитель: Артём Шегеда


Отвечает Sanya

Приветствую Вас, Mr. J!
Попробуй так: ShellExecute (Handle,'open','http://www.rusfaq.ru',nil,nil,SW_SHOW)
и посмотри что функция возвращает, в случае успешного выполнения возвращается значение больше 32!
Удачи!

Ответ отправлен: 09.08.2002, 02:51
Отправитель: Sanya



Форма отправки вопроса

Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

© 2002 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (39)
C / C++ (27)
Perl (13)
Delphi (18)
Pascal (31)
Basic / VBA (11)
Java / JavaScript (12)
PHP (10)
MySQL / MSSQL (10)
Пользователю
Windows 95/98/Me (47)
Windows NT/2000/XP (31)
"Железо" (36)
Поиск информации (18)
Администратору
Windows NT/2000/XP (17)
Linux / Unix (11)
Юристу
Гражданское право (5)
Семейное право (3)
Трудовое право (4)
КоАП (2)

Отправить вопрос всем экспертам выбранной рассылки.




be number one Яндекс цитирования

© 2002 Россия, Москва. Авторское право: RusFAQ.ru

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное