алкокодер
 Аватар для UnsKneD
157 / 153 / 41
Регистрация: 27.12.2012
Сообщений: 550
1

COM exe server

05.04.2015, 14:59. Показов 1549. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Возможно ли создать COM exe сервер без использования WINAPI?

на данный момент работает так.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int main(){
    MSG msg;
    long d = 0;
    HACCEL hAccelTable = LoadAccelerators(NULL, NULL);
        
    HRESULT hr = CoInitialize(NULL);
    CFactory::StartFactory();   
        while (GetMessage(&msg, NULL, 0, 0))
        {
            if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
            {
                TranslateMessage(&msg);
                DispatchMessage(&msg);
            }
        }
    CFactory::StopFactory();
    return 0;
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.04.2015, 14:59
Ответы с готовыми решениями:

Bcp.exe и SQL Server Profiler
Добрый день. А программа "SQL Server Profiler" мониторит записи которые заливает bcp.exe. Или...

Не запускаются AVZ. exe, CCleaner. exe, AutoLogger. exe, regedit. exe. Словил вирус bizigames
Доброго времени суток. Захотел я почистить комп от мусора всякого при помощи CCleaner, как не...

Не запускаются AVZ. exe, CCleaner. exe, AutoLogger. exe, regedit. exe Дублируются процессы
Добрый день) не запускались экзешники перечисленные в топе, исправила кое как процессы...

Ошибка explorer.exe в Windows Server 2003
Всем привет! Вылезает регулярно окошечко с сабжем, предлагая его (explorer.exe) перезагрузить или...

6
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16478 / 7441 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
05.04.2015, 15:30 2
Цитата Сообщение от UnsKneD Посмотреть сообщение
Возможно ли создать COM exe сервер без использования WINAPI?
Без WinAPI, в том или ином виде, ничего сделать вообще нельзя.
0
алкокодер
 Аватар для UnsKneD
157 / 153 / 41
Регистрация: 27.12.2012
Сообщений: 550
05.04.2015, 15:34  [ТС] 3
Убежденный, ок. без GetMessage(&msg, NULL, 0, 0) возможно?
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16478 / 7441 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
05.04.2015, 15:38 4
Да. Только COM-сервер должен работать в режиме MTA, но не STA.
1
алкокодер
 Аватар для UnsKneD
157 / 153 / 41
Регистрация: 27.12.2012
Сообщений: 550
05.04.2015, 15:40  [ТС] 5
Убежденный, можно подробнее с примером?
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16478 / 7441 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
05.04.2015, 15:52 6
Лучший ответ Сообщение было отмечено UnsKneD как решение

Решение

Если кратко: в начало ставите CoInitializeEx с кодом COINIT_MULTITHREADED.
И вместо оконных сообщений можно сделать просто WaitForSingleObject или
даже просто Sleep(INFINITE). Но код методов COM-класса должен при этом
быть потокобезопасным.

Про модели поточности в COM можно почитать здесь:

Processes, Threads, and Apartments
https://msdn.microsoft.com/en-... 85%29.aspx

Понимание подразделений COM
https://rsdn.ru/article/com/apartmnt.xml

Understanding COM Apartments, Part I
http://www.codeguru.com/cpp/co... Part-I.htm

Understanding COM Apartments, Part II
http://www.codeguru.com/cpp/co... art-II.htm

Understanding The COM Single-Threaded Apartment Part 1
http://www.codeproject.com/Art... artment-Pa

Understanding The COM Single-Threaded Apartment Part 2
http://www.codeproject.com/Art... -Apartment
2
алкокодер
 Аватар для UnsKneD
157 / 153 / 41
Регистрация: 27.12.2012
Сообщений: 550
05.04.2015, 16:25  [ТС] 7
Убежденный, спасибо, всё получилось.
0
05.04.2015, 16:25
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.04.2015, 16:25
Помогаю со студенческими работами здесь

Прошивка BIOS SP45854.exe для Server HP ML110 G5
Добрый день участники форума. Проблема такая. Есть сервер HP proliant ml110 g5(понимаю что старый...

вирус calc.exe*32 notepad.exe*32 cmd.exe cannhost.exe
Здравствуйте. помогите решить проблему. При включении компьютера висят процессы calc.exe*32 ...

Не запускаются AVZ. exe, CCleaner. exe, AutoLogger. exe, regedit. exe
Доброе время суток. У меня такая проблема: Не запускаются AVZ. exe, CCleaner. exe, AutoLogger....

Вирусы dwm.exe dllhost.exe ctfmon.exe svchost.exe
Проблема заключается в том что у меня на компьютере в диспетчере задач стоят задачи которые я не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

Новые блоги и статьи
Преобразование полей (элементов управления содержимым) в обычный текст
РоΜа 23.01.2025
Возникла необходимость преобразовать поля в текст (те, что на вкладке разработчик добавляются) . Помучившись родил следующее: Sub ПоляВТекст() Преобразует все поля в текст (даты, текст,. . .
Как проверить существование директории в скрипте Bash
bt_guru 23.01.2025
При разработке скриптов Bash одной из ключевых задач является корректная работа с файловой системой, где особое место занимает проверка существования директорий. Эта операция становится критически. . .
Как работают срезы (slice) в Python
bytestream 23.01.2025
Python предоставляет разработчикам мощный и гибкий инструмент для работы с последовательностями данных - срезы (slices). Эта функциональность позволяет извлекать, модифицировать и управлять. . .
Как удалить подмодуль (submodule) в Git
bytestream 23.01.2025
При работе с крупными проектами в системе контроля версий Git разработчики часто сталкиваются с необходимостью управления зависимостями и внешними компонентами. Подмодули (submodules) представляют. . .
В чем разница между @staticmethod и @classmethod в Python. Декораторы методов
bytestream 23.01.2025
В Python декораторы методов представляют собой мощный инструмент, позволяющий модифицировать поведение функций и методов без изменения их исходного кода. Эта возможность является одной из. . .
Как преобразовать InputStream в String в Java
bytestream 23.01.2025
В мире Java-разработки работа с потоками данных является одной из ключевых операций при создании современных приложений. InputStream, как фундаментальный класс для обработки входных потоков данных,. . .
Как обновить форк (ответвление) репозитория в Git
bytestream 23.01.2025
Одним из наиболее мощных инструментов Git для организации совместной работы является механизм форкинга репозиториев, который позволяет создавать независимые копии проектов для дальнейшей разработки. . . .
Как работает async/await в C#. Асинхронное программировани­е в .NET
bytestream 23.01.2025
Введение в асинхронное программирование Асинхронное программирование представляет собой важнейшую концепцию современной разработки программного обеспечения, особенно в контексте создания. . .
КуМир: полное руководство
bytestream 23.01.2025
Введение в КуМир: история создания и назначение КуМир (Комплект Учебных МИров) представляет собой образовательную среду программирования, которая была создана для обучения основам алгоритмизации и. . .
Что такое OLAP. Где и как использовать многомерный анализ данных
bytestream 23.01.2025
Введение в OLAP-технологии В современном мире бизнес-аналитика и обработка больших массивов данных играют ключевую роль в принятии стратегических решений. Организации накапливают огромные объемы. . .
MongoDB: что это, для чего нужна и как использовать
bytestream 23.01.2025
Введение в MongoDB: современная документоориентированная СУБД В современном мире разработки программного обеспечения выбор правильной системы управления базами данных является критически важным. . .
Как использовать закрытый ключ шифрования в Git. Шифрование в Git
bytestream 23.01.2025
Установка и настройка закрытых ключей в Git предоставляет дополнительный уровень безопасности для работы с репозиториями. Для начала необходимо создать пару ключей, обычно это осуществляется с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru