Вопрос № 54308: Помогите уважаемые эксперрты.
Я делаю проект. Debuger версия работает отлично. Как компилирую Release версию, компилятор выдает следующее предупреждение
warning LNK4089: all references to "GDI32.dll" discarded by /OPT:REF
...Вопрос № 54403: Здравствуйте!
Посоветуйте, плз, как создать задачу для Win , но которая не показывает окон (даже не моргает ДОСовское).
И в этой задаче есть перехват кнопок клавиатуры и мыши....
Вопрос № 54.308
Помогите уважаемые эксперрты.
Я делаю проект. Debuger версия работает отлично. Как компилирую Release версию, компилятор выдает следующее предупреждение
warning LNK4089: all references to "GDI32.dll" discarded by /OPT:REF
и соответственно проект не хочет нормально работать.
Подскажите плиз, какую опцию надо поставить в Release - версии проекта, чтобы были доступны ссылки из библиотеки GDI32.DLL?
Заранее благодарен
Приложение:
Отправлен: 04.09.2006, 20:03
Вопрос задал: Melamed (статус: 4-ый класс)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: Physicist
Здравствуйте, Melamed!
Это предупреждение означает лишь то, что Ваша программа напрямую не вызывает ни одной функции из gdi32.dll.
Если Вы всё же уверены, что ошибка связана именно с тем, что в процессе линковки эта библиотека не была подключена к программе, то ищите в настройках линкера строку типа Eliminate Unreferenced Data (/OPT:REF) (так она выглядит в VS2003) и отключите эту функцию (в VS2003 отключенный вариант называется Keep Unreferenced Data (/OPT:NOREF) ).
Ответ отправил: Physicist (статус: Студент)
Ответ отправлен: 04.09.2006, 21:47 Оценка за ответ: 5 Комментарий оценки: Предупприждение пропало, но Release-версия проекта не хочет нормально
работать. Буду разбираться Но на поставленный вопрос Вы ответили правил
00;но, поэтому и 5 получаете заслужено
Вопрос № 54.403
Здравствуйте!
Посоветуйте, плз, как создать задачу для Win , но которая не показывает окон (даже не моргает ДОСовское).
И в этой задаче есть перехват кнопок клавиатуры и мыши.
Отправлен: 05.09.2006, 14:53
Вопрос задал: ALEXT (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: AlexKlaip
Здравствуйте, ALEXT!
Можно создать приложение с окном без стиля WS_VISIBLE, а при его показе
ShowWindow вызвать с SW_HIDE
Ответ отправил: AlexKlaip (статус: 1-ый класс)
Ответ отправлен: 05.09.2006, 16:56
Отвечает: DoubleV
Здравствуйте, ALEXT!
Для того, чтобы создать такую задачу достаточно просто создать вин32 программу (не консольную) и не создавать в ней ни каких окон (можно конечно и как описано выше). Тогда при запуске программы на экране не должно не чего моргать.
Что касается перехвата сообщений, то тут мне не совсем ясна задача. Если перехватывать нужно все сообщения от клавиатуры и мыши в системе, то тут можно использовать хуки. Если нужно просто среагировать на нажатие клавиши или сочетания клавиш, то можно просто зарегистрировать горячую клавишу (правда с мышкой такое не пройдет).
В приложение приведен рабочий пример с хуком и горячей клавишей. Хочу обратить внимание на то, что ХУК процедура должна быть описана в ДЛЛ иначе не удастся поставить глобальный хук (работающей не только в вашем процессе).
Приложение:
Ответ отправил: DoubleV (статус: 4-ый класс)
Ответ отправлен: 06.09.2006, 01:09
Отвечает: Ross
Здравствуйте, ALEXT!
Прогу, которая не выводит главное окно, можно сделать например так:
Создать обыкновенное Win32 приложение (например в Microsoft VS) и убрать из функции InitInstance строки отвечающие
за отрисовку окна (там вызываются функции ShowWindow,UpdateWindow).
Для перехвата нажатий клавиш можно использовать либо глобальный хук, либо циклический
опрос клавиатуры с помощью функций GetKeyboardState или GetAsyncKeyState. Первая вовращает массив, харак
1090;еризующий состояние всех клавиш, вторая - состояние одной клавиши. Программа, которая
реализует это находится в приложении, вам только нужно добавить процедуры обр
;аботки результатов.
Приложение:
Ответ отправил: Ross (статус: 1-ый класс)
Ответ отправлен: 06.09.2006, 20:30