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

RusFAQ.ru: Программирование на C / C++


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / C/C++

Выпуск № 647
от 24.01.2007, 19:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 452, Экспертов: 64
В номере:Вопросов: 3, Ответов: 4


Вопрос № 71578: Доброго времени суток. Как в C++ Builder 6 после создания и написания проэкта сделать что-то вроде либо самораспаковывающегося архива, либо установойчной программы?...
Вопрос № 71583: Доброго времени суток! Подскажите пожалуйста пример программы, которая висит в памяти и ждёт нажатия клавиш. Если я с клавиатуры нажму "А", {то выполнить этот кусок}, а если нажму "Б", {то этот кусок}. Форма не нужна. <br...
Вопрос № 71597: Помогите решить проблему. Почему моя программа, работающая с строками и файлами при первом запуске работает нормально, а при повторном выдает ошибку Access Violation.... и т.д. Файлы в конце я все закрываю. При перезапуске формы история повторяет...

Вопрос № 71.578
Доброго времени суток.
Как в C++ Builder 6 после создания и написания проэкта сделать что-то вроде либо самораспаковывающегося архива, либо установойчной программы?
Отправлен: 18.01.2007, 20:00
Вопрос задал: Mihalich (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Vaga
Здравствуйте, Mihalich!
InstallShield.
Можно воспользоваться NSIS от Nullsoft - хорошая штука, к тому же бесплатная, но нужно писать скрипт самостоятельно.
---------
Ошибка становится ошибкой, когда рождается как истина. Станислав Ежи Лец
Ответ отправил: Vaga (статус: 6-ой класс)
Ответ отправлен: 19.01.2007, 02:53


Вопрос № 71.583
Доброго времени суток!
Подскажите пожалуйста пример программы, которая висит в памяти и ждёт нажатия клавиш.
Если я с клавиатуры нажму "А", {то выполнить этот кусок}, а если нажму "Б", {то этот кусок}. Форма не нужна.
Нужен просто запущенный процесс в памяти (резидент?).
Спасибо.
Отправлен: 18.01.2007, 21:31
Вопрос задал: Москвин Роман (статус: Студент)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Mitya86
Здравствуйте, Москвин Роман!

чтобы реализовать ваш замысел необходимо использовать механизм ловушек(Windows Hooks).
Ответ отправил: Mitya86 (статус: 1-ый класс)
Ответ отправлен: 19.01.2007, 00:23
Оценка за ответ: 3
Комментарий оценки:
Спасибо. Однако, как такового, ответа на вопрос не последовало... Посмотрите ответ другого эксперта и сравните...

Отвечает: burbot
Здравствуйте, Москвин Роман!

Конечно установка хука WH_KEYBOARD_LL функцией SetWindowsHookEx очень мощный и гибкий метод, но есть метод попроще.
Давайте подумаем вместе :)

Во-первых: Вам нужен просто "резидент".
С моей точки зрения, решений здесь два (Если их больше, пусть кто-то поправит. Я об этом сильно не задумывался :).

1. Написать сервис (работает только на NT).
2. Создать dummy-окно, которое показывать пользователю мы не будем. Нам потребуется лишь его оконная процедура для обработки сообщений.

В Windows 2000/XP, кстати, появилась возможность создавать "message-only" окна. Т.е. окна, которые как раз и предазначены для решения данной задачи вторым способом. Их мы и будем использовать.

Итак:
1. Регистрируем свой класс окна.
2. Создаем окно зарегистрированного класса функцией CreateWindowEx и передаем ей в параметре hWndParent значение HWND_MESSAGE.

С задачей создания "резидента" справились.

3. После создания окна регистрируем глобальные горячие клавиши функцией RegisterHotKey.
4. В оконной функции пишем обработку сообщения WM_HOTKEY.
5. При выходе из программы не забываем удалить наши глобальные горячие клавиши фукцией UnregisterHotKey.
В приложении код, написанный на коленке.

Всего доброго!

Приложение:

---------
Хорошо смеется тот, кто смеется над собой. (C)

Ответ отправил: burbot (статус: 1-ый класс)
Ответ отправлен: 19.01.2007, 17:35
Оценка за ответ: 4
Комментарий оценки:
Незнаю, почему-то Ваш пример во вложении у меня не работает. Microsoft Visual C++ 6.0 выдаёт: "g:\program files\microsoft visual studio\myprojects\13\13.cpp(83) : fatal error C1010: unexpected end of file while looking for precompiled header directive


Вопрос № 71.597
Помогите решить проблему.
Почему моя программа, работающая с строками и файлами при первом запуске работает нормально, а при повторном выдает ошибку Access Violation.... и т.д. Файлы в конце я все закрываю. При перезапуске формы история повторяется снова, первый раз все отлично, второй и последуюшие ошибка. Может дело в памяти. Компилятор Borlan C++ Builder 6.0
Отправлен: 18.01.2007, 22:55
Вопрос задал: Костенко Игорь Викторович (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Шинтяков Дмитрий Васильевич / Ratson
Здравствуйте, Костенко Игорь Викторович!

Значит, где-то ошибка, что ещё можно тут сказать....
Запустите программу по шагам, посмотрите, на какой команде валится. Или хотя бы листинг приведите.

Телепатов-то нет.
Ответ отправил: Шинтяков Дмитрий Васильевич / Ratson (статус: 3-ий класс)
Ответ отправлен: 19.01.2007, 00:35


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

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

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
ООО "Мастер-Эксперт Про", Москва, 2007
Авторские права | Реклама на портале
Версия системы: 4.41 beta от 19.01.2007
Яндекс Rambler's Top100

В избранное