|
An addition to Jörgen Sigvardsson's reply:
chk the .tlh and and the implimentation file .tli for any detailed info.
these files will be there in ur debug folder.
|
|
|
|
|
Hi Royce.. as Jörgen Sigvardsson already posted u shud have used the CoClass name instead of an Interface name in ComServerLib::IMakeKeyPtr(__uuidof(ComServerLib::IMakeKey)); . Here replace IMakeKey with ur coclass name. chk idl for the coclass name.
rgds...mil10
|
|
|
|
|
I've been working on a COM Service project for about 2 months and early in the development process, i had to generate Proxy/Stub dll.
Today, after having a very evolved project, i try to figure out which data type prevents me from using the standard marshalling libraries. I've been browsing thru the net for about 1 hour and a half, trying to find which data type was 'forcing' me to have my own Proxy/Stub dll.
Then, i figure i'll unregister my Proxy/Stub dll and see if i can still acces my COM Service. Well, it works
I guess during the growth of my project i changed whatever required that proxy/stub code and am now fully automation compliant
Just needed to share this as this is not a question, but it sure feels good to know my project is full automation compliant.
|
|
|
|
|
yess boss.. if all the datatypes are automation compliant, then universl marshalor will do tha mrdhl/unmrshl for us..
rgds... mil10..
|
|
|
|
|
Hi,
Iam using dhtml control in my application. Iam having a problem in table selection. For Example: if i put 2 * 3 table and try to select from 2row and 2 column in upwards direction it is selecting 1 row ,3 column also. And merge cells is not activating if the selection is not exact....
Kindly help...
I downloaded the dhtml edit from msdn..
Thanx.
Raj
|
|
|
|
|
I'm trying to figure out what kind of help you need but its not clear in your post.
1) What interface(s) are giving you the problem.
2) Any code sample that we can look at
3) What exactly is your goal, what do you expect your code should be doing
Try to picture yourself as someone trying to help you, what kind of information would you require to help that person.
|
|
|
|
|
Iam using a control(dhtml editor) which was downloaded from msdn.
The problem is in table selection. In a 3 * 3 table if i select from 2 row 2 column to first row ,first column in upwards direction , it selects even the third cell in the first row. I should select 2 rows and 2 column ( try out in frontpage). iam just do the execcommand with ID_TABLE_INSERTTABLE.
How to solve it?
2) How to insert a row or column in a table using IHtmlTable or IHtmlTableRow?
raj
|
|
|
|
|
I am confused with COM, ActiveX and Automation.
Can someone please tell me what exactly is the difference between them.
I know that ActiveX and Automation are COM based technologies. I know what COM is. I wanna know where do ActiveX and Automation differe
Any help is appreciated.
Thanks in advance
-------------------------
Have a great day ahead!
Regards,
Sohail Kadiwala
modified 21-Apr-21 21:01pm.
|
|
|
|
|
Hello Sohail,
Microsoft is really querky at coining names for their technologies, sometimes creating outright contradictions. Yes, ActiveX and Automation are both COM based technologies.
When COM first came out (mid-90s), ActiveX was the 32-bit version of VBXs (Visual Basic Extensions). ActiveXs also used COM technology and were sometimes know as COM Controls. They are also known as OCXs (for OLE Control Extensions).
ActiveXs, in this context, still exist and are in widespread use. However, the name "ActiveX" itself has been (ab)used in other contexts by none other than Microsoft itself.
Today, ActiveXs can also mean COM Objects. In fact, Visual Basic has a wizard that allows you to create ActiveXs (COM Objects) in VB.
In VC++, you still call a COM Object a COM Object (and not an ActiveX). The VC++ ATL Wizard still refer to these as COM Objects.
So today, by ActiveX, we could mean a COM Control or a COM Object.
The meaning of Automation, on the other hand, has remained intact. Automation was formerly known as OLE Automation. This refers to a COM Object that implements the IDispatch interface. The idea being to allow properties and methods of a COM Object to be late-bound.
Hope the above helps, Sohail.
Best Regards,
Bio.
|
|
|
|
|
Hey Bio,
Thats really helpful.
Lim Bio Liong wrote:
Microsoft is really querky at coining names for their technologies, sometimes creating outright contradictions
I agree what you said
Thanks a lot.
-------------------------
Have a great day ahead!
Regards,
Sohail Kadiwala
modified 21-Apr-21 21:01pm.
|
|
|
|
|
COM is a standard protocol for communicating with objects basically. It does not dictate how you implement your objects (or classes rather). It does dictate the mechanics of their interfaces (the protocol) should work. COM is also a set of universal and well known interfaces. One of those interfaces is IUnknown . I assume by your post that you know about these things.
ActiveX is a set of interfaces which graphical COM objects can implement. These are also known as ActiveX controls. If they do so, they may be used generically by hosts, or containers, which also implement a set of ActiveX interfaces. The control knows about the container's interfaces, and vice versa. This allows the control to communicate with its container to for instance add menu entries in the container. It also allows the container to resize the control. Basically, ActiveX allows control and container to communicate with eachother - a plugin architecture if you will.
Automation is a loose term. Basically all it says is that it exposes some functionaliy which may be exploited by an external party. For instance, it may be an application which can be controlled by another application. Word is an automation enabled application. You can start word, have it open a document, and print it, by issuing commands from your own application, rather than doing so the conventional way (by using the user interface). The requirement for automation is that it should follow the COM standard. It is up to the controlling party to know about the interfaces which the automated application exposes.
--
...Coca Cola, sometimes war...
|
|
|
|
|
Hi Jörgen Sigvardsson,
Thanks. This was very informative.
-------------------------
Have a great day ahead!
Regards,
Sohail Kadiwala
modified 21-Apr-21 21:01pm.
|
|
|
|
|
Hi There
I am having trouble automating Word from a win32 consol application.
I have used the example given on MSDN
http://support.microsoft.com/default.aspx?scid=kb;en-us;238393
and this works nicely. That is it opens a Word Document does some stuff, saves and closes.
Unfortunetly its the 'does some stuff I am having trouble with! I want to add tables to a word document and populate with data.
My variation to the MSDN example is as follows: that is I replace the Open and go from there...
/*******************************************************************************/
/******************************* MY AUTOMATION *********************************/
/*******************************************************************************/
// Call Documents.Add() to create a document
IDispatch *pDoc;
{
VARIANT result;
VariantInit(&result);
AutoWrap(DISPATCH_METHOD, &result, pDocs, L"Add", 0);
pDoc = result.pdispVal;
}
//***Create a Table***
IDispatch *pTable;
{
VARIANT result;
VariantInit(&result);
AutoWrap(DISPATCH_PROPERTYGET, &result, pDoc, L"Tables", 0);
pTable = result.pdispVal;
}
//***Set Range to beginning of document***
IDispatch *pRange;
{
VARIANT result;
VariantInit(&result);
VARIANT varStart, varEnd;
varStart.vt = VT_I4;
varStart.lVal = 0;
varEnd.vt = VT_I4;
varEnd.lVal = 0;
AutoWrap(DISPATCH_METHOD, &result, pDoc, L"Range", 2, varEnd, varStart);
pRange = result.pdispVal;
}
//***Add table a location specified by range***
{
VARIANT result;
VariantInit(&result);
VARIANT varRange, varRows, varColumns;
varRange.vt = VT_DISPATCH;
varRange.pdispVal = pRange;
varRows.vt = VT_I4;
varRows.lVal = 0;
varColumns.vt = VT_I4;
varColumns.lVal = 0;
AutoWrap(DISPATCH_METHOD, &result, pTable, L"Add", 3, varColumns, varRows, varRange);
}
// Call Documents.SaveAs() to save a document at/as C:\myDoc.doc
{
VARIANT result;
VariantInit(&result);
VARIANT x;
x.vt = VT_BSTR;
x.bstrVal = ::SysAllocString(L"C:\\myDoc.doc");
AutoWrap(DISPATCH_METHOD, &result, pDoc, L"SaveAs", 1, x);
// pDoc = result.pdispVal;
SysFreeString(x.bstrVal);
}
/*******************************************************************************/
/*******************************************************************************/
/*******************************************************************************/
But it I get an error back from the IDispath raising an exception (no useful info) when AutoWrap (... "Add"...) ???
HELP!!!!! PLEASE!!!!
Regards Dean
|
|
|
|
|
A couple of weeks ago I was attempting to do something similar, except that I was using Visual C++ .NET and had imported the Word type library with TlbImp.exe. TlbImp.exe converts the Type Library into a metadata assembly (basically it's C syntax with attributes), and any .NET compiler can access it; all you have to do is reference the DLL and the namespace in your code. It's considerably easier than what you're doing here.
However, I did make a lot or errors with the Word Type Library (I used verion 10.0) objects and methods because I was reading the help file which was written for Visual Basic programmers. As I recall, before opening a document, you had to call the function which returns a Documents Collection object (this is the Get Documents Collection code block from the code you are using); this is implemented by the IApplication interface, or the Application CoClass,...in other words, you must instantiate the Application object before anything else. Then call Documents::Open (this returns a Document object if it is successful). I had created a blank document with calls to the Windows API CreateDirectory and CreateFile (you can accomplish the same thing by opening Word beforehand and creating a new document the way the article you are working from suggests). If you call Documents::Add, you are actually creating a NEW document. And, when you create a NEW document in Word, it's actually a Microsoft Office object, and this object is created from a separate DLL, the Office Type Library (in the Interop assembly that I used it's a enumeration in Office.dll). Anyway, after trying several approaches, I discovered that it is easier and more straightforward to call Documnents::Open and pass the string for a document that has already been created. But, you must obtain the Documents Collection object first, or the call to Documents::Open will fail, and you won't know why unless you look up the HRESULT.
Read through the help file for the Word Object hierarchy; it's in a directory called, 1033, or something, in the Microsoft Office directory. The code examples won't be helpful, but, it will give you an idea what methods to invoke from which objects.
When you do get it to work, there are methods for creating tables in the type library, you must extend the range to accomodate the table structure. As I recall you can call methods like Range::InsertAfter and Range::InsertBefore, but they take string objects as method parameters (they are just for text editing). Also, it would be easier to create the table as a JPEG document and use the Range::InsertPicture method. You really must be able to examine the entire type library to make appropriate choices with your code implementation.
I'm curious, and I'd like to attempt the same thing in unmanaged code, how do you read the type library to understand how the COM objects and interfaces are implemented? In Visual C++ .NET, the IL Disassembler will display the entire type library (as an Interop Assembly), which makes it much easier to decide which methods to call, and what parameters and their types are necessary to make the calls successful. Then, (and this part is like cheating), you use Intellisense to invoke the correct methods in sequence. Also, exceptions are easier to deal with than HRESULTS.
|
|
|
|
|
|
can any one tell me how I can demodualate v22.bis modem data via software
|
|
|
|
|
You have any link to specifications of v22.bis data ?
What is your scenario ? (i.e.: a brief explanation of the context in which you require to demodulate your data)
etc. etc.
|
|
|
|
|
Thanks for you reply I have a link to site which as Demodulation code for all formats. However I do not fully understand it the link is http://www-users.cs.york.ac.uk/~fisher/software/modem/
What I require is to run this software on a Handheld Pc and to demodulate the data in real time.
Hope this is of help
Regards
Max
|
|
|
|
|
I think you've got it wrong. This forum is for the Component Object Model. Not serial communication..
--
...Coca Cola, sometimes war...
|
|
|
|
|
i mite be sounding silly but yet want to get my doubt cleared.what actually happens in the MS-WORD addin written by Amit Dey?
i haven't yet been able to find out what happens on the click of the button?
|
|
|
|
|
I am having difficulty understanding how the Implement Interface wizard works.
I have a COM server with a coclass called CoShape with an interface IShape . I also have a number of shapes one of which is called CoSquare with an interface ISquare . I wish to create a coclass called CoMySquare which inherits the ISquare interface but I expect it also to inherit the IShape interface when I use the "Implement Interface" wizard. To do this I import a typelib and select an interface to implement. It seems that even though CoSquare implements the IShape interface, to implement both ISquare and IShape in my CoMySquare , I need to explicitly implement both. Is this right?
In other words:
ISquare inherits from IShape
IMySquare inherits from ISquare
Surely implementing ISquare for CoMySquare should also implement IShape ?
|
|
|
|
|
can or not?if can,how?
please contact:
max_xiayi@hotmail.com
|
|
|
|
|
Hi all,
Iam a newbie to com. I have to work in c++ and vc.Iam working on interfaces like IhtmlcontrolRange, IHtmlTxtRange,IHTMLDataTransfer etc.
I don't how to implement some these interfaces. It would be of great help if i could get some help on how to implement these in c++.
Msdn site gives only definitions not examples.
Kindly specify some websites which could provide some examples on to implement these.
Thanx in Advance.
Raj
|
|
|
|
|
Hi,
how do we implement pre element. plz explain with example
lokiz
|
|
|
|
|
When I try to connect a remote client to COM exe server, I receive E_ACCESSDENIED as a response to CoCreateInstanceEx. In the system event logger I get : The server did not register with DCOM within the required timeout.
Anyone has a clue why it happens?
|
|
|
|
|