Click here to Skip to main content
15,908,455 members
Home / Discussions / COM
   

COM

 
GeneralPopup/Alertboxes in WebBrowser Control Pin
p_khasnis23-Dec-02 1:16
p_khasnis23-Dec-02 1:16 
GeneralNeed help using object in ATL ActiveX EXE window services server. Pin
bahruddina22-Dec-02 17:50
bahruddina22-Dec-02 17:50 
GeneralRe: Need help using object in ATL ActiveX EXE window services server. Pin
pba_23-Dec-02 12:41
pba_23-Dec-02 12:41 
GeneralRe: Need help using object in ATL ActiveX EXE window services server. Pin
bahruddina23-Dec-02 19:14
bahruddina23-Dec-02 19:14 
GeneralRe: Need help using object in ATL ActiveX EXE window services server. Pin
pba_24-Dec-02 4:28
pba_24-Dec-02 4:28 
GeneralRe: Need help using object in ATL ActiveX EXE window services server. Pin
geo_m30-Dec-02 5:56
geo_m30-Dec-02 5:56 
GeneralRe: Need help using object in ATL ActiveX EXE window services server. Pin
pba_30-Dec-02 6:03
pba_30-Dec-02 6:03 
GeneralRe: Need help using object in ATL ActiveX EXE window services server. Pin
bahruddina30-Dec-02 20:28
bahruddina30-Dec-02 20:28 
hi,

When I call m_Obj->Release() or m_Obj = NULL; my FinalRelease() never called Frown | :(

void CServiceModule::Run()<br />
{<br />
    _Module.dwThreadID = GetCurrentThreadId();<br />
<br />
    HRESULT hr = CoInitialize(NULL);<br />
//  If you are running on NT 4.0 or higher you can use the following call<br />
//  instead to make the EXE free threaded.<br />
//  This means that calls come in on a random RPC thread<br />
//  HRESULT hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);<br />
<br />
    _ASSERTE(SUCCEEDED(hr));<br />
<br />
    // This provides a NULL DACL which will allow access to everyone.<br />
    CSecurityDescriptor sd;<br />
    sd.InitializeFromThreadToken();<br />
    hr = CoInitializeSecurity(sd, -1, NULL, NULL,<br />
        RPC_C_AUTHN_LEVEL_PKT, RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE, NULL);<br />
    _ASSERTE(SUCCEEDED(hr));<br />
<br />
    hr = _Module.RegisterClassObjects(CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER, REGCLS_MULTIPLEUSE);<br />
    _ASSERTE(SUCCEEDED(hr));<br />
<br />
	CComObject<CMyObj> *m_Obj;<br />
	CComObject<CMyObj>::CreateInstance(&m_Obj);<br />
<br />
	m_Obj->CallMe();<br />
<br />
    LogEvent(_T("Service started"));<br />
    if (m_bService)<br />
        SetServiceStatus(SERVICE_RUNNING);<br />
<br />
    MSG msg;<br />
    while (GetMessage(&msg, 0, 0, 0))<br />
        DispatchMessage(&msg);<br />
<br />
        <big>//FinalRelease is not triggered<br />
	m_Obj->Release();</big> <br />
<br />
    _Module.RevokeClassObjects();<br />
<br />
    CoUninitialize();<br />
}<br />


Below is .h code for CMyObj :

<br />
// MyObj.h : Declaration of the CMyObj<br />
<br />
#ifndef __MYOBJ_H_<br />
#define __MYOBJ_H_<br />
<br />
#include "resource.h"       // main symbols<br />
<br />
/////////////////////////////////////////////////////////////////////////////<br />
// CMyObj<br />
class ATL_NO_VTABLE CMyObj : <br />
	public CComObjectRootEx<<CComSingleThreadModel>>,<br />
	public CComCoClass<<CMyObj, &CLSID_MyObj>>,<br />
	public IDispatchImpl<<IMyObj, &IID_IMyObj, &LIBID_TESTLib>><br />
{<br />
public:<br />
	CMyObj()<br />
	{<br />
	}<br />
<br />
	HRESULT FinalConstruct()<br />
	{<br />
		MessageBox(NULL, "Start", NULL, MB_OK | MB_SERVICE_NOTIFICATION );<br />
		return S_OK;<br />
	}<br />
<br />
	<big><br />
        //this never get called when Release() or NULL executed<br />
        void FinalRelease()<br />
	{<br />
		MessageBox(NULL, "stop", NULL, MB_OK | MB_SERVICE_NOTIFICATION);<br />
	}</big><br />
<br />
DECLARE_REGISTRY_RESOURCEID(IDR_MYOBJ)<br />
<br />
DECLARE_PROTECT_FINAL_CONSTRUCT()<br />
<br />
BEGIN_COM_MAP(CMyObj)<br />
	COM_INTERFACE_ENTRY(IMyObj)<br />
	COM_INTERFACE_ENTRY(IDispatch)<br />
END_COM_MAP()<br />
<br />
// IMyObj<br />
public:<br />
	STDMETHOD(CallMe)();<br />
};<br />
<br />
#endif //__MYOBJ_H_<br />


Thanx in advance Smile | :)

Regards.
Questionpackaging a vc++ software? Pin
xxhimanshu21-Dec-02 1:40
xxhimanshu21-Dec-02 1:40 
AnswerRe: packaging a vc++ software? Pin
Renjith Ramachandran29-Dec-02 6:00
Renjith Ramachandran29-Dec-02 6:00 
GeneralATL COM thingie using inheritance Pin
Scracha20-Dec-02 4:56
Scracha20-Dec-02 4:56 
GeneralRe: ATL COM thingie using inheritance Pin
Ranjan Banerji20-Dec-02 5:44
Ranjan Banerji20-Dec-02 5:44 
GeneralRe: ATL COM thingie using inheritance Pin
pba_23-Dec-02 12:30
pba_23-Dec-02 12:30 
GeneralBeginners help with SAFEARRAY Pin
Obliterator19-Dec-02 8:24
Obliterator19-Dec-02 8:24 
GeneralRe: Beginners help with SAFEARRAY Pin
Barry Lapthorn19-Dec-02 20:47
protectorBarry Lapthorn19-Dec-02 20:47 
GeneralRe: Beginners help with SAFEARRAY Pin
work_to_live20-Dec-02 20:18
work_to_live20-Dec-02 20:18 
GeneralRe: Beginners help with SAFEARRAY Pin
Barry Lapthorn22-Dec-02 0:37
protectorBarry Lapthorn22-Dec-02 0:37 
GeneralRe: Beginners help with SAFEARRAY Pin
Barry Lapthorn23-Dec-02 3:16
protectorBarry Lapthorn23-Dec-02 3:16 
Generala COM+ design question Pin
Anonymous19-Dec-02 3:16
Anonymous19-Dec-02 3:16 
GeneralRe: a COM+ design question Pin
Burt Harris21-Dec-02 10:34
Burt Harris21-Dec-02 10:34 
QuestionGot CLSID/PROGID, how to access? Pin
Anonymous19-Dec-02 1:25
Anonymous19-Dec-02 1:25 
AnswerRe: Got CLSID/PROGID, how to access? Pin
Anonymous19-Dec-02 10:17
Anonymous19-Dec-02 10:17 
AnswerRe: Got CLSID/PROGID, how to access? Pin
geo_m30-Dec-02 6:16
geo_m30-Dec-02 6:16 
QuestionWhat interface to implement to be a datasource to VB data bound control? Pin
Erik Juhl13-Dec-02 5:47
Erik Juhl13-Dec-02 5:47 
AnswerRe: What interface to implement to be a datasource to VB data bound control? Pin
Jörgen Sigvardsson24-Dec-02 12:46
Jörgen Sigvardsson24-Dec-02 12:46 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.