|
Hi I m Jay & Im doin a project named"Operating PC Through SMS" for which I require a SMS Gateway which will send my sms in e-mail form 2 my PC & also return the reply in SMS form to my cell phone. I cant find any body who provides a SMS Gateway. Everybody just gives the info abt it. Can anybody tel me where will I find a SMS Gateway. I really need it because my time is running out. Plz Help!
|
|
|
|
|
Hi,
I need convert a 1D long array to a const VARIANT& in a function from 3rd party. Could you please give me some suggestions for the problem? I am using VC++ 6.0.
Thanks,
Xiangyang
-----------------------
convert long iArray[10];
to
const VARIANT& DefectsIDs
in
VARIANT CreateMap(LPCTSR BaseName, const VARIANT& DefectsIDs);
-----------------------
Xiangyang
|
|
|
|
|
hi all
can any one tell me that i want to show drop down menu bar in all my vb.net page. and the items of menu bar will according to login id means for admin all and for users only few.
plz help me
Shiv Bahadur Sahu
09213519179
|
|
|
|
|
Hi,
When i am trying to call a ActiveX dll(it has a form) from a VC client I am getting this error:
Run-time error '406':
Non-modal forms cannot be displayed in this host application from an ActiveX DLL,ActiveX Control, or Property Page.
Can anyone help me out with this??
Thanks in advance.
Priya.
|
|
|
|
|
Hi,
Can anyone tell me how to create a reference to a COM object...the COM object is Control.dll ...... I want to create a pointer to this COM and access methods from it.
Thanks in advance.
Priya.
|
|
|
|
|
You don't create a reference to a COM server, you create the server by a call to ::CoCreateInstance() and if the server could successfullly be created you'll get the interface pointer that you requested in the call.
Learn the basics of COM in this CodeProject section: clickety[^].
Michael Dunn's articles would be a good starting point.
|
|
|
|
|
Hi,
I guess the way my question is formed is wrong.I am sorry about that. Actually my requirement is , I have a vb project which is using a COM Component in it. Now i have created a separate VB project and i want to use the same COM component which is present in the other vb project instead of again adding the COM component in my proj. Thus i want to avoid creating 2 instances of the COM but instead create a reference to existing COM object which is included in a VB client.
I guess u have got my problem. how to do it?
Kindly help me with this.
Thanks in advance
Priya.
|
|
|
|
|
This is not a trivial task. A COM DLL is always an in-proc server - which means that it is executed within the process of the client application. Windows does separate different processes quite good.
The approach which I would recommend is to change the COM server to an out-proc (EXE) server. Then make it a singleton server and the two applications can share one instance of it - as long as both clients run in the same user context.
If you don't have access to the sources of the COM server, you will have to implement some other means of inter-process communication. Eventually it is possible to register the COM server in the ROT (running object table) to share it. However, I have never tried to use this approach.
Regards,
Tim
|
|
|
|
|
Tim Paaschen wrote: A COM DLL is always an in-proc server - which means that it is executed within the process of the client application.
Not quite true, Tim.
You can run the DLL server in a surrogate process. This even means that you can run a DLL server that is executing on another computer using DCOM.
Read this[^] for more info.
The exe-server solution and registering in the ROT would do fine, but that may slow things down from the VB-client perspective.
I suggest the use of aggregation.
"It's supposed to be hard, otherwise anybody could do it!" - selfquote "High speed never compensates for wrong direction!" - unknown
|
|
|
|
|
Hi,
I understood ur approach,but as i am new to this COM thing..I do not know how to implement. First of all how to convert an in-proc COM instance to an out-proc COM instance so that both the clients can share the same dll. Secondly, How to convert it to a singleton server?? The last registering part which u told, to register in ROT, I am not sure I understood that.
Regards,
Priya.
|
|
|
|
|
shivapriyak wrote: First of all how to convert an in-proc COM instance to an out-proc COM instance
The easiest way is to create a new project and select an COM EXE (out-proc) server right from the beginning. If you want to convert your project, create a new dummy out-proc server and reproduce the required settings and code in your project.
If your server derives from CComCoClass , you can use the DECLARE_CLASSFACTORY_SINGLETON macro. However, be awae that this only works for clients started by the same user.
Regarding the Running Object Table have a look at the MSDN[^] or this article[^].
Regards,
Tim
|
|
|
|
|
I suggest you use COM aggregation; a way to encapsulate an inner COM server inside an outer and expose interfaces from the inner server to clients of the outer server.
Have a look in MSDN here[^] and at CodeProject here[^].
"It's supposed to be hard, otherwise anybody could do it!" - selfquote "High speed never compensates for wrong direction!" - unknown
|
|
|
|
|
Hi,
I am new to this COM thing..but let me see if i got u right. COM aggregation is a method by which v can encapsulate a inner COM componet within another and the client can call the interfacing methods of the outer component instead of the inner COM.
So, How will this solve my issue?? Actually what i need is 2 clients accessing the same COM component instance..how v can get this??Plz explain.
Thanks.
Regards,
Priya.
|
|
|
|
|
shivapriyak wrote: So, How will this solve my issue?? Actually what i need is 2 clients accessing the same COM component instance.
Ok, I misunderstood your problem.
Then I suggest you do what Tim suggested: create an exe-server and register the instance in the Running-Object-Table (ROT). Clients to the server can then request an already running instance of the server from the ROT. If it's essential that there is only one single instance running at the same time you can implement it as a singleton.
Perhaps this[^] article can help you. It's partly written in C#, but the concept is the same no matter the language.
"It's supposed to be hard, otherwise anybody could do it!" - selfquote "High speed never compensates for wrong direction!" - unknown
|
|
|
|
|
Hi,
I went thru the article.
What i understood is that the COM has to be registered and running in the ROT table. Then both the clients can access the same running instance of the COM dll by getting pointers to it.Correct me if i am wrong...
But i am afraid i don't know C# can u tell me how to do this in vb??
both my clients r vb applic only..
Thanks
Priya
|
|
|
|
|
shivapriyak wrote: What i understood is that the COM has to be registered and running in the ROT table. Then both the clients can access the same running instance of the COM dll by getting pointers to it.Correct me if i am wrong...
No need for correction, you've got it.
shivapriyak wrote: i don't know C# can u tell me how to do this in vb?
Sorry mate, unfortunately I don't know how the synthax looks in VB for doing COM.
However, it's the flow that's important; in what order to do things and what IRunningObjectTable methods to call since it will be the same regardless of the language used. You'll have to translate it to VB by yourself.
In addition to the links that Tim provided you with, have a look at this[^], an article in MS Systems Journal written by Jeff Prosise about the use of ROT and monikers.
"It's supposed to be hard, otherwise anybody could do it!" - selfquote "High speed never compensates for wrong direction!" - unknown
|
|
|
|
|
Hi,
Thnx everybody I could solve this issue.
|
|
|
|
|
Hi,
i have an com application which keeps track of another application and displays the message accordingly.
but it gives error70 when we handle the application to and fro very frequently.
can anyone help me on Error-70 or any idea about the possible reasons.
thanks in advance
amolk
|
|
|
|
|
Hai friends,
I am get an error "The stub received bad data" while calling CreateInstance function.
But some times its working.
I am using a COM Exe as server. I am using a regular dll to call the interface functions of COM Server. I am getting this error in dll.I had registered the COM Exe using regerver.
OS installed : WindowsXP Service Pack 2
Platform : VC++6.0 Service Pack 6
Can anybody help me to solve?
With regards,
appoos
Known is a drop, unknown is an ocean
|
|
|
|
|
Hello,
1. Have you initialized all your variables inside com server? Some memory garbage can cause the problem
2. It can be some timing problem with initialization. Try to play with some delays (just use Sleep(…)) inside constructor and FinalConstruct() method of your exe com server.
Regards,
|
|
|
|
|
i have made the plugin in VC for outlook so when i send mail the micorsoft word page remain open i want to close that page so any1 can help me in this regard.
the code for initilizing the word is as follow
if(EditorType==olEditorWord)
{
HWND hwnd;
hwnd = ::GetForegroundWindow();
HRESULT hr = EnumChildWindows(hwnd, &EnumWindowsProc, NULL);
CComPtr<idispatch>Dispatch;
spInspect->get_WordEditor((IDispatch**)&Dispatch);
DISPID dispp;
OLECHAR FAR* szMemberpName;
EXCEPINFO pexcep;
UINT uArgErr;
DISPPARAMS disparams={NULL,NULL,0,0};
szMemberpName = L"Close";
VARIANTARG ApResult;
Dispatch->GetIDsOfNames (IID_NULL, &szMemberpName, 1, LOCALE_SYSTEM_DEFAULT, &dispp);
hr = Dispatch->Invoke(dispp, IID_NULL, LOCALE_SYSTEM_DEFAULT,DISPATCH_METHOD, &disparams, &ApResult, &pexcep, &uArgErr);
if(FAILED(hr))
{
_bstr_t des;
char * ii;
des = pexcep.bstrDescription;
ii = (char*) des;
}
else
{}
|
|
|
|
|
Hi all ,
How can I get the path of a COM DLL ??
I am using this way..
Inside DLL , I am writing this code.
/******************************************************/
HINSTANCE g_hInst;
TCHAR szModule[MAX_PATH];
g_hInst = _Module.GetModuleInstance();
GetModuleFileName(g_hInst, szModule, MAX_PATH);
/*******************************************************/
I am getting the Path . But am getting in this form..
"D:\THINVI~1\INTEGR~1.DLL" .
The tilt sign makes the folder and file names incomplete . My actual path is
"D:\THINVISITS_14-2-07\INTEGRALHOTBAR.DLL"
So how can I get my dll path in the complete form without Tilt(~)..
Please Help Me
Thanks
George.
|
|
|
|
|
Add an additional call to GetLongPathName .
Steve
|
|
|
|
|
Hi all,
I have a VB applicatiOn , which calls a function in VC++ DLL.
Arguement of function is a one dimensional string array.
Array will get filled in VC++ dll function.
I have written the programme given below.
But I am unable to get the array elements from VC++.
Programme is given below.
VC++ COM
/*****************************************/
STDMETHODIMP CTest111CL::myFun(SAFEARRAY **ppOutputArray)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState())
HRESULT hresult;
SAFEARRAYBOUND aDim[1] ;
aDim[0].lLbound = 0;
aDim[0].cElements = 3;
BSTR HUGEP *pbstr;
*ppOutputArray = SafeArrayCreate(VT_BSTR , 1, aDim);
hresult=SafeArrayAccessData(*ppOutputArray,(void HUGEP**)&pbstr);
pbstr[0] = SysAllocString(OLESTR("SOURCE_VA"));
pbstr[1] = SysAllocString(OLESTR("ACV"));
pbstr[2] = SysAllocString(OLESTR("10"));
SafeArrayUnaccessData(*ppOutputArray);
return S_OK;
}
/**********************************************/
VB Application
---------------
''''''''''''''''''''''''''''
Dim i As Test111CL
Private Sub Command1_Click()
Dim arr_str(3) As String
Set i = New Test111CL
i.myFun arr_str()
MsgBox arr_str(1)
End Sub
''''''''''''''''''''''''''
MsgBox arr_str(1) , The message Box shows and empty string.
How can I rectify it. Please help me.
Thanks
George
-- modified at 4:53 Friday 9th February, 2007
|
|
|
|
|
Hello,
Try this:
Idl: HRESULT FunName([in,out] SAFEARRAY(BSTR)* pbsData);
.h: STDMETHOD(FunName)((SAFEARRAY** pbsData);
.cpp: STDMETHODIMP ClassName:: FunName(SAFEARRAY** pbsData)
{
//checking if it is an one-dimensional array
if((*pbsData)->cDims != 1)
return E_FAIL;
//Checking the number of elements of the array
if(3 != (*pbsData)->rgsabound[0].cElements)
return E_FAIL;
// locking the array before using its elements
HRESULT hr = SafeArrayLock(*pbsData);
if(FAILED(hr))
return E_FAIL;
// using the array
BSTR* pbs = (BSTR*)(*pbsData)->pvData;
pbs[0] = …
pbs[1] = …
pbs[2] = …
…
// releasing the array
return SafeArrayUnlock(*pbsData);
}
VB: Option Explicit
Option Base 1
Dim sArr(1 To 3) As String
Call ….FunName(sArr)
Regards,
|
|
|
|