![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| HiVeR |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 30.6.2008 Репутация: нет Всего: нет |
Доброе время суток, господа
почемуто не получается использовать SendMessage для чтения/записи текста окна.., пишу так:
в самой программе(главный модуль) функции работают на "ура", а если оформить в dll'ке, то в обоих случаях выдаёт ошибку: Missing operator or semicolon (промт - "Недостающий оператор или точка с запятой") и курсор устанавливается на 4ый параметр(lparam) в чём может быть дело?, всё проверил, всё должно работать... Это сообщение отредактировал(а) HiVeR - 3.8.2008, 17:05 |
|||
|
||||
| THandle |
|
|||
![]() Хранитель Клуба Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 65 Всего: 372 |
Посмотри, предыдущая строчка оканчивается точкой с запятой(;)? Или выложи весь рядом лежащий код.
|
|||
|
||||
| HiVeR |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 30.6.2008 Репутация: нет Всего: нет |
точка с запятой стоит, всё есть, но не пойму почему не пашет, думаю что нельзя использовать lparam(), так как после ошибки курсор именно там...
вот маленькая часть моего кода:
может просто в длл в данном случае нельзя использовать sendmessage? |
|||
|
||||
| THandle |
|
|||
![]() Хранитель Клуба Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 65 Всего: 372 |
Да с чего бы? Дай лучше полный код библиотеки, не понятно почему так. У меня данный код работает вот так(то есть компилится):
Показывай весь код, так просто гадать бессмысленно. |
|||
|
||||
| HiVeR |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 30.6.2008 Репутация: нет Всего: нет |
THandle, и вправду, работает код)
полный код очень большой и очень кривой, потому обрезал до максимума(пока ошибка сохраняется) и вот что получилось:
всё дело наверно в функции..., длл использую для установки глобального хука, потому такие параметры в функции, может отсюда уже видно что нетак? |
|||
|
||||
| THandle |
|
|||
![]() Хранитель Клуба Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 65 Всего: 372 |
Проблема видимо в том что ты пытаешься привести str к параметру функции:
function SysMsgProc(code : integer; wParam : word; lParam : longint): longint; export; stdcall; Сделай так:
|
|||
|
||||
| HiVeR |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 30.6.2008 Репутация: нет Всего: нет |
а можешь плз объяснить в двух словах, что делают lparam() и integer(), был бы очень благодарен |
|||
|
||||
| THandle |
|
|||
![]() Хранитель Клуба Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 65 Всего: 372 |
HiVeR, это обычное приведение к типу.
LParam = Integer, так что все равно к чему приводить. Кстати, если вопрос исчерпан, то пометь тему как решенную. |
|||
|
||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 38 Всего: 89 |
...и я бы ещё посоветовал почитать какую-нибудь книжку по Delphi...
Просто это - самые основы. И по ним надо читать книжи. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| THandle |
|
||||||||||||
![]() Хранитель Клуба Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 65 Всего: 372 |
Кстати, есть замечания по коду:
1. Export не нужен, эта директива осталась от Паскаля и Win16, в Win32-64 смысла не имеет. 2. Теперь о функции:
wparam не может быть word, так как тогда получается комбинирование знаковых и беззнаковых типов. Объявление на MSDN:
То есть WPARAM ни как не может быть word'ом. 3. Фундаментальные типы(longint) не используем, так как он всегда будет 4 байта. На Win32 и integer тоже будет 4 байта, но при переносе на Win64 будет же 8. Longint будет меньше требуемого. Так как Integer = LParam, то и оставим как MSDN. Поэтому меняем:
На:
4. Последнее.
Интересно накой в wparam 255? Лучше обнулить:
Вот так в общем... Кстати сейчас посмотрел в DRKB и FAQ, те же ошибки... А жаль... |
||||||||||||
|
|||||||||||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 38 Всего: 89 |
offtopic
Меня лично всегда изумляет, откуда изначально берётся такой код? Кто его пишет? Какими извращёнными методами он при этом пользуется? Вот ещё два примера: http://www.delphikingdom.ru/asp/answer.asp?IDAnswer=64211 и http://www.delphikingdom.ru/asp/answer.asp?IDAnswer=64042 И при этом ужасает, как же много народу просто бездумно копирует эти исходники. Ведь даже за ухом не почешется: "здесь что-то не так!". -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |