![]() |
|
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]()
|
|
| Dmitry_177 |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 22.9.2006 Репутация: нет Всего: нет |
Почему при запуске функции RunHook файл создается, а запись в него не происходит в обработчике хука SysMsgProc? Я думал над тем что вдруг переменная F: TextFile портится, т.к. слышал что общие переменные плохо хранятся в библиотеке... Можно что-нибудь с этим поделать? Может ктонибудь сталкивался с такой проблемой? Я пробовал и так, что прям в обработчике SysMsgProc открывать файл, делать запись и закрывать... Так происходит запись в файл, но так делать не очень хорошо наверно, т.к. лишний раз комп тоже грузить не охото... Хоть так, через одно место, но запись происходит, но так почему-то функции GetModuleFileName и GetWindowText как-то не правильно работают... Если вызвать функцию RunHook из библиотеки и вводить разные символы в разных окнах, то я заметил некую странность, если в каком-то окне вводятся впервые символы с момента запуска библиотеки, то эти функции определяют все правильно, а если потом ввести какие-то символы в другом какомнибудь окне(это другое окно, если тоже впервые вводятся символы, тоже определится функциями), а потом вводить в том окне в каком уже вводили, то эти функции уже не определяют почему-то что это другое окно(не то в котором вводилось до этого), и происходит запись в файл так, коббудто я ввожу символы не в том окне в котором на самом деле, а в том в котором определилось этими функциями в последний раз...
Библиотека:
Тестовая программа для запуска библиотеки:
|
||||
|
|||||
| drkot |
|
|||
![]() Ищущий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1042 Регистрация: 5.5.2006 Репутация: нет Всего: 8 |
Помоему работает.
-------------------- Ошибка не становится истиной по причине широкого распространения, как и Истина не становится Ошибкой из-за того, что никто её не видит. |
|||
|
||||
| Dmitry_177 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 22.9.2006 Репутация: нет Всего: нет |
Попробуй..
|
|||
|
||||
| drkot |
|
|||
![]() Ищущий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1042 Регистрация: 5.5.2006 Репутация: нет Всего: 8 |
Так не с потолка же сказал. Попробовал.
Переключение между процессами пишет замечательно. вот тебе пачка компромата на меня
-------------------- Ошибка не становится истиной по причине широкого распространения, как и Истина не становится Ошибкой из-за того, что никто её не видит. |
|||
|
||||
| Dmitry_177 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 22.9.2006 Репутация: нет Всего: нет |
Немного не понял меня, попробуй так: Запусти "блокнот", введи там чтонибудь, потом, не закрывая его, запусти например "Internet Explorer" введи в поле адреса тоже чтонибудь, а потом открой тот блокнот который уже запущен и там опять что-нибудь введи... в логах увидишь, что то что в последний раз вводил в блокноте будет записано как в Internet Explorer-е...
Вот смотри: 24.Сентябрь(09).2006 - 18:20 #File Name#: C:\WINDOWS\system32\notepad.exe #Form Caption#: Безымянный - Блокнот #Text#: 1234567890 24.Сентябрь(09).2006 - 18:20 #File Name#: C:\Program Files\Internet Explorer\IEXPLORE.EXE #Form Caption#: about:blank - Microsoft Internet Explorer #Text#: 12345678901234567890 То что выделенно жирным, я вводил в блокноте а не в Internet Explorer-е... А еще такой вопрос, файл открывал и закрывал в SysMsgProc или в RunHook и StopHook? Это сообщение отредактировал(а) Dmitry_177 - 24.9.2006, 17:30 |
|||
|
||||
| drkot |
|
|||
![]() Ищущий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1042 Регистрация: 5.5.2006 Репутация: нет Всего: 8 |
Все оставил как было в предложенном исходнике (кроме одной переменной лишней) Так это у тебя с указателями бока. внимательно оттестиру и будет работать. Переменныюе очищай и пр. А лучше исользуй обычные паскалевские строки (проще глюки вылавливать будет). -------------------- Ошибка не становится истиной по причине широкого распространения, как и Истина не становится Ошибкой из-за того, что никто её не видит. |
|||
|
||||
| Dmitry_177 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 22.9.2006 Репутация: нет Всего: нет |
эту? в FreeMem(pTransChar); вместо pTransChar - pText? тоже не работает...((( У меня так и было, только я тут забыл поменять... А в чем компилировал, какая версия Delphi?
|
|||
|
||||
| drkot |
|
|||
![]() Ищущий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1042 Регистрация: 5.5.2006 Репутация: нет Всего: 8 |
-------------------- Ошибка не становится истиной по причине широкого распространения, как и Истина не становится Ошибкой из-за того, что никто её не видит. |
|||
|
||||
| Dmitry_177 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 22.9.2006 Репутация: нет Всего: нет |
Про переменные я правильно сказал, так сделал?
Delphi 2006 в смысле? |
|||
|
||||
| drkot |
|
|||
![]() Ищущий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1042 Регистрация: 5.5.2006 Репутация: нет Всего: 8 |
да. не понял (в смысл фразы невьехал). -------------------- Ошибка не становится истиной по причине широкого распространения, как и Истина не становится Ошибкой из-за того, что никто её не видит. |
|||
|
||||
| Dmitry_177 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 22.9.2006 Репутация: нет Всего: нет |
Все оставил как было в предложенном исходнике (кроме одной переменной лишней)
Какую лишнюю переменную убрал? |
|||
|
||||
| drkot |
|
|||
![]() Ищущий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1042 Регистрация: 5.5.2006 Репутация: нет Всего: 8 |
вот эту. она нигде не описана и неиспользуется -------------------- Ошибка не становится истиной по причине широкого распространения, как и Истина не становится Ошибкой из-за того, что никто её не видит. |
|||
|
||||
| Dmitry_177 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 22.9.2006 Репутация: нет Всего: нет |
FreeMem(pText); - вот так правильно будет. Т.к. мы выделяем память, GetMem(pText, 3);
Установил я Delphi 2006, перекомпилировал в нем свой код, всеравно не работает.. Всеравно все тоже самое...((( |
|||
|
||||
| Dmitry_177 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 22.9.2006 Репутация: нет Всего: нет |
А выложи свои откомпилированные файлы, может у меня и твои тоже не будут работать...
|
|||
|
||||
| drkot |
|
|||
![]() Ищущий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1042 Регистрация: 5.5.2006 Репутация: нет Всего: 8 |
У меня пишется нормально (то что набрано для окна то и пишет)
файл отправлю на мыло. -------------------- Ошибка не становится истиной по причине широкого распространения, как и Истина не становится Ошибкой из-за того, что никто её не видит. |
|||
|
||||
![]()
|
| Правила форума "Delphi: WinAPI и системное программирование" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |