|
there is 2 others kinds of libraries: debug libraries and release libraries:
the debug are all end with D
you have to use the right dll - in order the registry will success.
you can check your dll with dependency walker
good luck!
|
|
|
|
|
Hi all,
I am trying to subscribe for events like this:
CComPtr<IDispatch> spDisp;
HRESULT hr = m_spWebBrowser2->get_Document(&spDisp);
if (SUCCEEDED(hr) && spDisp)
{
CComQIPtr<IHTMLDocument2, &IID_IHTMLDocument2> spHTML(spDisp);
if (spHTML)
{
CComQIPtr<IHTMLElement, &IID_IHTMLElement> spElem;
hr=spHTML->get_body(&spElem);
if (SUCCEEDED(hr))
{
IConnectionPointContainer* pCPC = NULL;
hr = spElem->QueryInterface(IID_IConnectionPointContainer, (void**)&pCPC);
if (SUCCEEDED(hr))
{
IConnectionPoint* pCP = NULL;
hr = pCPC->FindConnectionPoint(DIID_HTMLInputTextElementEvents2, &pCP);
if (SUCCEEDED(hr))
{
....
}
}
}
}
}
FindConnectionPoint fails.
Please show me where I am wrong or how else I can subscribe?
modified on Monday, August 4, 2008 7:38 AM
|
|
|
|
|
Thanks, I found the error.
|
|
|
|
|
The code sample is as below,
_bstr_t bstrwer(_bstr_t(charPointer).Detach(),false);
HRESULT hr = CallToManagedWorld(bstrwer.GetBSTR()); // C# code CallToManagedWorld(string xml);
=======================================================
There is a memory leak in the above code for the memory allocated internally by the (_bstr_t(charPointer).Detach() code.
Can you provide any solution to this?
|
|
|
|
|
hi,
I would like to configure multiple web application in the same server. These web applications using COM components. So i go for COM+ partition . I have partitioned the Local and active directory COM+ partitions.
Then to map the COM+ partition with the IIS, i have changed some properties in the Metabase file of IIS.Then i tried to access the application i got an error message like
HTTP/1.1 New Session Failed
Please suggest me the solution and tell me the procedure to partition and map it with IIS.
Thanks.
|
|
|
|
|
Hi,
I have a client connecting to a remote server. The CoCreateInstanceEx call randomly (which is the strangest thing) fails with E_INVALIDARG. For instance, restarting the client helpds. I would suspect a memory overrun but can't find one. Would appreciate any ideas.
Thanks
COSERVERINFO tSI;
MULTI_QI mQI;
CComBSTR bstrServerName("SERVERNAME");
mQI.hr = S_OK;
mQI.pIID = &IID_IQueries2;
mQI.pItf = NULL;
tSI.dwReserved1 = 0;
tSI.dwReserved2 = 0;
tSI.pwszName = bstrServerName;
CString csUser,csDomain,csPassword;
m_pAuthId = new COAUTHIDENTITY();
m_pAuthInfo = new COAUTHINFO();
USES_CONVERSION;
m_pAuthId->User = new USHORT[wcslen(A2W("UserName"))];
wcscpy(m_pAuthId->User,A2W("UserName"));
m_pAuthId->UserLength = wcslen(m_pAuthId->User);
m_pAuthId->Domain = new USHORT[wcslen(A2W("DomainName"))];
wcscpy(m_pAuthId->Domain,A2W("DomainName"));
m_pAuthId->DomainLength = wcslen(m_pAuthId->Domain);
m_pAuthId->Password = new USHORT[wcslen(A2W("Password"))];
wcscpy(m_pAuthId->Password,A2W("Password"));
m_pAuthId->PasswordLength = wcslen(m_pAuthId->Password);
m_pAuthId->Flags = SEC_WINNT_AUTH_IDENTITY_UNICODE;
m_pAuthInfo->pwszServerPrincName = NULL;
m_pAuthInfo->dwAuthnLevel = RPC_C_AUTHN_LEVEL_CONNECT;
m_pAuthInfo->dwAuthnSvc = RPC_C_AUTHN_WINNT;
m_pAuthInfo->dwAuthzSvc = RPC_C_AUTHZ_NONE;
m_pAuthInfo->dwImpersonationLevel = RPC_C_IMP_LEVEL_IMPERSONATE;
m_pAuthInfo->dwCapabilities = EOAC_NONE;
m_pAuthInfo->pAuthIdentityData = m_pAuthId;
tSI.pAuthInfo = m_pAuthInfo;
HRESULT hResult = CoCreateInstanceEx(__uuidof(MainAPI), //REFCLSID rclsid,
NULL, //IUnknown * punkOuter,
CLSCTX_REMOTE_SERVER, //DWORD dwClsCtx,
&tSI, //COSERVERINFO * pServerInfo,
1, //ULONG cmq,
&mQI //MULTI_QI * pResults
);
|
|
|
|
|
Hey all,
is there a way to determine the name of the application that instantiated a dcom server? Looking it up in the process tree is not an option because the dcom server is hosted by svchost.exe which hence is the server's parent process. Changing the interface to pass an application name parameter to the server is also not an option because the caller already exists and cannot be changed. the dcom server is written in vb6 as is the calling application.
Thanks in advance.
Regards,
Hannes
|
|
|
|
|
I'm doing some COM work in C++ and I'm finding that my COM knowledge is a bit rusty (I used to use it somewhat frequently several years ago but not that much these days). I've built a simple COM DLL, and a simple MFC app that uses the COM DLL (and both were created by the VS Wizard), and both projects compile and work, but I had to do some tweaking in order to get the app to compile, and some things that I thought would have worked, didn't, so I have several COM related questions:
1. In my Test app (where I'm calling my COM component), I had started out of with:
#import "MyComComponent.tlb"
.
.
.
CComPtr<myclass> myClass;
hr = myClass.CoCreateInstance(CLSID_MyClass);
...but I got errors saying that IMyClass, CLSID_MyClass, and IID_IMyClass were all undeclared. I thought importing the .TBL file brought those definitions in (what's going on here?). In the end, I ended up with:
//#import "MyComComponent.tlb" // not needed at all
#include "MyComComponent.h" // needed for IMyClass
#include "MyComComponent_i.c" // needed for CLSID_MyClass and IID_IMyClass
.
.
.
CComPtr<imyclass> myClass;
hr = myClass.CoCreateInstance(CLSID_MyClass);
So what's going on?
2. If I just had:
//#import "MyComComponent.tlb"
#include "MyComComponent.h"
...I got a compile error saying:
MainFrm.obj : error LNK2001: unresolved external symbol _CLSID_MyClass
MainFrm.obj : error LNK2001: unresolved external symbol _IID_IMyClass
I looked into this and several sources on the web said that it was an issue of #include <initguid.h> needing to be included before a DEFINE_GUID(......) call, but I checked and initguid.h seems to be included correctly in both the DLL (in MyComComponent.cpp there's:
#include "stdafx.h"
#include "resource.h"
#include <initguid.h>
#include "MyComComponent.h"
.
.
.
...and correctly in the app. In the app there's:
#include "stdafx.h"
#include <initguid.h>
#include "MyTestApp.h"
#include "MainFrm.h"
#include <atlbase.h>
#import "MyComComponent.tlb"
#include "MyComComponent.h"
So what is the correct way to include the COM component's definitions? This:
#include "MyComComponent.h"
#include "MyComComponent_i.c"
...looks odd (I don't recall seeing other COM code like this), and I thought all one had to do was add:
#import "MyComComponent.tlb"
Oh, and for the record, I am correctly linking in MyComComponent.lib.
To repro, these are the steps I did:
1. Created a COM DLL (MyComComponent) w/VS's project wizard
2. Added a Class to the DLL (IMyClass)
3. Added a method to the class
4. Built the DLL
5. Created a MFC application w/VS's project wizard
6. Added MyComComponent.lib to the link step
7. Added code to call my COM component
8. Built (or try to build) the app.
Thanks for any help in clearing up what's going on. I have the feeling that what I'm missing is really simple but I can't see it.
Jeff
|
|
|
|
|
i hope that you will send me the test code.
my email: ekklesia77@naver.com
nice to meet u
|
|
|
|
|
1. In my Test app (where I'm calling my COM component), I had started out of with:
#import "MyComComponent.tlb" named_guids
With best wishes,
Vita
|
|
|
|
|
Thanks Vita! That was exactly what I was missing.
Jeff
|
|
|
|
|
I want to know how we will debug the COM which developed in VB 6.0 using ASP
OS Is WinXP
Any tool is availble .please let me know
Subash
|
|
|
|
|
Hi all.
I'm new in activex and im trying my first work. I put down here the code. What lack to me? its doesn't work. It's an example from internet that i'm testing it.
thanks for the patience to answer.
HTML:
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
<script type="text/javascript" language="javascript">
alert("i get this alert");
var obNewAXComponent = new ActiveXObject("AXComponent.AXComp");
var str = obNewAXComponent.callMe();
alert(str);//THIS ALERT NO.
</script>
</head>
<body>
<object id="obNewAXComponent" name="ActiveobNewAXComponentXObject" classid="CLSID:e6b78794-3955-4b29-a534-66add7e09fed" style="width: 6px; height: 7px"></object>
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html>
THE DLL:
using System;
using System.Collections.Generic;
using System.Text;
namespace AXComponent
{
public interface AXTest
{
string callMe();
}
public class AxComp : AXTest
{
public string callMe()
{
return "My dog has no nose, how does it smell?";
}
}
}
|
|
|
|
|
I see NO ActiveX component in your code.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
I am writing a Windows NT Service based on a MFC EXE with VC++ 6.0. This windows service should use Automation (COM) to read data from a server application every minute.
MFC EXE always worked.
But if I run my windows service which has the same function like MFC EXE from Service Management Control. I always get the exception: CreateDispatch returning scode = CO_E_SERVER_EXEC_FAILURE ($80080005).
Why it doesn't work when it is a windows service? What could be the cause ? How to resovle it?
|
|
|
|
|
Intro: Hey. I am a VB6 and VB.NET programmer with little experience outside these environments.
Question:
I am about to start developing a developer tool which is delivered as a DLL. The developer must then inherit from objects in my DLL. This is easy to achieve using .NET but then my target developers must also be using .NET. If I enable COM in my DLL then I enlarge my target market a bit, however I would like to include C++ (unmanaged) developers and perhaps even LINUX and MAC developers in my target market. Is there a language/environment combination in which I might be able to manage this?
I have looked at the Qt platform but I don't know how I would enable object inheritance from a Qt DLL. I also can't find out how (unmanaged) C++ applications can consume COM (or .NET) DLLs.
So, to summarise:
1. I am trying to choose a suitable language/environment combination.
2. I want developers from many languages/environments to be able to use object inheritance from my DLL.
3. C++ and/or Qt may be part of the answer but I am not sure.
4. What happened to CORBA? Would that have been the answer?
Any COM or object library experts out there, please respond.
Cheers and thanks for any help.
|
|
|
|
|
I have the scenario where i need make the calls to C# APIs from ATL COM Client application and i have to pass array of IUnknown* objects.
How to achive this? Can any one help me?
Regards
Shankar
|
|
|
|
|
Hi,
I created a component and i did many QueryInterface calls on that component. Finally in the distructure i am calling Release on that component but my component is not getting released. Even i use smart pointers rather than normal pointers also my component is not getting released. Is there any way/tool available to find the reference count of a component?
E-Ramu
|
|
|
|
|
Ramu.e wrote: Is there any way/tool available to find the reference count of a component?
Nope, AFAIK. Anyway the IUnknown::Release method should return just the reference count (since you created the component then you have full control on). According to documentation [^] the value should be used for diagnostic/testing purposes only, i.e. it's exactly what you need.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
Hi,
I am getting this compilation while passing lpszFileName which is a char[260] to GetPrivateProfileInt which accepts LPWSTR. Can I know how to typecast this inorder to avoid compilation error.
Thanks,
Venkat
|
|
|
|
|
What has it to do with COM ?
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
hi,
If u want to convert from char to LPWSTR
like below:
L"Example" or _T("Example")
Before that Character Variable to use 'L' or _T ;
This Will convert char to Unicode Char
Regards
ArunKumar
VC++ ,COM,MFC
|
|
|
|
|
Hey guys,
I don't know much Windows programming (and my C++ is a little rusty), I'm hoping you all can give me a hand. I'm trying to instantiate an IShellMenu object (http://msdn.microsoft.com/en-us/library/bb774901(VS.85).aspx).
MSDN says to create an object I need to: "call CoCreateInstance with the rclsid parameter set to CLSID_MenuBand and the riid parameter set to IID_IShellMenu. You must first initialize the interface by calling IShellMenu::Initialize, and then initialize the menu band by calling IShellMenu::SetShellFolder."
The first step is easy enough, I'm doing this:
IShellMenu *aTest;
HRESULT aRes = CoCreateInstance(CLSID_MenuBand, NULL, CLSCTX_INPROC_SERVER, IID_IShellMenu, (void **)&aTest);
But I'm running into trouble when I call aTest->Initialize() . More specifically, the first parameter needs to a pointer to an IShellMenuCallback object and I can't figure out how to instantiate something that implements that interface. Ideally, this is what I'd like to do:
class CallbackTestImpl1 : public IShellMenuCallback
{
public:
CallbackTestImpl1() { }
~CallbackTestImpl1() { }
HRESULT STDMETHODCALLTYPE IShellMenuCallback::CallbackSM(LPSMDATA psmd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
return S_OK;
}
};
IShellMenu *aTest;
HRESULT aRes = CoCreateInstance(CLSID_MenuBand, NULL, CLSCTX_INPROC_SERVER, IID_IShellMenu, (void **)&aTest);
IShellMenuCallback *aCallbackTest = new CallbackTestImpl1();
aRes = aTest->Initialize(aCallbackTest, -1, ANCESTORDEFAULT, SMINIT_DEFAULT);
However, Visual Studio complains about my new CallbackTestImpl1() line claiming that it cannot instantiate abstract class. I've looked through the header file that declares IShellMenuCallback (shobjidl.h ) and can't find any other methods that I'm not implementing. Am I missing something obvious or is there a better way to instantiate something that implements the IShellMenuCallback interface?
Any help would be much appreciated!
|
|
|
|
|
You need to implement the standard IUnknown interface methods: IUnknown::QueryInterface, IUnknown::AddRef, and IUnknown::Release.
imo
|
|
|
|
|
http://www.codeproject.com/KB/shell/shellextguide1.aspx
if you refer to the url which is above , you will find the answer
good luck!
nice to meet u
|
|
|
|