Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从COM服务启动EXE_C++_Service_Com_Atl - Fatal编程技术网

C++ 从COM服务启动EXE

C++ 从COM服务启动EXE,c++,service,com,atl,C++,Service,Com,Atl,我正在尝试编程我的第一个COM服务EXE。我在网上找不到一些信息 服务EXE从其Run()方法开始执行,我需要在其中实现我的主要功能以使我的服务正常工作,还是需要实现与之相关的特定功能 非常感谢你 ATL:你没有声明你使用C++和Cyt,但是可以从给问题的标签猜出。 如果COM对象不需要任何全局初始化,则不必修改提供的Run()函数或任何类似的函数。其工作原理如下:如果服务未运行,并且某些程序需要从服务中创建COM对象,则COM/DCOM基础结构首先启动该服务。或者,您可以使用任何标准方式(例如

我正在尝试编程我的第一个COM服务EXE。我在网上找不到一些信息

服务EXE从其
Run()
方法开始执行,我需要在其中实现我的主要功能以使我的服务正常工作,还是需要实现与之相关的特定功能


非常感谢你

ATL:你没有声明你使用C++和Cyt,但是可以从给问题的标签猜出。 如果COM对象不需要任何全局初始化,则不必修改提供的Run()函数或任何类似的函数。其工作原理如下:如果服务未运行,并且某些程序需要从服务中创建COM对象,则COM/DCOM基础结构首先启动该服务。或者,您可以使用任何标准方式(例如手动或将其启动类型设置为自动)预启动服务。服务运行后,将在服务中创建COM对象

因此,不需要额外的全局初始化,只需像在任何本地服务器或进程内服务器中一样实现COM对象。如果他们需要任何实例初始化,您将把它放入COM对象的构造函数中,或者放入它的FinalConstruct方法中(此方法在构造函数之后调用,因此您可以利用对象已经存在的事实,如果需要,您也可以使其失败,因为FinalConstruct返回HRESULT)


若您需要一个全局(服务范围)初始化代码,那个么您可以将它放在几个地方,每个地方都处于服务构建的不同阶段。其中之一就是Run()方法,是的。

提供COM对象是这项服务的重点吗?如果是这样的话,我可以推荐在proc COM服务器(即DLL)中实现它并在COM+中运行它吗?这容易多了。如果我提到了足够的信息,我很抱歉。事实上,我正在尝试使用ATL构建一个服务EXE。此服务需要在计算机启动时运行,并在循环中运行其主要进程。然后我是否只需要将我的主进程实现到Run()方法中?我无法理解您关于
FinalConstruct方法
和COM对象的
构造函数
的解释。我在哪里找到它们?或者,如何添加它们?看起来您选择了使用“ATL项目”向导来实现Windows服务,但实际上您不需要实现任何COM对象(与原始问题相反)。在给出答案之前,需要澄清这一点。