Проблема с FileMapping. Здесь выкладывать код не буду, т.к. будет тяжело читать. Кину ссылку на прогу, чтобы можно было легче понять мою проблему (проблема аналогична, что и в этой программе)
http://www.gamedev.ru/download/?id=4663 (сорри, чо-то файл сюда не загрузился сам... привожу ссылку на него).
Там две АБСОЛЮТНО одинаковые программы, работающие с хуком WH_GETMESSAGE и используют FileMapping. Кому не лень, пробегитесь глазами по КОДУ программ (он короткий). Если пустить обе программы и установить хки, то они работают...до N-го времени...а потом вылазит ошибка (когда приходит сообщение в аську ,агента..пускается игра и т.п.).
Я уже 3-й день бьюсь над этой проблемой, не понимаю, что не так...
Помогите, плз, кто чем может.
FileMapping
Модераторы: Duncon, Hawk, Romeo, Eugie
Какая ошибка то выходит ?
И CreateFile надо проверять на INVALID_HANDLE_VALUE(0xFFFFFFFF) а не на 0 при ошибке
И CreateFile надо проверять на INVALID_HANDLE_VALUE(0xFFFFFFFF) а не на 0 при ошибке
"Инструкция по адресу ... обратилась к памяти по адресу ... . Память не может быть written"
или "Readen" ....
На данный момент пытаюсь по-другоме решить мою проблему..без файлмэппинга. Но хотелось бы узнать, в чём косяк здесь.
А у вас что, ошибка не выводится в этих программах ??
или "Readen" ....
На данный момент пытаюсь по-другоме решить мою проблему..без файлмэппинга. Но хотелось бы узнать, в чём косяк здесь.
А у вас что, ошибка не выводится в этих программах ??
Насчет INVALI_HANDLE_VALUE я не прав был, все привильно там, перепутал с CreateFile. А запустить не могу, т.к. нету Delphi или что это
А почему у тебя
SysMsgProc(code : integer; wParam : word; lParam : longint)
word на паскале это же 16 бит? т.е. short ? А должен быть 32 битное, видимо на паскале это integer или longint. Тебе лучше знать. Из-за этого вполне могло все падать
SysMsgProc(code : integer; wParam : word; lParam : longint)
word на паскале это же 16 бит? т.е. short ? А должен быть 32 битное, видимо на паскале это integer или longint. Тебе лучше знать. Из-за этого вполне могло все падать
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Я тоже за то, что это должно быть longint.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Исправил на DWORD для надёжности...но это проблему не решило. Я уже отчаился с этим..пытаюсь сделать не через файлмэппинг, а через WinApi функции с воей программе..но и там проблем хватает. Хоть какой-нибудь бы метод доделать до конца....