|
shameless bump
|
|
|
|
|
shameless bump
|
|
|
|
|
Hmmm .. here's something that might not work but might be worth trying.
Create a simple COM Object that you can use from script which exports a method that will return the pointer you get into a VBScript variant or object.
Dim myCom as new mylib.mycomobject
Dim myObj as Object
Set myObj = myCom.GetWindowObject()
Once coded, step thru code and look at myObj type in watch window or local vars. This might give you a hint althought its not guaranteed it will work.
|
|
|
|
|
I just read an article on programming the IWebBrowser2 using plain C and it raised a burning question for me so I had to double post
Please see the following
http://www.codeproject.com/com/cwebpage.asp?df=100&forumid=13828#xx897965xx[^]
How did the author know what interfaces were required???
It's killing me...i can't find info on this anywhere
I used the Ole Com object viewer tool and it doesn't tell me what i'm looking for...for IWebBrowser2 anyways
TIA
How do I print my voice mail?
|
|
|
|
|
|
GUYS ,
Have you tried using a console (NOT MFC) to access the functions you created in ActiveX(exe)?
Simple problem, make a simple functions in ActiveX (EXE), like adding of two integer and returning the sum of it to the client, save the sum to server variable + the new sum. On the other side, the client can call the ADD function by giving two parameters (A,B) and receive the sum of it, AND can ask for the value of all the sum been store in the Server variable.
grrrrrrr8888888....
|
|
|
|
|
hello,
i am new here on this site and have one quetion and hope to find good helpers here.
I want to fetch the outlook contacts. My problem is the outlook warning dialogbox. the user can give
permission for some minutes.
what i have to do ?? I have to write an Outlook-Addin?
thx a lot
|
|
|
|
|
I'm writing a client for a COM object for a company and come across this line in the disassembled tlb:
void Initialize([in] GetRefTypeInfo failed * pIConfig);
I realize that the reference type is probably defined in a separate tlb - which I don't have. Is there any way to retrieve the pointer type or otherwise work with this without having the type definition or any other documenation on this component.
|
|
|
|
|
I'm confused
When you derive an C++ class from an interface like IWebBrowser2 do you ALWAYS have to supply your own implementation of AddRef() , etc...???
Could you not do something like:
class CMy_IClass : ISomeChild, CDefaultImp
Where CDefaultImp is a generic base class which simply implements your AddRef() etc...?
Isn't AddRef() usually the same boring code anyways???
Thanks
How do I print my voice mail?
|
|
|
|
|
Hello Hockey,
The problem is that ISomeChild, being derived from IUnknown, dictates that your implementation class (e.g. CMy_IClass) implement the 3 basic IUnknown methods (i.e. AddRef(), Release() and QueryInterface()).
The implication is, of course, that you will need to provide the implementations for these methods. However, you can always use your base class's implementation of these methods, e.g. :
ULONG CMy_IClass::AddRef()
{
return CDefaultImp::AddRef();
}
Hope the above helps.
- Bio.
|
|
|
|
|
Hockey wrote:
When you derive an C++ class from an interface like IWebBrowser2 do you ALWAYS have to supply your own implementation of AddRef(), etc...???
Yes. Without AddRef() , Release() and QueryInterface() there would be no COM.
Hockey wrote:
Isn't AddRef() usually the same boring code anyways???
Have you looked at ATL at all? Sounds like you need it. It does all this, and more.
--
Denn du bist, was du isst!
Und ihr wisst, was es ist!
Es ist mein Teil...?
|
|
|
|
|
hi there,
while working on an CFileDialog that automaticly selects all files in the browse-dialog
like this one from here
http://www.codeproject.com/dialog/select_all_button.asp
But I get a zero handler for the IShellBrowser
by calling this line , causing an abort
IShellBrowser* pShBrowser =
(IShellBrowser*)::SendMessage( p->m_hWnd, WM_GETISHELLBROWSER, 0, 0 );
---
the hook is assigned to the dialog that reacts properly. :
static UINT_PTR CALLBACK DialogHook(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
{
if (uMsg==296) // init finish
{
//jumps in here
IShellBrowser* pShBrowser =
(IShellBrowser*)::SendMessage( p->m_hWnd,
WM_GETISHELLBROWSER, 0, 0 );
}
}
btw,hwnd returns the right handler to my CFileDialog
any ideas how to get the IShellBrowser from the CFileDialog ?
thanks in advance,
zerwuff
|
|
|
|
|
i'm trying to add a button to the internet explorer toolbar. The button is supposed to hide and show an explorer bar that I customized. I have succeeded in adding the required keys in the registry (as instructed in MSDN library) and I can add the button by going to tools -> customize and adding the button from the list of availabe buttons. I am trying to do this process automatically so that once the user runs the program and opens internet explorer, the button automatically appears on the explorer bar. Does anyone have an idea how to do that?
I'm using visual C++ 6 on Windows XP Home edition.
Rola
|
|
|
|
|
Could someone tell me what on Earth are 'non-exposed interfaces' ?
All I know is that a COM object can have interfaces, which can be accessed by using QueryInterface , for example. I would assume that an interface needs to be exposed by the object in order for QueryInterface to be able to retrieve it.
This problem relates to the Microsoft Knowledge Base Article Q281417 (Found here[^]) and the ability to accomplish the same on Visual C++. Even if I queried for any interface on the object, then queried for IUnknown and queried for the target interface, it always fails with E_NOINTERFACE .
Any ideas, suggestions or other ?
-Antti Keskinen
----------------------------------------------
The definition of impossible is strictly dependant
on what we think is possible.
|
|
|
|
|
I had gone thru Q281417. The term non-exposed they used in the sense non-creatable . That means u can not say
Private Obj As <big>new </big>IMsTscNonScriptable
Only thing u can do is to get a reference to an existing IMsTscNonScriptable object in the terminal server client connection activex. ie,
Private Obj As IMsTscNonScriptable<br />
set obj = MsTscAx1.Object
If u chk the IDL of the activex u can see the "noncreatable " keyword in the attribute section of IMsTscNonScriptable declaration. This noncreatable attribute will prevent a client from queryinterfacing that interface.
rgds..mil10
|
|
|
|
|
Thank you for the swift answer.
The next logical question is naturally: how to get this interface in the VC++ side. I tried looking for the ActiveX control in the Running Object Table, but it doesn't register itself there.. Also, using this method also requires you to use QueryInterface, which will result in a failure..
-Antti Keskinen
----------------------------------------------
The definition of impossible is strictly dependant
on what we think is possible.
|
|
|
|
|
Antti....
As per the MSDN sample code in vb we can get an existing IMsTscNonScriptable pointer as follows:
Private Obj As IMsTscNonScriptable<br />
set obj = MsTscAx1.Object
So the VC++ equivalent of the above code is:
CComPtr<IMsTscNonScriptable> pIMsTscNonScriptable;<br />
m_MsTscAx1.Object( reinterpret_cast<void**>(&pIMsTscNonScriptable) )
Here i assume u will insert the activex control into ur app and will add a member variable to it named m_MsTscAx1 .
Unfrntly i don't have that ocx installed on my mechine. So i am not sure whethr it is a moniker provider and is supposed to be in the ROT.
hope this will help... rgds...mil10.
|
|
|
|
|
The ActiveX control was added to the dialog template, and I used 'Add Member Variable' to add a control variable into it. Visual Studio automatically generated the IDispatch wrapper class for the object. However, looking at the class declaration, it's derived from CWnd.
Thus, the member variable doesn't have a function called 'Object'. I tried attaching the CComPtr object into the m_MsTscAx1, and although this compiled properly, the attempt to call any methods resulted in an assertion.
Any more suggestions ?
-Antti Keskinen
----------------------------------------------
The definition of impossible is strictly dependant
on what we think is possible.
|
|
|
|
|
Problem solved.
As the m_MsTscAx1 is derived from CWnd , it also has a method called CWnd::GetControlUnknown , which returns a pointer to the existing IUnknown interface of the object. This interface pointer can be used to query for other existing interfaces on the object. Even those interfaces that are marked as 'non-creatable' can be accessed in this way, because querying for the interfaces doesn't create new interface objects.
The pointer returned by GetControlUnknown must not be released, as that might terminate the object (all interfaces released). However, all interfaces queried from here on should be released in the normal way. The key issue here is that QueryInterface only casts the given IUnknown pointer to the target interfaces, while adding the reference count at the same time.
-Antti Keskinen
----------------------------------------------
The definition of impossible is strictly dependant
on what we think is possible.
|
|
|
|
|
its cooool man.. so u did it.
ur correct, noncreatable does not prevent from queryinterfacing an interface. More specifically noncreatable attribute is for a coclass, not for an interface. It just prevents that coclass from being instantiated. Also, if u r able to queryinterface that interface from the activex IUnknown, then that terminal cleint interface is not a separate coclass and not noncreatable attributed. I revoked the defenition i had given for a non exposed interface. I rephrase it as just another interfaec under the activex coclass, apart from the activex dispinterface and its event dispinterface .
What exactly it means is Scripting engins like Vbs need at least one IDsipatch derived interface. So normally COM servers that expect scripting engins as clients will always derive interfaces from IDispatch. But the limitation of COM is that a coclass can have only one IDispatch implimented interface.(Well, COM_INTERFACE_ENTRY2 is there to specify which Idispatch is 2 b considered) So if we need to have more than one interface in a coclass, then the remaining interfaces shud b iunknown derived (to make it compliant with vbs like apps). And As far as vb is concerned these IUnknown derived interfaces are "non exposed ". That means vbs like clients can't get it directly, but they can queryinterface the IDispatch. If ur familiar with vb, u cud catch it easly. Or more clearly u can leave that term, it is specificaly for vb programmers we can say.
BTW GetControlUnknown is just an alternative to invoke mthds on an activex. As per the msdn sample the vb code gets the terminal cleint interface thru the object method. if such a method is there in the activex, then ofcource that method will be there in the wrapper class also. coz, as u said wrapper class is just an idispatch wrapper for invoking methods on the activex. So it will contain all the methods in the activex. if u do a search for "object" in the wrapper class header file, it will be there. if it is not there, then that msdn sample code is wrong. i don't have that control installed on my mechine. generate the idl of that ocx and chk for "object" in the idl.
rgds...mil10
|
|
|
|
|
I need a code example for a custom-DLL.
How get I access from a server to my I/O device?
My development environment is visual c++.
Thank you.
Ronny
|
|
|
|
|
A program I wrote in C++ is running under local system account (a service is executing it) in windows XP professional edition. The program is tiring to connect to a DCOM server located on the same PC and fails. This is the error information:
Product: Windows Operating System
ID: 10010
Source: DCOM
Version: 5.0
Component: System Event Log
Symbolic Name: EVENT_RPCSS_SERVER_START_TIMEOUT
Message: The server %1 did not register with DCOM within the
required timeout.
Explanation
The Component Object Model (COM) infrastructure tried to start the
named server; however, the server did not reply within the required
timeout period. There might be a deadlock, or the program might
not have responded to the server initialization code within the
timeout period of two minutes.
When I'm running the same program under a regular user account its work
perfectly. Why is that???
Thanks for your help
|
|
|
|
|
hi boss .. try this..
1) Run dcomcnfg.exe
2) Select ur Dcom server
3) Click properties
4) Goto security tab
5) Click on "Use custom access permissions"
5.1) Click on "Edit" button
5.2) Add "SYSTEM" account from the listbox
6) Click on "Use custom launch permissions"
7) Goto 5.1
rgds..mil10
|
|
|
|
|
Thank alot for your help.
It works like a charm !!
|
|
|
|
|
Hi, there.
I'm a Unix or embeded programmer and well... have good exp. with c/c++, assembler and whatever except "MS" things. Btw, now I have to do Active-X programming with VC. WTF!!!
So, I would like to ask you two questions:
1. Is it possible to learning Active-X without knowing COM or ATL, and with little bit VC exp.(Just little bit more than "hello world")?
2. Do you think "How long do I take to know Active-X"?
Please give a comment, suggestion or whatever... to me
Sorry for my poor English and Thank you for your help.
=^.^=
|
|
|
|