|
Error code 80004005 is the generic COM error code E_FAIL . Most likely the class is registered properly, but the DLL's DllGetClassObject function returned E_FAIL .
|
|
|
|
|
The following is the results I get from a test I ran for RegMon, therefore it does not see the class as being registered at all.
This is the Regitry Monitor result (RegMon reported it NOT FOUND 3x before I received the error message)
72.23125458 MBTest.vshost.e:2632 OpenKey HKCR\CLSID\{31C0BC9B-2250-4964-A582-BA03058BAC93} NOT FOUND
This is the Registry entry under Software
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Wow6432Node\CLSID\{31C0BC9B-2250-4964-A582-BA03058BAC93}
I also tried Late Binding and it said the file was not found.
I will work on a 32 bit program and see if that works.
Michael
|
|
|
|
|
I resolved this problem by setting the Platform from Any CPU to x86.
Thanks for the help,
Michael
|
|
|
|
|
MAW30 wrote: Platform from Any CPU to x86
That's what I meant when I said 32-bit version of your application.
Sohail
modified 21-Apr-21 21:01pm.
|
|
|
|
|
I'm sure this is really basic, but if I create a Document using a COleDispatchDriver-derived interface, how can I keep that Document open after the program that created it closes?
|
|
|
|
|
I am not too sure about this, but you can implement a solution using an extra AddRef-Release from withing Document
Sohail
modified 21-Apr-21 21:01pm.
|
|
|
|
|
It depends on the Application you are automating.
For example automating Word you just call word_application.SetVisible(TRUE) but for Excel you should call excel_application.SetVisible(TRUE) followed by excel_application.SetUserControl(TRUE) and of course dont call Close() on the document.
|
|
|
|
|
I have a COM component. I want to access the component through a HTML file. I'm trying to create COM object using Java Script. Can anyone tell me how to do this?
Thanks,
Priya
|
|
|
|
|
|
Thanks Sohail.But still i'm able to access a function within the script. To access a component method i need to create a com object in the script. How should i go about creating a COM object?
|
|
|
|
|
The link I provided has a sample JavaScript code to create XMLHttp object and call its methods.
Following is the syntax of creating XMLHttp object
var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
where "Microsoft.XMLHTTP" is the version independent ProgId of XMLHttp COM Component.
In your case, replace "Microsoft.XMLHTTP" with your components ProgId.
The above said, is example of creating COM objects in IE. For Mozilla refer the same link and the example.
Sohail
modified 21-Apr-21 21:01pm.
|
|
|
|
|
Ya I have tried doing this, but when I create an ActiveXObject it throws an error which says "Automation server can't create object", when I searched through the net I got to know enabling "Initialize and script activeX controls not marked as safe" in IE solves this error. But after enabling this I'm getting a Undefined error. This made me think there should be some other way of creating my com object. When I try creating a wscript.shell object it works fine. I get a problem only when i try creating my COM object.
Priya
|
|
|
|
|
PriyaJ.2206 wrote: "Initialize and script activeX controls not marked as safe" in IE solves this error
Yes, I read about this.
PriyaJ.2206 wrote: But after enabling this I'm getting a Undefined error.
What is the error number and description? Do you get undefined error when creating object or calling its method?
Sohail
modified 21-Apr-21 21:01pm.
|
|
|
|
|
Its IE script error dialog, it shows line number, code no. as 0, error as "Unspecified error". The line number which is shows in the line at which object is created ie. var obj = new ActiveXObject("MyComponent.MyComponentObj").
Error occurs at creating object line.
Priya
|
|
|
|
|
What version of IE are you using?
Sohail
modified 21-Apr-21 21:01pm.
|
|
|
|
|
|
Does the following sample work in your browser (It works fine on my IE6 browser)
<html><br />
<head><br />
<script type="text/javascript"><br />
var xmlhttp;<br />
<br />
function testXMLHttp()<br />
{<br />
xmlhttp=null<br />
if (window.XMLHttpRequest)<br />
{<br />
xmlhttp=new XMLHttpRequest()<br />
}<br />
else if (window.ActiveXObject)<br />
{<br />
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")<br />
}<br />
if (xmlhttp!=null)<br />
{<br />
alert("Your browser does support XMLHTTP.")<br />
}<br />
else<br />
{<br />
alert("Your browser does not support XMLHTTP.")<br />
}<br />
}<br />
</script><br />
</head><br />
<body onload="testXMLHttp()"><br />
<br />
</body><br />
</html>
Sohail
modified 21-Apr-21 21:01pm.
|
|
|
|
|
Thanks Sohail,
Actually when i was trying to fix it up, I came to know that the problem is only when accessing my component. I tried creating another simple component and accessed it by creating object through ActiveXObject, it works fine.
I'm creating a CAxWindow object and embedding the html content into a toolbar using CAxWindow's create control method. Now I doubt whether creating a CAxWindow causes the actual problem.
Priya
|
|
|
|
|
PriyaJ.2206 wrote: Actually when i was trying to fix it up, I came to know that the problem is only when accessing my component. I tried creating another simple component and accessed it by creating object through ActiveXObject, it works fine.
Good.
Sohail
modified 21-Apr-21 21:01pm.
|
|
|
|
|
Hi,
I'm trying to get a c# server component to pass a user defined type array to a VB6 client component through COM+. Is this possible with early binding?
I have created a c# component that works fine in COM (it passes bool, int etc). But when I try to pass a user defined type array, the array received in VB6 is empty (0 items), even tough I force the c# component to return at least one item in the array.
Heres my code:
C# function:
public MyType[] MyTypes()
{
MyType[] mt = {new MyType()};
return mt;
}
VB6 call:
Dim tool as MySpace.Tools
Dim retVal() as MySpace.MyType
Set tool = new MySpace.Tools
retVal = tool.MyTypes
Output UBound retVal gives 0 items.
Can't I pass arrays like this between C# and VB6 in COM+?
What is the solution to my problem?
Thanks in advance!
BR
Øivind
|
|
|
|
|
try return them as Object s
Cheers,
Suresh
|
|
|
|
|
Hi all,
I have static lib which i want to convert into COM DLL. so have write an IDL file.
In this IDL file i have to define a structure which contains another structure COLOR which is defined in "Gdiplus.h".
My question is whether i can add this header file "Gdiplus.h" in the IDL file?
If yes then how. note that after including the "Gdiplus.h" i have mention its namespace also which is Gdiplus.
I have done it by including #import "Gdiplus.h" but error such as this is generated
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\Gdiplus.h(25) : error MIDL2025 : syntax error : expecting an interface name or DispatchInterfaceName or CoclassName or ModuleName or LibraryName or a type specification near "namespace"
The IDL file for your reference...
//----------------------------------------------------------------------------
// File: Control.idl
//
// Desc: Interface definition for the IControl
//
//----------------------------------------------------------------------------
import "oaidl.idl";
import "ocidl.idl";
import "Gdiplus.h";
using namespace Gdiplus;
cpp_quote("// Structure containing the various color details of the meter display")
typedef struct _ColorInfo
{
Color NeedlePointerColor;
Color NeedleJointColor;
//Color TextColor;
COLORREF TextColor;
Color LargeGridColor;
Color SmallGridColor;
Color BackGroundColor;
// Constructor
_ColorInfo()
{
NeedlePointerColor = Color(255,163, 163, 163);
NeedleJointColor = Color(255,255, 255, 0);
//TextColor = Color(255,255, 255, 255);
TextColor = RGB(255, 255, 255);
LargeGridColor = Color(255,255, 255, 255);
SmallGridColor = Color(255,255, 255, 255);
BackGroundColor = Color(255, 0, 0, 0);
}
// Copy Constructor
_ColorInfo(const _ColorInfo &ColorInfo)
{
NeedlePointerColor = ColorInfo.NeedlePointerColor;
NeedleJointColor = ColorInfo.NeedleJointColor;
TextColor = ColorInfo.TextColor;
LargeGridColor = ColorInfo.LargeGridColor;
SmallGridColor = ColorInfo.SmallGridColor;
BackGroundColor = ColorInfo.BackGroundColor;
}
// Assignment operator overloading
_ColorInfo & operator = (const _ColorInfo &ColorInfo)
{
NeedlePointerColor = ColorInfo.NeedlePointerColor;
NeedleJointColor = ColorInfo.NeedleJointColor;
TextColor = ColorInfo.TextColor;
LargeGridColor = ColorInfo.LargeGridColor;
SmallGridColor = ColorInfo.SmallGridColor;
BackGroundColor = ColorInfo.BackGroundColor;
return *this;
}
} COLORINFO;
//-------------------------------------------------------------------------
// IControl Interface
// Desc: Exposes initialization method for the Control dll
//-------------------------------------------------------------------------
[
object,
uuid(5BC8F091-28C0-42aa-AD10-AA78E612D6AA),
version(1.0),
helpstring("IControl Interface"),
pointer_default(unique)
]
interface IControl : IUnknown
{
cpp_quote("// Displays the control")
[id(2), helpstring("method ShowControl")]
HRESULT ShowControl( );
}
//{5E3CE754-FCC9-454e-B4BE-D1DD470BAF1E}
//{ 0x5e3ce754, 0xfcc9, 0x454e, { 0xb4, 0xbe, 0xd1, 0xdd, 0x47, 0xb, 0xaf, 0x1e } };
[
uuid(5E3CE754-FCC9-454e-B4BE-D1DD470BAF1E),
helpstring("Meter Class")
]
coclass Meter
{
[default] interface IControl;
};
Can anyone help me.
Thanks,
Bidesh
|
|
|
|
|
MIDL keyword Include[^]may help.
Sohail
modified 21-Apr-21 21:01pm.
|
|
|
|
|
Hello everyone,
I am writing C# COM server (managed code). Since there is no QueryInterface, DllGetClassObject like in C++ native code, I am wondering how to know which coclass is initialized and which method is invoking by client?
I have such question is because I only develop COM server, and there are some dll level error (dll no longer available, something like this), so I think COM client may use some coclass/methods which my COM server does not support. But I do not have COM client source codes, so I am wondering how to get the information (which coclass/method client is using).
thanks in advance,
George
|
|
|
|
|
Hi,
I have a method which has to return the array of BSTRs. I'm giving the method here, please let me know if I'm doing anything wrong.
<br />
HRESULT Login([in] BSTR UserName, [in] BSTR Password, int maxUsrCnt , [out]int *UsrCnt, [out, length_is(,*UsrCnt), size_is(,maxUsrCnt)] BSTR *LoggedUsers);<br />
the size of the array to be returned is not known at the time of calling.
When I use this method, the first string is coming properly, but other strings are not coming.
Please suggest an answer.
Regards,
Raja Pratap
|
|
|
|