Click here to Skip to main content
15,888,454 members
Home / Discussions / COM
   

COM

 
Generalusing MSRdp control in windows application Pin
Behlool29-Apr-05 1:44
Behlool29-Apr-05 1:44 
Hi I want to use the MSRdp (Microsoft Remote Desktop control) control from VC windows application but i dont want the control to be visible i want to create it programmatically. i used CoCreateInstance all things goes right and all the functions return S_OK but it doesnot get the session created on server however when i put the MSRdp control on the dialog box and use the same code from there it get connected .... and session is also created on server... Plz reply ASAP

this is the code i used for it

IID IID_RDP =
{0x9059f30f,0x4eb1,0x4bd2,{0x9F ,0xDC,0x36, 0xF4,0x3a, 0x21,0x8F, 0x4A}};


void Connect()
{
::CoInitializeEx(NULL,COINIT_APARTMENTTHREADED);
DISPID dispid =0;

IDispatch* pDisp = NULL;

CString text;
GetDlgItemText(IDC_SERVER,text);
HRESULT hr;


hr = ::CoCreateInstance(IID_RDP,NULL,CLSCTX_SERVER ,IID_IDispatch,(void **)&pDisp);
pDisp->AddRef();

//Setting Username and server
SetProperty(pDisp,OLESTR("Server"),(OLECHAR *)text.AllocSysString());
GetDlgItemText(IDC_USER,text);
SetProperty(pDisp,OLESTR("UserName"),(OLECHAR *)text.AllocSysString());
SetProperty(pDisp,OLESTR("Domain"),(OLECHAR *)"");

//setting password
DISPPARAMS dispparams;
EXCEPINFO escep;
UINT uArgErr =0;

VARIANT Result;
::VariantInit(&Result);
Result.vt =VT_DISPATCH;
dispparams.cArgs = 0;
dispparams.rgvarg = NULL;
dispparams.cNamedArgs = 0;
dispparams.rgdispidNamedArgs = NULL;

OLECHAR *szMem=OLESTR("AdvancedSettings2");
hr = pDisp->GetIDsOfNames(IID_NULL,&szMem,1,::GetUserDefaultLCID(),&dispid);

hr =pDisp->Invoke(dispid,IID_NULL,::GetUserDefaultLCID(),
DISPATCH_PROPERTYGET,&dispparams,&Result,&escep,&uArgErr);

IDispatch *pAdvanced = 0;
pAdvanced = Result.pdispVal;
pAdvanced->AddRef();
GetDlgItemText(IDC_PASSWORD,text);
SetProperty(pAdvanced,OLESTR("ClearTextPassword"),(OLECHAR*)text.AllocSysString());

hr =pAdvanced->Invoke(0x68,IID_NULL,::GetUserDefaultLCID(),
DISPATCH_PROPERTYGET,&dispparams,&Result,&escep,&uArgErr);
BOOL value = Result.boolVal;
//setting startup app
szMem=OLESTR("SecuredSettings");
pDisp->GetIDsOfNames(IID_NULL,&szMem,1,::GetUserDefaultLCID(),&dispid);

hr =pDisp->Invoke(dispid,IID_NULL,::GetUserDefaultLCID(),
DISPATCH_PROPERTYGET,&dispparams,&Result,&escep,&uArgErr);

IDispatch *pSecured = Result.pdispVal;
pSecured->AddRef();
SetProperty(pSecured,OLESTR("StartProgram"),OLESTR("explorer.exe"));

//connecting to server
szMem=OLESTR("Connect");
pDisp->GetIDsOfNames(IID_NULL,&szMem,1,::GetUserDefaultLCID(),&dispid);

hr = pDisp->Invoke(dispid,IID_NULL,::GetUserDefaultLCID(),
DISPATCH_METHOD,&dispparams,&Result,&escep,&uArgErr);
pSecured->Release();
pAdvanced->Release();
pDisp->Release();
return;
}


HRESULT SetProperty(IDispatch* pDispatch, OLECHAR* name , OLECHAR* value)
{
HRESULT hr;
VARIANTARG varg;
::VariantInit(&varg);
OLECHAR* szMem = name;
varg.vt = VT_BSTR;
varg.bstrVal = value;
DISPID dispidNamed = DISPID_PROPERTYPUT;
DISPID dispid;

DISPPARAMS dispparams;

dispparams.cArgs = 1;
dispparams.rgvarg = &varg;
dispparams.cNamedArgs = 1;
dispparams.rgdispidNamedArgs = &dispidNamed;

EXCEPINFO escep;
UINT uArgErr =0;

hr = pDispatch->GetIDsOfNames(IID_NULL,&szMem,1,::GetUserDefaultLCID(),&dispid);
if(SUCCEEDED(hr))
hr =pDispatch->Invoke(dispid,IID_NULL,::GetUserDefaultLCID(),
DISPATCH_PROPERTYPUT,&dispparams,NULL,&escep,&uArgErr);

return hr;
}

GeneralPort Blocking for Windows 98! Pin
URagavSouth28-Apr-05 20:10
URagavSouth28-Apr-05 20:10 
GeneralOutlook CreateDispatch error - "No such interface supported" Pin
Nickmatic28-Apr-05 15:39
Nickmatic28-Apr-05 15:39 
GeneralPeculiar Exception Pin
Nirav Doshi28-Apr-05 6:32
Nirav Doshi28-Apr-05 6:32 
GeneralRe: Peculiar Exception Pin
User 21559728-Apr-05 23:32
User 21559728-Apr-05 23:32 
QuestionOLE VB Function equilivent for C++? Pin
BrianBoru28-Apr-05 4:42
BrianBoru28-Apr-05 4:42 
AnswerRe: OLE VB Function equilivent for C++? Pin
Vi212-May-05 1:42
Vi212-May-05 1:42 
GeneralThrowing an event with a nested UDT Pin
GizzoF28-Apr-05 0:18
GizzoF28-Apr-05 0:18 
GeneralProperties in COM Pin
ckapil27-Apr-05 23:12
ckapil27-Apr-05 23:12 
GeneralRe: Properties in COM Pin
ThatsAlok28-Apr-05 0:37
ThatsAlok28-Apr-05 0:37 
GeneralRe: Properties in COM Pin
ThatsAlok28-Apr-05 1:03
ThatsAlok28-Apr-05 1:03 
GeneralRe: Properties in COM Pin
ckapil28-Apr-05 1:24
ckapil28-Apr-05 1:24 
GeneralIStream object string length error Pin
mjharvey27-Apr-05 14:09
mjharvey27-Apr-05 14:09 
GeneralRe: IStream object string length error Pin
mjharvey27-Apr-05 16:45
mjharvey27-Apr-05 16:45 
GeneralMaking DLL from Matlab Pin
mosquets27-Apr-05 3:39
mosquets27-Apr-05 3:39 
GeneralComponent Accessibility Pin
Robert Findlay27-Apr-05 2:52
Robert Findlay27-Apr-05 2:52 
GeneralRe: Component Accessibility Pin
Robert Findlay9-May-05 1:07
Robert Findlay9-May-05 1:07 
GeneralNeed help about Office Automation Pin
figer25-Apr-05 21:47
figer25-Apr-05 21:47 
GeneralRe: Need help about Office Automation Pin
Jason Henderson26-Apr-05 8:16
Jason Henderson26-Apr-05 8:16 
GeneralRe: Need help about Office Automation Pin
vishalmore11-May-05 21:13
vishalmore11-May-05 21:13 
GeneralAcitveX container hanging problem Pin
kostik125-Apr-05 21:17
kostik125-Apr-05 21:17 
GeneralDCOM Pin
itkid25-Apr-05 19:32
itkid25-Apr-05 19:32 
GeneralRe: DCOM Pin
Mayur Mahajan26-Apr-05 17:21
Mayur Mahajan26-Apr-05 17:21 
GeneralHandling COM Events Pin
i.chen24-Apr-05 20:34
sussi.chen24-Apr-05 20:34 
GeneralRe: Handling COM Events Pin
Frank_lgh9-May-05 14:45
Frank_lgh9-May-05 14:45 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.