COM-технология

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
Fil
Сообщения: 41
Зарегистрирован: 30 авг 2006, 17:03

24 дек 2007, 22:54

Доброе время суток!

Поработал с кн. Круглински... "Программирование на MS VC++6.0 для профессионалов". Интересовала COM-технология...не очень понятно, может кто посоветует что-нибудь попроще по COM.

Спасибо.
Фоб
Сообщения: 45
Зарегистрирован: 10 ноя 2006, 14:56

25 дек 2007, 00:53

Вот, классно всё расписано:
http://techn.sstu.ru/TFI/site%5Ftfi/TFI ... /index.htm
Аватара пользователя
WinMain
Сообщения: 913
Зарегистрирован: 14 янв 2005, 10:30
Откуда: Москва
Контактная информация:

25 дек 2007, 11:28

Основной недостаток большинства книг по СОМ, которые мне встречались - это попытка сразу научить читателя создавать СОМ-объекты и использовать их в приложениях на Visual Basic, JavaScript или VBA в MS Office. В итоге на читателя обрушивается шквал информации, которая поначалу тяжело укладывается в голове. А лучше было бы начать с использования уже готовых компонентов, которые изначально присутствуют в системе Windows, из приложений на С++. Тогда сразу стало бы более понятно, как всё это работает.
Владимир
Сообщения: 56
Зарегистрирован: 25 апр 2005, 13:57

25 дек 2007, 14:59

На мой взгляд, очень хорошая книжка по СОМ Э. Трельсен «Модель COM и применение ATL 3.0». В ней рассказывается о сути технологии, даются примеры как создать СОМ объекты, что называется, с нуля и как с помощью библиотеки ATL
Fil
Сообщения: 41
Зарегистрирован: 30 авг 2006, 17:03

25 дек 2007, 16:29

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

P.S. Надеюсь мой вопрос не очень глуп.
Аватара пользователя
WinMain
Сообщения: 913
Зарегистрирован: 14 янв 2005, 10:30
Откуда: Москва
Контактная информация:

25 дек 2007, 17:16

Fil писал(а): WinMain, ты не мог бы привести какой-нибудь конкретный пример готового компонента в Windows или в приложении на С++... или как выйти на него.
Да запросто. Вот простенький пример, как программно создать ярлык для указанного файла и поместить его на Рабочий стол. Это делается с помощью системного COM-объекта ShellLink. К примеру, возьмём программу Калькулятор...

Код: Выделить всё

#include "stdafx.h"
#include <shlobj.h>
#include <atlbase.h>

int _tmain(int argc, _TCHAR* argv[])
{
	TCHAR tszDeskPath[MAX_PATH];	// Путь к папке Рабочего стола...
	SHGetSpecialFolderPath(::GetDesktopWindow(), tszDeskPath, CSIDL_COMMON_DESKTOPDIRECTORY, FALSE);
	lstrcat(tszDeskPath, _T("\\Калькулятор.lnk"));
	
	::CoInitialize(NULL);	// Инициализация СОМ

	CComPtr<IShellLink> pSL;
	CComPtr<IPersistFile> pPF;
	// Обращение к объекту ShellLink...
	::CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (void**)&pSL);
	pSL->SetPath(_T("Calc.exe"));
	pSL->QueryInterface(IID_IPersistFile, (void**)&pPF); 
	pPF->Save(CComBSTR(tszDeskPath), TRUE);

	::CoUninitialize();	// Деинициализация СОМ
	
	return 0;
}
После компиляции и запуска приложения на Рабочем столе Windows должен появиться ярлык "Калькулятор", через который можно будет запустить программу.
Fil
Сообщения: 41
Зарегистрирован: 30 авг 2006, 17:03

25 дек 2007, 20:34

Спасибо WinMain!
Ответить