|
Add new interfaces to the coclass via IDL. Compile the IDL file.
Kuphryn
|
|
|
|
|
I am designing OPC Server(ole for process control) custom interface using VC++6.0
com/dcom.i have to design a EXE server component.
My requirement is to implement as many as 8 interfaces in a single class.i am
using ATL COM APPwizard-exe server.in it when i am trying to implement interfaces
through insertmenu->NEW ATLobject it is allowing only one interface at a timeto a
class, but when i am repeating the same process again it is creating separate class &
not allowing to give the same class name.
Here my doubt is can i give more than one interface to a class going through ATL
COM APPwizard,if possible HOW ?
I too tried through Insert->New Class &inserted a new Atlclass,there i was able to
give at best 3 interfaces but it won't satisfied my requirement.
satish kumar silla
Larsen& Tubro
mumbai
|
|
|
|
|
Hi,
I want to load HTML code from file to MSHTML :
<br />
HGLOBAL hMemLoad = GlobalAlloc(GPTR,(strlen(pBuffer)+1)*2);<br />
WCHAR* pwBuff = (WCHAR*) GlobalLock(hMemLoad);<br />
MultiByteToWideChar(CP_ACP,MB_COMPOSITE,pBuffer,-1,pwBuff,strlen(pBuffer));<br />
GlobalUnlock(hMemLoad);<br />
<br />
HRESULT hRes = 0;<br />
IStream *pStreamLoad; <br />
CreateStreamOnHGlobal(hMemLoad,FALSE,&pStreamLoad);<br />
<br />
IPersistStreamInit *pStreamInitLoad;<br />
hRes = pHtmlDoc2->QueryInterface(IID_IPersistStreamInit,(LPVOID*) &pStreamInitLoad);<br />
<br />
pStreamInitLoad->InitNew(); <br />
pStreamInitLoad->Load(pStreamLoad);<br />
pStreamInitLoad->Release();<br />
<br />
pStreamLoad->Release();<br />
<br />
GlobalFree(hMemLoad);<br />
But, when I try :
<br />
IHTMLDocument3 *pIHD3;<br />
hRes = pHtmlDoc2->QueryInterface(IID_IHTMLDocument3,(LPVOID*) &pIHD3);<br />
IHTMLElementCollection *pColl;<br />
pIHD3->getElementsByTagName(L"a",&pColl);<br />
long l;<br />
pColl->get_length(&l);<br />
<code><br />
<br />
to get number of items, I getting 0. ;-(.<br />
<br />
Can somebody tell me what I do wrong ?<br />
Thanks, <br />
Luda
|
|
|
|
|
If you replace L"a" with L"*", does it still return an empty collection ?
|
|
|
|
|
I have a component written with VC++ 6.0. Works perfectly with VB 6.0 by just adding the ATL component to the project and slapping it onto a form. Very easy.
However, How do I do the same think in VC++ 6.0 MFC CDialog-based form? I know I have to add the component's *.h file and *_i.c to the dialog's *.cpp file, then call CoCreateInstance(), but how do I add this visual component to the dialog?
|
|
|
|
|
What "visual component" are you referring to? Is the COM object an ActiveX?
Kuphryn
|
|
|
|
|
I created a custom C# property page for Outlook XP, and add it to the Tools | Options.. dialog using the following code in my OnStartupComplete() handler:
m_outlookApp.OptionsPagesAdd +=<br />
new ApplicationEvents_10_OptionsPagesAddEventHandler(<br />
this.OnOptionsPagesAdd );
public void OnOptionsPagesAdd( PropertyPages pages )<br />
{<br />
if ( m_rxPropPage == null )<br />
m_rxPropPage = new Rx5UI.RxPropPage( this.m_nameSpace );<br />
<br />
pages.Add( m_rxPropPage, "Rhythmyx" );<br />
}
The problem is that the property page tab text is set to "Untitled" instead of the expected string ("Rhythmyx") passed to the Add() method (see attached illustration) -- why is that?
Another issue I'm struggling with is how to get a reference for the PropertyPageSite interface -- in VB6 (based on http://www.cdolive.com/prool2k.htm), the code looks like:
Private Sub UserControl_InitProperties()<br />
'Init the PropertyPageSite variable<br />
Set oSite = Parent<br />
...<br />
End Sub
However, unlike ActiveX controls, neither System.Windows.Forms.UserControl or its parent implement the PropertyPageSite interface. Does anyone know what the C# equivalent to this code is?
Thanks,
--
Roy
|
|
|
|
|
Hi!
I need to serialize some GDI+ stuff and for that it seems I need to use the
IStream COM interface.
For the rest of the serialization I use CFile. I tried this but it throws a
memory exception:
<br />
void CViewCoverPage::Serialize(CArchive& ar)<br />
{<br />
...<br />
<br />
COleStreamFile* pOleStream = (COleStreamFile*)ar.GetFile();<br />
IStream* pIStream = pOleStream->GetStream();<br />
m_pLogo->Save(pIStream,...);
...<br />
}<br />
It seems any operation I try with the IStream object results in an access
violation.
Do I need to initialize it in some way??
What am I missing here??
Thanks
/Anders
|
|
|
|
|
Check out Paul Dilascia's MSDNMag article at http://msdn.microsoft.com/msdnmag/issues/02/02/c/default.aspx.
Regards,
--
Roy
|
|
|
|
|
Help, can anyone please tell me the different between COM ActiveX and OLE?
How about atomation server?
|
|
|
|
|
I am a beginner but here's how I see things!
+ OLE is an older version of COM
+ COM and ActiveX are the same. ActiveX components are usually graphical e.g. a form control whilst COM are often UI-less controls such as a Database object
+ Automation server is an app that enables a client app use OLE. For example MSWord uses OLE to open up MSPaint to edit a graphic file. The menus change depending which app is working on the document.
Hope this helps!
Davy
Blog for Software Testing, Bugs, Quality, Security and Stability - www.latedecember.com
News From Scotland - The Angus Blog and The Dundee Blog
My Personal Blog - Homepage.
|
|
|
|
|
Compiles fine using MIDL. (VC++6 SP4)
|
|
|
|
|
Yeah, I'm able to compile the genrated IDL with MIDL. However, when I import the generated ID into another IDL, MIDL still gives me the error.
|
|
|
|
|
MIDL2020: error generating type library
The type library could not be generated. One possible cause of this error is specifying a path to the IDL file that is longer than 126 characters. Oleaut32.dll does not support path names longer than 126 characters.
With best wishes,
Vita
|
|
|
|
|
The IDL file is in the same directory as the project.
|
|
|
|
|
I can't seem to find any examples of how to use IMAPI (Image Mastering API) in VB.Net to burn cd's with. I saw a couple of thing indicating it was possible, but I can't find any samples.
Well, I take that back I found one sample, but it's for the WinXP environment using C++, and we are not and will not be using XP at work anytime soon. So, if anybody has any example, it would be greatly appreciated.
Daniel
|
|
|
|
|
|
Were can I get a SDK/Control/API for AuthenTec FingerLogic USB Scanner...
Namely a free one, don't want to pay 300US just so I can find out that what I want to do won't work anyway.
Please Help.
|
|
|
|
|
Hi All
I have a Active X container application which implements the following
interfaces
IDataObject
IDispatch
IOleContainer
IOleInPlaceActiveObject
IOleInPlaceObject
IOleItemContainer
IOleObject
IOleWindow
among others . I have got this info from OLEVIEW..
The source code for this container application is not under my control. I
just have the .exe.. The internals are also hidden. I have only
the required header files..
Now my requirement is to come up with a ActiveX control (a simple dialog
with 2 buttons controls).
The click event of one of these button controls should embed a word
document/excel document in the container....
Now I am not able to make this work....
I was just wondering that with the interfaces the container exe supports,
whether it's at all possible to do such a thing.. Is it necessary for the
container app to implement IOleDocument. It's not doing that. I got this
info through OleView...
If not then how should I approach.
I am trying to do the following way. I have this code in OnCreate function
of my Active X controll...
IOleClientSite* pCSite = GetClientSite();
IDispatch *ptr = NULL;
//pCSite-QueryInterface(&ptr);
//IOleObject *pObject;
//pCSite-QueryInterface(&pObject);
IOleContainer* pOleContainer = NULL;
pCSite-GetContainer(&pOleContainer);
IOleInPlaceActiveObject *ptr1 = NULL;
pOleContainer-QueryInterface(&ptr);
ptr-QueryInterface(&ptr1);
IOleObject* ptr2 = NULL;
ptr1-QueryInterface(&ptr2);
IMoniker *pMon;
CLSID clsid;
CLSIDFromProgID(L"Word.Application",&clsid);
CreateClassMoniker(clsid,&pMon);
ptr2-SetMoniker(OLEWHICHMK_CONTAINER, pMon);
MSG msg;
CWnd* parent;
parent = GetParent();
m_parentWnd = parent-m_hWnd;
parent-GetClientRect(&(m_aClientRect));
pSite-DoVerb(OLEIVERB_INPLACEACTIVATE,
&msg,m_CSite,0,m_parentWnd,&m_aClientRect);
I have come up with code with my own intuition. I am not very sure whether
I have understood the functionality of SetMoniker properly..
Any suggestions will be of great help..
Regards
Rajdeep
Rajdeep
|
|
|
|
|
Hello!
I wrote a simple DCOM client(MFC)/server(ATL) application.
All seem to work perfectly when both client and server run on the same WinNT 4.0 machine.
When I try to move the server to another WinNT 4.0 remote machine (on the same NT domain) I get an error from the IConnectionPoint::Advise() function.
The situation is:
- the client calls CoInitializeSecurity() to give full access to the server when it calls back the client
- the server is registered on both machine and the .tlb as well.
- dcomcnfg has been used on the server to launch the server application as a specific user (a domain user that is also in the administrators' group of that machine)
- dcomcnfg has been used on the server to allow EVERYONE to "launch", "access" and "configure" the server application.
- dcomcnfg has been used on the client to allow EVERYONE to "launch", "access" and "configure" avery DCOM application (as default DCOM property)
- obviously the "Enable DCOM on this machine" is set for noth client and server.
I've found thousand of Q&A on the net describing this problem, but the solutions given were always not fitting.
I've used MS Visual C++ 6.0
P.S. the application is a sort of messanger that I would use to use in my office network among friends to inform each other when it's lunch time to have a common appointment. If somebody coud helpme I can send the copmlete code as zip file.
Thank you in advance
Faberge
Faberge
|
|
|
|
|
Howdy,
Can someone pass me a pointer to a "how to" on adding a toolbar to Internet Explorer, similar to the Google toolbar?
Or just give me the bumpersticker version here to help get started.
thanks
Jim H
|
|
|
|
|
See this article on CP[^].
"Do unto others as you would have them do unto you." - Jesus
"An eye for an eye only makes the whole world blind." - Mahatma Gandhi
|
|
|
|
|
Hi all,
My applicaiton needs to look for and use a currently open IE (Using IE 6) and if there's not one, then start one. The problem I'm having is that GetActiveObject will see other programs such as Excel and Word, but it always fails to see IE running. I've tried both the CLSID_InternetExplorer and using the CLSIDFromProgID function. Neither seen to work. I've also read that some Office programs need to loose focus before they register running objects, but that does not seem to help in this case either. Any ideas? Is there something with IE that I'm not setting? Can CoCreateInstance or CoGetClassObject be used to detect? Thanks for any info. -rob.
HRESULT hr;
hr = ::CLSIDFromProgID(L"IExplorer.Application",&prog_clsid);
assert(SUCCEEDED(hr));
hr = ::GetActiveObject(prog_clsid, NULL, &pUnk);
// hr = ::GetActiveObject(CLSID_InternetExplorer, NULL, &pUnk);
assert(SUCCEEDED(hr));
|
|
|
|
|
It cannot work, there are several errors :
- The COM library is not initialized. Add ::CoInitialize(NULL);
- IExplorer.Application does not exist. Use InternetExplorer.Application
- GetActiveObject returns hr which is non-null if there is an error. The error you get clearly tells you the COM library is not initialized. To get the error message, put a breakpoint just after ::GetActiveObject, run the program, then go in the watch window and type "hr, hr". You'll get the error message.
Here is a code replacement :
::CoInitialize(NULL);
HRESULT hr;
CLSID prog_clsid;
hr = ::CLSIDFromProgID(L"InternetExplorer.Application",&prog_clsid);
IUnknown *pUnk = NULL;
hr = ::GetActiveObject(prog_clsid, NULL, &pUnk);
...
::CoUninitialize();
|
|
|
|
|
I have a local server that I thought was pretty standard. When my client goes to launch it, it pauses for about a minute before returning 0x80080005 (CO_E_SERVER_EXEC_FAILURE). I broke it down and just called CoGetClassObject(), but it behaved the same way.
I googled for the error message and came up with a few postings, but all of them were in reference to remote objects and security issues. This is most definitely a local object, and the security settings are all defaults.
Anyone else seen this before?
J
"You can get anything you want at Alice's Restaurant."
|
|
|
|