|
Hi,
I am new to COM Component development. I dont have that much idea. So plz give me sample code or sample program. Thanks in Advance..
regards,
kannak....
kannak
|
|
|
|
|
|
Hi David...
Thanks for responding..i will go through ....
Regards,
kannak......
kannak
|
|
|
|
|
When I try to play an .avi file in a Windows Media Player component, it is like 1 second black between each new play. It says 'Media has been found' (a translation of myswlf of the Dutch version). Is this solvable? The avi file is a copy of the Vista copy file dialog which musn't be black between every loop.
Thanks.
|
|
|
|
|
Sorry for asking this question too fast - I found out that this component can play without any black pause in between!
Thanks.
|
|
|
|
|
How to set output parameter value to javascript use invoke function's pDispParams.
in javascript
<script type="text/javascript"><br />
var fVal;
external.GetFloat(fVal);<br />
</script>
How do it in Invoke function???
STDMETHODIMP CImpIDispatch::Invoke(<br />
DISPID dispIdMember,<br />
REFIID ,<br />
LCID ,<br />
WORD wFlags,<br />
DISPPARAMS* pDispParams,<br />
VARIANT* pVarResult,<br />
EXCEPINFO* ,<br />
UINT* puArgErr)<br />
{<br />
return S_OK;<br />
}
Hongjun Ge
|
|
|
|
|
You have no chance to transmit any value to javascript by parameter in parameter's list of GetFloat function. Only by [out,retval] parameter of one. I.e. by syntax "fVal = external.GetFloat();". For this action, you should assign right value to pVarResult parameter of CImpIDispatch::Invoke.
With best wishes,
Vita
|
|
|
|
|
Thanks for your reply.
In msdn document descriptions like below.Why they can implement the oCustCalenderObj parameter as out.
http://msdn.microsoft.com/en-us/library/aa770041(VS.85).aspx[^]
<SCRIPT language="JScript"><br />
function MyFunc(iSomeData)<br />
{<br />
var oCustCalendarObj;<br />
external.GetCustomCalender(oCustCalenderObj);<br />
oCustCalerdarObj.doStuffWithIt();<br />
.<br />
.<br />
.<br />
}<br />
</SCRIPT>
Hongjun Ge
|
|
|
|
|
I don't know, but all I said is correct. I didn't meet with GetCustomCalender declaration, but "Get" prefix requires [out,retval] parameter.
AFAIK JScript passes all arguments by value, so server doesn't have a way to modify them. And there is only one case - VARIANT* pVarResult parameter of Invoke.
You can assign some value to this parameter and view the result.
With best wishes,
Vita
|
|
|
|
|
Thanks for your reply. My be there have some way to implement it that we didn't find, But thanks again.
Hongjun Ge
|
|
|
|
|
I'm automating MS Word and so far I've found out that the easiest way to do it is to put as much of the code as possible in VBA macros (in a *.dot file loaded through COM automation), and call those macros.
m_Application.CreateDispatch(_T("Word.Application"));
...............
m_AddIns.AttachDispatch(m_Application.get_AddIns());
m_AddIn.AttachDispatch(m_AddIns.Add(_T("MyMacros.dot"), &vtOptional));
...............
m_Application.Run("MyMacro1");
The problem is I can't pass arguments to MyMacro1, and I need to in some cases. CApplication::Run accepts only 1 parameter and that's the macro name. But how can I pass additional arguments to the macro?
There is sufficient light for those who desire to see, and there is sufficient darkness for those of a contrary disposition.
Blaise Pascal
|
|
|
|
|
Hello,
I am trying to call an activeX method from JScript in IE6. The method we are trying to call takes two arguments: one long which is the dimension of the array (of bytes) passed as the second parameter. In some cases the size can be zero and the array undefined and we are in that case.
How can I call this method from my JScript code? I tried obj."method(0, null);" but I get an incompatible type error. I also tried using Scripting.Dictionary object but to no avail. Has anyone a tip for this ?
Thanks,
|
|
|
|
|
I'm building .NET application that uses DirectX API for web camera device rendering.
I'm using DirectShowNet Library as wrapper for more info see here DirectShow.NET[^]
When I create instance of for ICaptureGraphBuilder2 interface and call RenderStream like bellow
<br />
Guid cat = PinCategory.Capture;<br />
Guid med = MediaType.Video;<br />
<br />
hr = capGraph.RenderStream(ref cat, ref med, capFilter, null,null)<br />
where capFilter is my source filter,everything is OK.
But after releasing the resources and recreating the graph and the ICaptureGraphBuilder2 instance when I call the method RenderStream it failes with return code -2147024809 or HRESULT E_INVALIDARG.I've tried to call it like
<br />
hr =capGraph.RenderStream(ref cat, ref med, capFilter, null,target) <br />
,where target is my target filter,but this failes again with the same return code.When I change the category to PinCategory.Preview I'm also getting the same result.
I can't avoid using ICaptureGraphBuilder2,because I need to control the resolution of the device.
Do you know how to fix it?
Thank you very much!
|
|
|
|
|
I have solved the problem with using DirectShowLib ,newer version of the API.
Now everything works fine!

|
|
|
|
|
Hi guys,
working with some closed-code client/server application - the client reaches the server using a COM object thats defined by a InprocServer32 DLL - I would like to split client and server to different machines.
DCOM at first sight cannot do it - as the COM is a InprocServer32 DLL (for remoting a LocalServer32 COM - EXE seems to be necessary - Racmgr32 only lists these COM class entries).
My first thought was to code a InprocServer32 COM EXE that provides the same classes like the InprocServer32 DLL does. After I would generate the TLB of the DLL an generate a InprocServer32 DLL that has the same classes and interfaces, but just calls the LocalServer32 EXE - which after could be remotely used by help of DCOM. I guess this has do be done because if I just deleted the InprocServer32 class entry, the current creating method in my client-EXE would not be able to deal with the LocalServer32 COM class anymore.
My question now is - would You guys do it the same way? Does anyone know a way how to make a InprocServer32 DLL being usable remotely - for example by hooking up CreateDispatch? If I would do it the way I described - does anyone see problems or shortcomings? I am thankful for every articles and informations You drop!
Thank You very much for Your ideas, thoughts and replies!
Tiger
|
|
|
|
|
A good online reference for COM programming is: Inside COM+[^], it covers alot of the same information as does Don Box's "Essential COM".
After reading your post several times (I found it a little confusing), I'm wondering: what your logic is for wanting to have your COM objects remoted from another machine, to a Local out-of-process server, and then to an in-process DLL server? Is this some kind of security scheme, or is it just not understanding the basic architecture of COM?
Also, this wasn't clear from your post: are you writing all three COM components yourself? Or, is the InprocServer32 DLL already compiled, and is a dependency for your client project?
An In-Proc server ALWAYS must be a DLL. The COM Library uses the registry entries for the COM CoClass along with the parameters the client provides when instantiating, using either CoCreateInstanceEx, or DllGetClassObject, as the case may be, to determine exactly how to configure the COM Server. It's actually more complicated than that.
Here are some of the relavant chapters from the above cited book:
Chapter Two, The Client, CoCreateInstanceEx[^]
Chapter Four: Apartments[^]
Chapter Thirteen, Executable Components[^]
Chapter Fifteen, Standard Marshaling[^]
And, of course, the one aspect of COM that mystifies everyone, Chapter Eighteen, Security[^]
Chapter Ninteen, The Network Protocol[^], is also very informative.
In answer to your original question, though, I would start out configuring my COM server to be as simple as possible, unless you have overriding security concerns. If you read Chapter Thirteen, you will see that much of the reason for creating an Out-of-Process Server instead of an In-Proc Server, is to control the actual number of COM objects being accessed simultaneously by separate client applications.
|
|
|
|
|
Hi Baltoro,
thank You for all that useful information - I am sure these links will push my project forward.
As I re-read my article, I agree with You that it's not written that clear - so I'd like to explain it more straight:
A company that quit business a while ago sold us some server application together with a client and an API to also write Your own clients to that server. All programs are compiled and I have no source - the only thing I got is a very detailed API documentation, a InProc32 COM DLL and it's includes for C++ projects. All was provided for use with Visual C++ 6.0.
The current situation is, that the server app runs together with the provided client app on workstation machines, and at night a client appwritten by me (using their API) queries the data and stores it in a central server with raid structure.
The provided server app accepts as many connections as I want (through the API-DLL-COM-Inproc32). Our bottleneck is currently the sync of all databases at night, we would like this to happen realtime. Instead of doing syncs several times a day, I would like to split the provided client and server from running together on one workstation. After the client should run on the desktop PC till API inproc32. There I would like to put sth. in between to lead the API calls through DCOM or TCP to a RAID server running the provided server app that would respond.
With DCOM it could be done like this:
-------------- Workstation ---------------------------
Client app -> Inproc32-FakerDLL -> DCOM |
------------------------------------------------------
Machine-boundary
------------- Server -------------------------------------------
| DCOM -> ActiveX-Exe -> Inproc32-DLL -> Server app
----------------------------------------------------------------
As I got no sources, I would create a fake Inproc32 COM DLL from the original API's ILD file.
Then a ActiveX exe providing DCOM support encapsulation the Inproc32 DLL running on server machine.
Now the fake Inproc32 DLL would forward through DCOM to that ActiveX-Exe-DCOM provider which would do the real calls to Inproc32-real-API-DLL on our RAID-server.
Again in other words:
What I try to do is split on a known COM-Inproc32-API and put client app and server app on different machines. Problem is - I got a ready-to-use client app that I cannot modify (compiled) and a server app that is compiled, too.
The question remaining is - is there a more elegant way without the need to writing a ActiveX-Exe that provides the COM-class of the inproc32-API for DCOM on the server machine - and a kind of fake/proxy DLL that forwards to this DCOM-ActiveX-Exe from client machines (to leave all clients-apps loading their Inproc32 DLL)? All is just for splitting server app and client app to different machines...
Let me add that we already verified - there is no license problem by doing what I try to.
Thank You very much for all Your support - I am reading the articles already!
Have a good time!
modified on Monday, August 3, 2009 9:53 AM
|
|
|
|
|
sdk_tiger,
(I'm assuming you have a sense of humor.)
See, now that second post makes it all clear,...and, by the way, I would never have suspected all that from your original post, except that you were leaving out some important details. WOW!
This sounds like something right out of SWORDFISH (2001 movie)[^]. Had you actually posted that last post originally, my response would have been:
DYH 6GJY!! BGOOC265RTG, HEY DFWQAQ!! LL8U YHJ IIRFDB, OK POQQVC47. !W! KKL: FGTMVX KPSSV QQFYHC!! 4547.0058875
(Warning, this repsonse is encrytped. By Extra-Terrestrials. It just looks like gibberish!)
OK, all kidding aside,...why would you even run this software? You have NO IDEA what it really does. Always require that the source code be availiable. Otherwise, how do you verify it's operation? What are your security requirements? I'm assuming there aren't any.
I REALLY don't know what to suggest. To me, the entire concept is implausible. I would start over and write the entire component suite from the beginning, so that I had the complete source, so that I could (1) configure diagnostic routines, if necessary, and (2) verify that it operates correctly and securily, or, can be conveniently upgraded.
|
|
|
|
|
I'm writing an application where I automate word. When the user saves the document, I need to also export it to a different format, so I have to somehow be notified when the user is saving, preferably before any saving has started.
My code for creating the Word instance is
CoInitialize(NULL);
CApplication app;
app.CreateDispatch(_T("Word.Application"));
CDocuments docs;
docs.AttachDispatch(app.get_Documents());
There is sufficient light for those who desire to see, and there is sufficient darkness for those of a contrary disposition.
Blaise Pascal
|
|
|
|
|
|
When I read the codeguru article they said that the events listed there - Startup, Quit, DocumentChange, New, Open, Close are the only events that can be captured (at least for word97 for which the article was written), and Save is not among them.
The microsoft article also seems to be written for Word2000 and above, but I would like to support also Word97.
There might be an easier way, though - using VBA macros. I found out about that while googling to find more info about the problem. It works like this - if you create a macro named FileSave this macro gets executed *instead* of the normal File->Save operation. Likewise for FileSaveAs. I tested that and it really works, I already created a *.dot file which contains those macros, and that works in Word97, too.
But there's a catch - I don't know how to load the macros in the *.dot file through automation. Do you have any ideas about that?
There is sufficient light for those who desire to see, and there is sufficient darkness for those of a contrary disposition.
Blaise Pascal
|
|
|
|
|
Hi,
i'm listing database records in grid my application environment is asp.net with C# and oracle database.after open the record,i have to implement the page navigation inside the page.i'm searching from long time how to provide the navigation to previous/next pages which are available in grid.(i.e in gmail inside the email right upper corner of email one link will be there displays the selected email num - total email count and hyperlinks along with that to navigate.based on our click on tht link it would be show the page either previous/next with out going back to inbox).how to implement this feature with out hitting the database.can u provide any sample.
with regards,
krishna
|
|
|
|
|
Hey all,
I am using the WIA 2.0 library in VB.NET to scan documents through the document feeder. I have been researching for hours just trying to figure out how to make the scanner use the document feeder instead of the glass. Could anybody please help me here. I found out that I should change the property 3088 (which is WIA_DPS_DOCUMENT_HANDLING_SELECT) to 1 instead of 2.
1 being for feeder and 2 being for flatbed. However, when I do a transfer my Canon MX330 still attempts to use the flatbed. Can anybody give me some direction here? Thanks for your time and help in advance.
Justin | CodeBase25
"Instant programmer, just add coffee"
|
|
|
|
|
Hi all,
I got into the problem where I have to inherit a COM class/object with another COM class/object. Actually I am creating a component for for reading/writting CAD entities so I have many entities with common properties so, for all the general properties I have to write the property functions in each COM class which is just duplication of code so, I just wanted to create a template base class that will have the set of properties & using which I can make the code reusable.
Structure of my component is as follows
Document has Entites has Entity information
Please suggest me what to do in this situation.
Regards,
Pankaj Sachdeva
There is no future lies in any job but future lies in the person who holds the job
|
|
|
|
|
Hi,
Please let me know that you using COM class / simple class file & export the tlb file using RegAsm command...
Don't forget to click "Good Answer" on the post(s) that helped you.
Thanks
Md. Marufuzzaman
|
|
|
|
|