<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Форум 'COM/DCOM/ActiveX' на RSDN</title>
    <link>http://rsdn.org/Forum/com/</link>
    <description></description>
    <category>com</category>
    <language>ru-ru</language>
    <copyright>Copyright ©, RSDN, 2001-2007</copyright>
    <webMaster>forum@rsdn.org</webMaster>
    <generator>RSDN RSS Generator 1.3</generator>
    <image>
      <url>http://rsdn.org/rsdn.gif</url>
      <title>RSDN</title>
      <link>http://rsdn.org</link>
    </image>
    <lastBuildDate>Mon, 20 Apr 2026 03:33:17 GMT</lastBuildDate>
    <ttl>5</ttl>
	<item>
		<title>Встраивание окна Microsoft Word в свое приложение</title>
		<link>http://rsdn.org/Forum/com/8565665.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/com/8565665</guid>
		<comments>http://rsdn.org/Forum/com/8565665</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=8565665</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/8565665</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=8565665</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;Я как-то встраивал окно MS Word в свое приложение (OLE Automation). Эта интеграция работала начиная с офиса 2003 и работала до офиса 2016. Но заметил, что на новом офисе 2019 и 2020 окно не встраивается, а открывается отдельно от приложения.&lt;br /&gt;
Не могу понять куда копать. Если кто-то работал в этом направлении, то могу более подробно уточнить. &lt;br /&gt;
Пока не могу понять что изменилось (версия офиса или версия Windows 11). На Windows 11 даже Office 2013 при интеграции некорректно ресайзится.&lt;br /&gt;
Может есть готовые собранные экзешники, чтобы мог проверить как в сторонних программах происходит встраивание окна. Может проблема на уровне настройки MS Word.&lt;/div&gt;
				
		</description>
		
		<category>com</category>
		<pubDate>Thu, 20 Jul 2023 21:05:58 GMT</pubDate>
		
			<author>kondrik &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>1</slash:comments>
		
	</item>

	<item>
		<title>Регистрация COM-объекта из своей программы</title>
		<link>http://rsdn.org/Forum/com/8565259.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/com/8565259</guid>
		<comments>http://rsdn.org/Forum/com/8565259</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=8565259</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/8565259</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=8565259</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;При регистрации СОМ объекта в своей программе вызов функции CODllRegisterServer из своей задачи выдает ошибку 0x80070005 "Отказано в доступе" Системная утилита Regsvr32 регистрирует COM-объекты только когда запущена под администратором системы. Думаю, для регистрации новых COM-объектов не хватает каких-то привилегий&lt;/div&gt;
				
		</description>
		
		<category>com</category>
		<pubDate>Thu, 20 Jul 2023 09:21:18 GMT</pubDate>
		
			<author>Melamed &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>5</slash:comments>
		
	</item>

	<item>
		<title>Интерфейс объявлен только в h-файле, но не idl</title>
		<link>http://rsdn.org/Forum/com/8555640.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/com/8555640</guid>
		<comments>http://rsdn.org/Forum/com/8555640</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=8555640</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/8555640</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=8555640</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;Хочу написать свои собственные Сom объекты, который будит работать с Direct D2. Для их инициализации им нужно передать интерфейс ID2D1DeviceContext и рад методов будут принимать и возвращать указатели на интерфейсов вида ID2D1xxx, которые объявлены только в h-файлах, в частности D1D2.h, D1D2_1.h и др., но не объявлены ни в одном файле idl. &lt;br /&gt;
Новые интерфейсы я объявляю в IDL-файле.&lt;br /&gt;
Как я понял, чтобы объявить в моих интерфейсах аргументы, которые указывают на эти интерфейсы, они должны быть объявлены в IDL-файлах&lt;br /&gt;
Среда разработки MSVS 2015 C++&lt;/div&gt;
				
		</description>
		
		<category>com</category>
		<pubDate>Mon, 03 Jul 2023 08:17:19 GMT</pubDate>
		
			<author>Melamed &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>3</slash:comments>
		
	</item>

	<item>
		<title>static_cast и COM интерфейсы</title>
		<link>http://rsdn.org/Forum/com/8461489.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/com/8461489</guid>
		<comments>http://rsdn.org/Forum/com/8461489</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=8461489</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/8461489</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=8461489</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;Здравствуйте &lt;br /&gt;
&lt;br /&gt;
В моей программе COM интерфейс IWICBitmapDecoder передается моему управляющему элементу  через lParam сообщения.  &lt;br /&gt;
Чтобы в оконной функции использовать параметр lParam как указанный COM интерфейс, использую следующую код:&lt;br /&gt;
&lt;pre class='c'&gt;&lt;code&gt;IWICBitmapDecoder *pDecoder = &lt;span class='kw'&gt;static_cast&lt;/span&gt;&amp;lt;IWICBitmapDecoder*&amp;gt;((&lt;span class='kw'&gt;void&lt;/span&gt;*)lParam);
&lt;span class='kw'&gt;if&lt;/span&gt; (pDecoder != nullptr)
{
    lResult = ecSetWICDecoder(pDecoder);
}&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Конструкция вроде работает правильно, но встает вопрос: нужно ли в данном коде для освобождения ресурсов использовать метод Release интерфейса IUnknown или нет?&lt;/div&gt;
				
		</description>
		
		<category>com</category>
		<pubDate>Wed, 01 Feb 2023 11:05:36 GMT</pubDate>
		
			<author>Melamed &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>19</slash:comments>
		
	</item>

	<item>
		<title>IActiveScript и модули.</title>
		<link>http://rsdn.org/Forum/com/8446280.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/com/8446280</guid>
		<comments>http://rsdn.org/Forum/com/8446280</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=8446280</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/8446280</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=8446280</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;Всем привет!&lt;br /&gt;
&lt;br /&gt;
Пытаюсь к основному скрипту (VBS) подключить другой в виде модуля.&lt;br /&gt;
Для этого вызываю IActiveScript::AddNamedItem() с флагом SCRIPTITEM_CODEONLY.&lt;br /&gt;
Сначала добавляю модуль:&lt;br /&gt;
&lt;pre class='c'&gt;&lt;code&gt;rc = pScript-&amp;gt;AddNamedItem(L&lt;span class='str'&gt;"Mod1"&lt;/span&gt;, SCRIPTITEM_ISVISIBLE | SCRIPTITEM_CODEONLY);
rc = pParse-&amp;gt;ParseScriptText(pszSrc, L&lt;span class='str'&gt;"Mod1"&lt;/span&gt;, NULL, NULL, 0, 0, SCRIPTTEXT_ISVISIBLE, NULL, &amp;amp;e);&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
Потом добавляю основной скрипт. Перевожу в состояние Connected.&lt;br /&gt;
&lt;pre class='c'&gt;&lt;code&gt;rc = pParse-&amp;gt;ParseScriptText(pszSrc, NULL, NULL, NULL, 0, 0, SCRIPTTEXT_ISVISIBLE, NULL, &amp;amp;e);&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
Затем получаю информацию об основном модуле:&lt;br /&gt;
&lt;pre class='c'&gt;&lt;code&gt;rc = pScript-&amp;gt;GetScriptDispatch(NULL, &amp;amp;pDisp);
rc = pDisp-&amp;gt;GetTypeInfo(0, LOCALE_SYSTEM_DEFAULT, &amp;amp;pType);&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
При вызове последней строки прилетает вызов GetItemInfo для "Mod1". Согласно доке, у "сайта" нет ничего для этого модуля и он должен в качестве интерфейса вернуть NULL. Но скриптовый движок так не считает и использует NULL как живой интерфейс с предсказуемым итогом. При выполнении скрипта история с GetItemInfo повторяется.&lt;br /&gt;
&lt;br /&gt;
Если вместо NULL вернуть IDispatch модуля, то все работает. Но это противоречит доке...&lt;br /&gt;
&lt;br /&gt;
Может кто знает, в чем подвох?&lt;/div&gt;
				
		</description>
		
		<category>com</category>
		<pubDate>Wed, 11 Jan 2023 13:28:30 GMT</pubDate>
		
			<author>OlegMB &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>0</slash:comments>
		
	</item>

	<item>
		<title>pywin32 не видит 32-х битный COM-сервер</title>
		<link>http://rsdn.org/Forum/com/8418575.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/com/8418575</guid>
		<comments>http://rsdn.org/Forum/com/8418575</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=8418575</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/8418575</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=8418575</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;Мне нужно подключиться к 32-х битному COM-серверу из Python.&lt;br /&gt;
ОС: Windows 10 x64.&lt;br /&gt;
Устанавливаю Python 3.11 (32-bit).&lt;br /&gt;
Устанавливаю pywin32:&lt;br /&gt;
&lt;br /&gt;
pip install pywin32&lt;br /&gt;
&lt;br /&gt;
судя по логам устанавливается 32-х битная версия:&lt;br /&gt;
&lt;br /&gt;
pywin32-305-cp311-cp311-win32.whl (11.0 MB)&lt;br /&gt;
&lt;br /&gt;
Пытаюсь получить доступ к COM-объекту:&lt;br /&gt;
&lt;br /&gt;
import win32com.client&lt;br /&gt;
rastr = win32com.client.Dispatch("Astra.Rastr")&lt;br /&gt;
&lt;br /&gt;
Получаю ошибку:&lt;br /&gt;
pywintypes.com_error: (-2147221005, ‘Недопустимая строка с указанием класса’, None, None)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Нужная мне программа имеет и 64-х битную версию. Когда я ее устанавливаю, все работает отлично. Но мне нужна именно 32-х битная версия.&lt;br /&gt;
&lt;br /&gt;
Вопрос: почему я не могу получить доступ к 32-х битной версии COM-объекта из 32-х битной версии Питона и 32-х битной версии pywin32? Кто-нибудь сталкивался с этим? В какую сторону мне копать?&lt;/div&gt;
				
		</description>
		
		<category>com</category>
		<pubDate>Wed, 30 Nov 2022 08:25:50 GMT</pubDate>
		
			<author>ZegSoft &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>4</slash:comments>
		
	</item>

	<item>
		<title>com и regsvr32 - вопрос</title>
		<link>http://rsdn.org/Forum/com/8404742.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/com/8404742</guid>
		<comments>http://rsdn.org/Forum/com/8404742</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=8404742</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/8404742</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=8404742</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;Такой вопрос. regsvr32 только делает либу узнаваемой для системы, т.е. к ней можно обратиться по GUID? Сама же библиотека все-равно не загружается до того, как ее вызовут? Почему называется DllRegisterServer?&lt;/div&gt;
				
		</description>
		
		<category>com</category>
		<pubDate>Thu, 10 Nov 2022 22:48:37 GMT</pubDate>
		
			<author>Shmj &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>4</slash:comments>
		
	</item>

	<item>
		<title>Проблема с инициализацией COM</title>
		<link>http://rsdn.org/Forum/com/8399796.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/com/8399796</guid>
		<comments>http://rsdn.org/Forum/com/8399796</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=8399796</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/8399796</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=8399796</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;Здравствуйте.&lt;br /&gt;
&lt;br /&gt;
Как известно, в ОС Windows существует несколько способов инициализации COM системы:&lt;br /&gt;
&lt;ol type='1' start='1' style='margin-top:0; margin-bottom:0;'&gt;С помощью функции OleInitialize &lt;br /&gt;
С помощью функции CoInitializeEx&lt;/ol&gt;
&lt;br /&gt;
В моей программе планируется использовать перетаскивание файлов с помощью интерфейса IDropTarget и DirectShow. Причем DirectShow будет использоваться в нескольких потоках. Следовательно, COM система должна инициализироваться с помощью функции CoInitializeEx с флагом COINIT_MULTITHREADED. Но когда я инициализирую так COM систему функция RegisterDragDrop возвращает ошибку. Она требует, чтобы COM система инициализировалась с помощью функции OleInitialize. Но она инициализирует COM систему только в том потоке, в котором была вызвана.&lt;br /&gt;
&lt;br /&gt;
Есть ли способ инициализации COM системы для нескольких потоках и чтоб функция RegisterDragDrop не возвращала ошибку?&lt;br /&gt;
&lt;br /&gt;
Заранее благодарен     &lt;br /&gt;
P/S Проект WINAPI+STL пишется в C++ MSVS 2015&lt;/div&gt;
				
		</description>
		
		<category>com</category>
		<pubDate>Wed, 02 Nov 2022 09:34:54 GMT</pubDate>
		
			<author>Melamed &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>3</slash:comments>
		
	</item>

	<item>
		<title>Где прописан ProgId диспетчерского интерфейса?</title>
		<link>http://rsdn.org/Forum/com/7969286.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/com/7969286</guid>
		<comments>http://rsdn.org/Forum/com/7969286</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=7969286</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/7969286</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=7969286</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;Всем привет, используем драйвер фискального регистратора, создаем просто через COleDispatchDriver:&lt;br /&gt;
&lt;pre class='c'&gt;&lt;code&gt;::CoInitialize(nullptr);
m_isInitialized = m_fiscalPrinter-&amp;gt;CreateDispatch(_T(&lt;span class='str'&gt;"Addin.DrvFR"&lt;/span&gt;), &amp;amp;ex) == TRUE;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
На одном из компьютеров, упорно не создается таким способом, при получении системной ошибки получаем "Класс не зарегистрирован"&lt;br /&gt;
Из этого и возник вопрос где в реестре храниться этот ProgId "Addin.DrvFR".&lt;br /&gt;
Искал в реестре компа на котором все работает находим в реестре \HKEY_CLASSES_ROOT\Addin.DrvFR там есть \HKEY_CLASSES_ROOT\Addin.DrvFR\ClsId  но он пуст, непонятно как он связан с COM-объектом?&lt;br /&gt;
На компьютере где не работает тоже самое в реестре, но увы не работает. Как формируется ProID диспетчерского интерфейса, как имея ProgId найти нужный Com &amp;mdash; объект ?&lt;/div&gt;
				
		</description>
		
		<category>com</category>
		<pubDate>Thu, 11 Mar 2021 10:33:10 GMT</pubDate>
		
			<author>_agg &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>0</slash:comments>
		
	</item>

	<item>
		<title>Подписаться на изменения в буфере обмена. Как?</title>
		<link>http://rsdn.org/Forum/com/7950312.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/com/7950312</guid>
		<comments>http://rsdn.org/Forum/com/7950312</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=7950312</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/7950312</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=7950312</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;Добрый!&lt;br /&gt;
&lt;br /&gt;
Подскажите, пожалуйста, как можно, например из 1С, подписаться на изменения в буфере обмена?&lt;/div&gt;
				
		</description>
		
		<category>com</category>
		<pubDate>Sat, 13 Feb 2021 15:36:03 GMT</pubDate>
		
			<author>Багер &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>4</slash:comments>
		
	</item>

	<item>
		<title>Помощь с DCOM</title>
		<link>http://rsdn.org/Forum/com/7949187.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/com/7949187</guid>
		<comments>http://rsdn.org/Forum/com/7949187</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=7949187</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/7949187</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=7949187</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;Добрый день&lt;br /&gt;
&lt;br /&gt;
На горизонте моячит новая работа связанная с DCOM(COM) технологиями.&lt;br /&gt;
&lt;br /&gt;
В процессе ознакомления с ТЗ сформированным заказчиком, возникло несколько вопросов связанных с хотелками заказчика и возможностями технологии COM. &lt;br /&gt;
&lt;br /&gt;
Если сейчас не вдаваться в тонкости всего ТЗ. &lt;br /&gt;
То на повестки дня стоит вопрос &amp;mdash; можно ли из существующего сервера( сервер является DCOM сервером, в виде исполняемого файла) получить список компонентов поддерживаемый этим сервером, и получить список всех функций и список параметров функций?&lt;br /&gt;
&lt;br /&gt;
P.S. Прошу прощение у народа за возможные не точности в постановке вопроса в части COM терминов. У меня другая специализация. А этим вопросом меня загрузили всего несколько часов назад. Так как я еще не шибко образован в данной области.&lt;/div&gt;
				
		</description>
		
		<category>com</category>
		<pubDate>Thu, 11 Feb 2021 15:16:05 GMT</pubDate>
		
			<author>wbear &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>8</slash:comments>
		
	</item>

	<item>
		<title>Прошу помощи в получении SAFEARRAY с помощью InvokeHelper</title>
		<link>http://rsdn.org/Forum/com/7712766.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/com/7712766</guid>
		<comments>http://rsdn.org/Forum/com/7712766</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=7712766</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/7712766</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=7712766</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;Всем привет, у одного из драйверов есть COM оболочка , на которой все написано, частью методов пользовались частью нет, и вот понадобилось воспользоваться методом который возвращает SAFEARRAY и возникла проблема.&lt;br /&gt;
Изначально студия сгенерировала MFC оболочку на основе COleDispatchDriver выглядит примерно так:&lt;br /&gt;
&lt;pre class='c'&gt;&lt;code&gt;&lt;span class='kw'&gt;class&lt;/span&gt; CFptr : &lt;span class='kw'&gt;public&lt;/span&gt; COleDispatchDriver
{
&lt;span class='kw'&gt;public&lt;/span&gt;:
    CFptr() {} &lt;span class='com'&gt;// Calls COleDispatchDriver default constructor&lt;/span&gt;
    CFptr(LPDISPATCH pDispatch) : COleDispatchDriver(pDispatch) {}
    CFptr(&lt;span class='kw'&gt;const&lt;/span&gt; CFptr&amp;amp; dispatchSrc) : COleDispatchDriver(dispatchSrc) {}
...
    CString getParamStr(&lt;span class='kw'&gt;long&lt;/span&gt; paramId) {
        CString result;
        &lt;span class='kw'&gt;static&lt;/span&gt; BYTE parms[] = VTS_I4;
        InvokeHelper(0x18, DISPATCH_METHOD, VT_BSTR, (&lt;span class='kw'&gt;void&lt;/span&gt;*)&amp;amp;result, parms, paramId);
        &lt;span class='kw'&gt;return&lt;/span&gt; result;
    }
    SAFEARRAY * getParamByteArray(&lt;span class='kw'&gt;long&lt;/span&gt; paramId)
    {
        &lt;span class='kw'&gt;static&lt;/span&gt; BYTE parms[] = VTS_I4;
        InvokeHelper(0x1a, DISPATCH_METHOD, VT_EMPTY, nullptr, parms, paramId);
    }&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
 &lt;br /&gt;
Сам студийный генератор в оболочку сгенерировал ошибку в методе getParamByteArray. Вообще с SAFEARRAY я работал раньше, но не через InvokeHelper, тут я перепробовал различные варианты, но результат один исключение во время вызова.Пробовал написать вот таким образом, но результат тот же, исключение:&lt;br /&gt;
&lt;pre class='c'&gt;&lt;code&gt;    SAFEARRAY * getParamByteArray(&lt;span class='kw'&gt;long&lt;/span&gt; paramId) {
        CComSafeArray&amp;lt;BYTE&amp;gt; arr(1024);
        &lt;span class='kw'&gt;static&lt;/span&gt; BYTE parms[] = VTS_PI4;
        InvokeHelper(0x1a, DISPATCH_METHOD, VT_ARRAY, (&lt;span class='kw'&gt;void&lt;/span&gt;*)&amp;amp;arr, parms, paramId);        
        &lt;span class='kw'&gt;return&lt;/span&gt; arr.Detach();
    }&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
С помощью OleView создал idl-file этого COM, этот метод выглядит вот таким образом:&lt;br /&gt;
&lt;pre class='c'&gt;&lt;code&gt;[&lt;span class='kw'&gt;id&lt;/span&gt;(0x0000001a)]
        HRESULT getParamByteArray(
                        [&lt;span class='kw'&gt;in&lt;/span&gt;] &lt;span class='kw'&gt;long&lt;/span&gt; paramId, 
                        [&lt;span class='kw'&gt;out&lt;/span&gt;, &lt;span class='kw'&gt;retval&lt;/span&gt;] SAFEARRAY(unsigned &lt;span class='kw'&gt;char&lt;/span&gt;)* value)&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Подскажите кто в курсе как получить SAFEARRAY c помощью InvokeHelper?&lt;/div&gt;
				
		</description>
		
		<category>com</category>
		<pubDate>Wed, 22 Apr 2020 04:33:50 GMT</pubDate>
		
			<author>_agg &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>2</slash:comments>
		
	</item>

	<item>
		<title>Утечка памяти</title>
		<link>http://rsdn.org/Forum/com/7604481.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/com/7604481</guid>
		<comments>http://rsdn.org/Forum/com/7604481</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=7604481</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/7604481</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=7604481</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;Снимаю данные с векторного рефлектометра серии CABAN&lt;br /&gt;
&lt;a class="m" href="http://www.planarchel.ru/Products/Measurement%20instrument/r-series/" target="_blank"&gt;http://www.planarchel.ru/Products/Measurement%20instrument/r-series/&lt;/a&gt;&lt;br /&gt;
 &lt;br /&gt;
В доках пример на VC (СОМ интерфейс)&lt;br /&gt;
Если убрать лишнее получится&lt;br /&gt;
#import "C:\RVNA\RVNA.exe" no_namespace&lt;br /&gt;
  IRVNAPtr pNWA;            // Pointer to COM object of RVNA.exe&lt;br /&gt;
  CComVariant Data;         // Variable for measurement data&lt;br /&gt;
 &lt;br /&gt;
  CoInitialize(NULL);&lt;br /&gt;
  pNWA.CreateInstance(__uuidof(RVNA))&lt;br /&gt;
&lt;span class='lineQuote level1'&gt; &lt;br /&gt;
      pNWA-&amp;gt;SCPI-&amp;gt;TRIGger-&amp;gt;SEQuence-&amp;gt;SINGle();      &lt;/span&gt;&lt;br /&gt;
      Data = pNWA-&amp;gt;SCPI-&amp;gt;CALCulate[1]-&amp;gt;SELected-&amp;gt;DATA-&amp;gt;FDATa;&lt;br /&gt;
      CComSafeArray&amp;lt;double&amp;gt; mSafeArray;&lt;br /&gt;
       mSafeArray.Attach(Data.parray);&lt;br /&gt;
........................................&lt;br /&gt;
         mSafeArray.Detach();&lt;br /&gt;
    pNWA.Release();&lt;br /&gt;
  CoUninitialize();&lt;br /&gt;
 &lt;br /&gt;
Пишу на BCB6&lt;br /&gt;
 &lt;br /&gt;
#include "R54Lib_TLB.h" // вместо #import "C:\RVNA\RVNA.exe"&lt;br /&gt;
 &lt;br /&gt;
  VARIANT Data;    &lt;br /&gt;
  IRVNAPtr pNWA;    &lt;br /&gt;
  pNWA = CoRVNA::Create();&lt;br /&gt;
&lt;span class='lineQuote level1'&gt;  pNWA-&amp;gt;SCPI-&amp;gt;TRIGger-&amp;gt;SEQuence-&amp;gt;SINGle();      &lt;/span&gt;&lt;br /&gt;
 &lt;br /&gt;
  &lt;b&gt;Data =  pNWA-&amp;gt;SCPI-&amp;gt;get_CALCulate(1)-&amp;gt;SELected-&amp;gt;DATA-&amp;gt;get_FDATa();&lt;/b&gt;&lt;br /&gt;
 &lt;br /&gt;
   TSafeArrayT &amp;lt;double,VT_R8,1&amp;gt; mSafeArray;&lt;br /&gt;
    mSafeArray.Attach(Data.parray);&lt;br /&gt;
........................................&lt;br /&gt;
     mSafeArray.Detach();&lt;br /&gt;
Утечка видимо происходит на на строчке выделенной болдом&lt;br /&gt;
 &lt;br /&gt;
Прошу помощи.&lt;/div&gt;
				
		</description>
		
		<category>com</category>
		<pubDate>Thu, 05 Dec 2019 14:18:34 GMT</pubDate>
		
			<author>wtch &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>8</slash:comments>
		
	</item>

	<item>
		<title>IE 11 + mime фильтр</title>
		<link>http://rsdn.org/Forum/com/7547665.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/com/7547665</guid>
		<comments>http://rsdn.org/Forum/com/7547665</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=7547665</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/7547665</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=7547665</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;Имеется зарегистрированный в реестре mime фильтр. Любое приложение, использующее системный WebBrowser, видит этот фильтр и использует его. Но сам IE его использует с ограничением &lt;s&gt;- для https фильтр не вызывается. Как я понимаю &amp;mdash; это какое-то security restriction&lt;/s&gt;. Можно ли как-то под настроить, что бы убрать это ограничение?&lt;br /&gt;
&lt;br /&gt;
Update. Оказалось, что дело не в https, а как то более не понятно. Фильтр обрабатывает image/jpeg. Если в строке адреса забить прямой URL картинки, то фильтр вызывается, но для картинок, ссылки на которые идут из html кода, уже нет.&lt;/div&gt;
				
		</description>
		
		<category>com</category>
		<pubDate>Fri, 20 Sep 2019 20:35:11 GMT</pubDate>
		
			<author>Aniskin &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>0</slash:comments>
		
	</item>

	<item>
		<title>Правила возврата указателя и кода результата</title>
		<link>http://rsdn.org/Forum/com/7522392.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/com/7522392</guid>
		<comments>http://rsdn.org/Forum/com/7522392</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=7522392</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/7522392</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=7522392</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;В документации явно сказано, что QueryInterface, CoCreateInstance, DllGetClassObject и некоторые другие функции/методы в случае ошибки всегда возвращают нуль в переменную для адреса интерфейса. Однако, нигде не нашел утверждения о том, что это общее и обязательное правило. Зато обнаружил, что в коде многих COM-серверов это широко используется, и даже стоят assert'ы, проверяющие, чтобы при ошибке указатель всегда был нулевым.&lt;br /&gt;
&lt;br /&gt;
Это просто добровольная страховка, или где-то установлено, как требование? Нужно ли при реализации COM-сервера всегда соблюдать это правило?&lt;/div&gt;
				
		</description>
		
		<category>com</category>
		<pubDate>Mon, 19 Aug 2019 20:50:48 GMT</pubDate>
		
			<author>Евгений Музыченко &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>10</slash:comments>
		
	</item>

	<item>
		<title>Проблема с подключением к серверу OPC DA</title>
		<link>http://rsdn.org/Forum/com/7517293.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/com/7517293</guid>
		<comments>http://rsdn.org/Forum/com/7517293</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=7517293</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/7517293</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=7517293</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;Доброго времени суток! Года два назад написал OPC-клиент, который успешно функционировал со всем разнообразием OPC-серверов, предложенных ему. И вот появился на горизонте PcVue со своим OPC-сервером. Я нормально получаю CLSID и на CoGetClassObject() все заканчивается с кодом 0x80040154 "Class not registered". Причем другие OPC-клиенты, например, Matrikon OPC Explorer, нормально с ним работают. Может быть, есть мысль, почему так может быть? Спасибо!&lt;br /&gt;
ЗЫ: Все исключительно на локальной машине&lt;/div&gt;
				
		</description>
		
		<category>com</category>
		<pubDate>Tue, 13 Aug 2019 15:41:49 GMT</pubDate>
		
			<author>plastictown &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>7</slash:comments>
		
	</item>

	<item>
		<title>Как ориентироваться в COM?</title>
		<link>http://rsdn.org/Forum/com/7515430.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/com/7515430</guid>
		<comments>http://rsdn.org/Forum/com/7515430</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=7515430</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/7515430</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=7515430</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;В Windows есть много COM объектов, но как в них ориентироваться? К примеру, как найти объекты для работы с файловой системой или реестром? С WinApi проще, оно отсортировано по категориям в MSDN, да и книжек полно. Для СОМ я что-то никак не могу понять, откуда копать. Посоветуйте, пожалуйста.&lt;/div&gt;
				
		</description>
		
		<category>com</category>
		<pubDate>Sat, 10 Aug 2019 18:52:51 GMT</pubDate>
		
			<author>morgot &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>4</slash:comments>
		
	</item>

	<item>
		<title>Проблемы с встраиванием окна редактора MS Word в свое приложение</title>
		<link>http://rsdn.org/Forum/com/7452494.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/com/7452494</guid>
		<comments>http://rsdn.org/Forum/com/7452494</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=7452494</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/7452494</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=7452494</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;Как писал раньше я встраиваю окно MS Word в свое приложение. Окно Word встраивается и работает отлично. Но если я в Windows 10 устанавливаю масштаб всего интерфейса Windows на 125% или 150%, то при инициализации такого окна оно вместо встроенного появляется в виде отдельного окна Mirosoft Word, которое запускается в виде отдельного приложения. &lt;br /&gt;
Когда начал анализировать, то увидел, что при нормальном вызове, когда окно получается встроенным, то после запуска DoVerb(...) состояние m_nItemState == activeUIState, а если увеличить масштаб интерфейса Windows, то m_nItemState == openState.&lt;br /&gt;
Не понимаю что упустил при инициализации, чтобы окно всегда запускалось как встроенное окно.&lt;/div&gt;
				
		</description>
		
		<category>com</category>
		<pubDate>Fri, 24 May 2019 06:50:46 GMT</pubDate>
		
			<author>Vlads &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>1</slash:comments>
		
	</item>

	<item>
		<title>Отобразить строку состояния</title>
		<link>http://rsdn.org/Forum/com/7445407.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/com/7445407</guid>
		<comments>http://rsdn.org/Forum/com/7445407</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=7445407</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/7445407</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=7445407</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;Я интегрировал в своем приложении окно MS Word. Окно отображается корректно, но не могу отобразить строку состояния с MS Word.&lt;br /&gt;
Все ненужные панели с ControlBar я убрал, но status bar никак не удается отобразить. &lt;br /&gt;
В MS Word пробовал с помощью макроса отображать или убирать status bar. Все работает. А в моем приложении не работает.&lt;br /&gt;
Пример макроса:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class='c'&gt;&lt;code&gt;&lt;span class='kw'&gt;Sub&lt;/span&gt; ShowStatusBar()
&lt;span class='kw'&gt;With&lt;/span&gt; Application.CommandBars(&lt;span class='str'&gt;"Status Bar"&lt;/span&gt;)
.Visible = &lt;span class='kw'&gt;True
End With
End Sub&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
				
		</description>
		
		<category>com</category>
		<pubDate>Thu, 16 May 2019 17:51:39 GMT</pubDate>
		
			<author>Vlads &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>0</slash:comments>
		
	</item>

	<item>
		<title>Сохранение jpg-файла с помощью WIC</title>
		<link>http://rsdn.org/Forum/com/7423840.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/com/7423840</guid>
		<comments>http://rsdn.org/Forum/com/7423840</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=7423840</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/7423840</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=7423840</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;Я сохраняю графику в jpg-Формате с помощью Windows Image Component. Реализую это в следующем коде&lt;br /&gt;
&lt;br /&gt;
&lt;pre class='c'&gt;&lt;code&gt;HRESULT ImageViewWnd::SaveToJPG(LPCTSTR pszFileName, &lt;span class='kw'&gt;float&lt;/span&gt; fQuality)
{
    IWICBitmap *pBitmap = NULL;
    IWICBitmapEncoder *pEncoder = NULL;
    IWICBitmapFrameEncode *pFrame = NULL;
    IPropertyBag2 *pPropertyBag = NULL;
    IWICStream *pStream = NULL;
    PROPBAG2 Property;
    HRESULT hRes;
    &lt;span class='kw'&gt;if&lt;/span&gt; (m_pImageFactory == NULL)
    {
        &lt;span class='kw'&gt;return&lt;/span&gt; E_NOINTERFACE;
    }
    hRes = m_pImageFactory-&amp;gt;CreateBitmapFromHBITMAP(m_hBitmap, NULL, WICBitmapIgnoreAlpha, &amp;amp;pBitmap);
    &lt;span class='kw'&gt;if&lt;/span&gt; (FAILED(hRes))
    {
        &lt;span class='kw'&gt;return&lt;/span&gt; hRes;
    }
    hRes = m_pImageFactory-&amp;gt;CreateEncoder(GUID_ContainerFormatJpeg, NULL, &amp;amp;pEncoder);
    &lt;span class='kw'&gt;if&lt;/span&gt; (FAILED(hRes))
    {
        SAFERELEASE(pBitmap);
        &lt;span class='kw'&gt;return&lt;/span&gt; hRes;
    }
    hRes = m_pImageFactory-&amp;gt;CreateStream(&amp;amp;pStream);
    &lt;span class='kw'&gt;if&lt;/span&gt; (FAILED(hRes))
    {
        SAFERELEASE(pBitmap);
        SAFERELEASE(pEncoder);
        &lt;span class='kw'&gt;return&lt;/span&gt; hRes;
    }
    hRes = pStream-&amp;gt;InitializeFromFilename(pszFileName, GENERIC_WRITE);
    &lt;span class='kw'&gt;if&lt;/span&gt; (SUCCEEDED(hRes))
    {
        hRes = pEncoder-&amp;gt;Initialize(pStream, WICBitmapEncoderNoCache);
    }
    &lt;span class='kw'&gt;if&lt;/span&gt; (SUCCEEDED(hRes))
    {
        hRes = pEncoder-&amp;gt;CreateNewFrame(&amp;amp;pFrame, &amp;amp;pPropertyBag);
    }
    &lt;span class='kw'&gt;if&lt;/span&gt; (FAILED(hRes))
    {
        SAFERELEASE(pBitmap);
        SAFERELEASE(pEncoder);
        SAFERELEASE(pStream);
        &lt;span class='kw'&gt;return&lt;/span&gt; hRes;
    }
    ZeroMemory(&amp;amp;Property, &lt;span class='kw'&gt;sizeof&lt;/span&gt;(PROPBAG2));
    Property.pstrName = L&lt;span class='str'&gt;"ImageQuality"&lt;/span&gt;;
    VARIANT vQuality;
&lt;span class='com'&gt;//    ZeroMemory(&amp;amp;vQuality, sizeof(VARIANT));&lt;/span&gt;
    VariantInit(&amp;amp;vQuality);
    vQuality.vt =  VT_R4;
    vQuality.fltVal = fQuality;
    hRes = pPropertyBag-&amp;gt;Write(1, &amp;amp;Property, &amp;amp;vQuality);
    &lt;span class='kw'&gt;if&lt;/span&gt; (SUCCEEDED(hRes))
    {
        hRes = pFrame-&amp;gt;Initialize(pPropertyBag);
        &lt;span class='kw'&gt;if&lt;/span&gt; (SUCCEEDED(hRes))
        {
            hRes = pFrame-&amp;gt;WriteSource(pBitmap, NULL);
            &lt;span class='kw'&gt;if&lt;/span&gt; (SUCCEEDED(hRes))
            {
                hRes = pFrame-&amp;gt;Commit();
                &lt;span class='kw'&gt;if&lt;/span&gt; (SUCCEEDED(hRes))
                {
                    hRes = pEncoder-&amp;gt;Commit();
                }
            }
        }
    }
    SAFERELEASE(pPropertyBag);
    SAFERELEASE(pEncoder);
    SAFERELEASE(pStream);
    SAFERELEASE(pBitmap);
    &lt;span class='kw'&gt;return&lt;/span&gt; hRes;
}&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Картинка сохраняется правильно. &lt;br /&gt;
Есть подозрение, что данный код не закрывает файл, так как невозможно открыть полученный файл в любой программе, пока данная программа не будет выгружена. Что это: очередной баг от Microsoft, или это как-то лечится?&lt;/div&gt;
				
		</description>
		
		<category>com</category>
		<pubDate>Fri, 19 Apr 2019 20:26:36 GMT</pubDate>
		
			<author>Melamed &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>1</slash:comments>
		
	</item>
</channel>
</rss>
