|
Hi,
I have a sample code in VB that I need to "translate" to VC++.
But I don't know how tu use safearrays.
Here is the VB code :
<br />
Dim pSafeArray As Variant<br />
pSafeArray = pBlock.SafeArray(0)<br />
' Loop through the SafeArray and set value to each pixel<br />
Dim I, J As Integer<br />
For I = 0 To pSize.X - 1<br />
For J = 0 To pSize.Y - 1<br />
pSafeArray(I, J) = I + J<br />
Next J<br />
Next I
pBlock is an object provided by the API I'm using
Could you help me ?
Thx,
Stephane
www.exotk.org
|
|
|
|
|
I'm trying to enumerate OLE and VB Controls of a other process. I've already found the Microsoft article (Q141414) about how to do this by using the IOLEClientSite Interface.
I've already sucessfully "entered" the process using dll injection methods, now I face the problem how to get a pointer to IOLeClientSite without using COleControl::GetClientSite() as described in the mentioned article.
Perhaps there is another method to enumerate controls I'm not aware of?
Thanks
Georg
|
|
|
|
|
The interface IShellDispatch,has an updated interface named IShellDispatch2.
How to invoke IShellDispatch2 and all the members method.
Swarup
|
|
|
|
|
hello,
i have a problem passing objects in a event function.
i created a com object which listens for incoming tcp/ip connections in the background. the listening can be started by an method which returns immediatly. then a thread is created by the com object, waiting for incoming connections, and executing an event, to inform the client.
because the event is fired from a different thread, i marshalled the event source objects in the advise function and unmarshal when firing the event. this works fine as long as i pass only simple parameters like a long.
but i want to pass an com object which i created in the receiving thread to the client. for example an object which holds information about the established connection.
but when i fire the event, the object pointer is passed to the event function. if i call methods on this event in the client, i get an error, that the esp was not saved properly across a function call. why is that? and what can i do about this? maybe i have to marshal the transmitted objects pointer in some way, but i do not know how. do i have to marshal the object in a stream, transmit the stream, and unmarshal on the other side? but would make no difference, i think, because then i have to transmit the stream object, should cause the same error.
all is running inproc and the event source interface has the oleautomation attribute for standard marshalling.
then i changed the event to a dispinterface. fired the event by the invoke method passing the object as an variant parameter. the test with vbscript host was successful. there i can access the transmitted object. i think the invoke method does something with the object.
how can i get this working with an IUnknown derieved event source interface?
many thanks for help
enrico
|
|
|
|
|
The usual mistake is a declaration of _cdecl-eventfunction instead of the _stdcall one.
SINK_ENTRY_EX(1, IID__IXXXXEvents, 1, voidGotEvent)<br />
...<br />
END_SINK_MAP()<br />
...<br />
HRESULT voidGotEvent(long Message)<br />
{<br />
...<br />
}
With best wishes,
Vita
|
|
|
|
|
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 Ltd
mumbai
|
|
|
|
|
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
|
|
|
|