Как настроить щелчок правой кнопкой мыши с уже существующим экземпляром программы? - PullRequest
1 голос
/ 11 января 2012

Мне нужно настроить правый клик, чтобы я мог сканировать каталог своим антивирусом.Я знаю, как это сделать, используя ключи реестра, но проблема в том, что я не хочу запускать новый экземпляр моей программы каждый раз, когда я хочу сканировать каталог.Моему антивирусу нужно загрузить несколько сигнатурных баз, так что программе их потребуется около 15 секунд.Мне нужно использовать экземпляр программы, который я уже открыл и работает для сканирования каталога.Как я могу это сделать?

Я использую C ++ Builder.

Спасибо.

Ответы [ 2 ]

1 голос
/ 12 января 2012

Включите DDE-сервер в свой антивирус, а затем добавьте ключ ddeexec в раздел реестра. В качестве альтернативы, добавьте объект OLE Automation в ваше приложение, которое реализует интерфейс IDropTarget, а затем добавьте ключ DropTarget в ключ реестра, который указывает CLSID.

объекта.

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

Я бы предложил метод IDropTarget, поскольку DDE устарел, а IDropTarget более гибкий. Во время работы вашего приложения вы можете повторно использовать один и тот же объект IDropTarget для обработки операций перетаскивания OLE в окне пользовательского интерфейса вашего приложения и на кнопке панели задач, а также для поддержки автоматического вызова вашего сканера другими приложениями.

1 голос
/ 11 января 2012

Учитывая, что вы уже знаете, как добавить элемент в контекстное меню, вызываемое правой кнопкой мыши, я предлагаю реализовать набор приложений клиент / сервер:

  • Сервер, который загружается при включении компьютера и выполняет сканирование, а
  • Клиент, который сообщает ему, что делать с использованием IPC - межпроцессное взаимодействие.

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

IPC немного неприятен, самый простой способ - использовать TCP / IP для локальной сети и использовать сетевую библиотеку. Их много, но, учитывая, что вам, вероятно, понадобятся другие функции, такие как элементы пользовательского интерфейса и значок в трее, я предлагаю вам взглянуть на Qt, а именно на следующие компоненты:

  • QtNetwork : для связи между исполняемым файлом клиента и сервера.

  • QSystemTrayIcon : для отображения небольшого значка на панели задач.

Есть немало других маленьких кусочков Qt, с которыми вы, без сомнения, столкнетесь (как и все сказочные элементы пользовательского интерфейса), и, к счастью, Qt хорошо документирован, и помощь всегда доступна здесь, а также в Qt Developer Network. Вы можете начать работу с Qt, загрузив и установив SDK:

http://qt.nokia.com/downloads/

Удачи:).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...