The client implements event dispinterfaces (IDispEventImpl) and establishs with DispAdvise() connections with the event sources.
When software starts up client and server are created, the server starts to fire events
and the client establishs connections and receives the events.
That works in most cases fine. But some times (10%) the software hangs.
The problem occurs always at the same situation:
the server is firing events and trys to get the interface pointer with GetInterfaceFromGlobal()
while the client trys to connect with DispAdvise().
Can you please explain my this a little more in detail ? I have a clue what you are meaning but I don't understand it exactly. The server access the client STA to create the proxy but what is the client doing exactly ? And where I shouldn't lock ?
I'm not sure exactly why you do things the way you do.
If the client calls DispAdvise, then why does the server go to the GIT? The server in this case receives a proxy for the client automatically, and should simply fire its events.
Can you please clarify?
I've read a few articles here on how to create shell extentions.
There is one question that I still havent found a answer for, so I hope someone here can help me out.
Is there any way at all to intercept file deletions? When using normal file-dialogs or the explorer gui and you click "delete" on a file (either by the delete-button or by using the icon in the toolbar). The usual "Do you want to move abc.txt to the recycle bin" appears. Now, is there any way to intercept the delete command and display a custom delete dialog? So far I've only come across examples that capture the event _after_ the file has been deleted, which in my case is waaay to late.
Now why do I want to do this? I'm writing a application that syncs selected files to a network drive. But if a user changes a file and happen to delete the file (by misstake) before the file has been synced. I want to show a custom dialog warning the user that the file havent been synced yet...
I would argue that if you don't know how to make a COM interface you don't know the basics of COM. Interfaces are the cornerstone all of COM is build from.
That said, the normal starting point (in C++) is to create an .IDL file that describes your interface. This file is then compiled by MIDL which creates the type library and header files which you consume using C++. Your IDE will be able to do some of this work for you.
plz search the link
and in this site u got various projects and when u study it than u know how to make com interface ...it is really very easy to make com interface ...just go to this site
Please help me.
My problem is that I developed a COM component. I can use
to register the COM in a computer which has Microsoft Visual Studio .NET 2003. But when I use
in a computer without Microsoft Visual Studio .NET
a error appear:
LoadLibrary ("c:\COMDLL\AuthEngineCOM.dll") failed - The specified can not be found.
Could somebody tell me which dependence that I missing?
DllRegisterServer is one of the key function that needs to be implemented in a COM server (.DLL). This function needs to be exported from this DLL.
Please check if you have exported this function from your DLL. Also, you can use Dependency Walker[^] to see the dependencies of your DLL as well the functions that are exported.
I hope this helps. Let me know if you need more information.
At a guess you've built using the dll runtime and it's not present on the machine. Use a dependency viewer on the target machine and make sure all the DLLs you're component depends on are present. One can found here[^].