C++ 程序中调用系统可执行文件 mstsc.exe,该怎么解决
C++ 程序中调用系统可执行文件 mstsc.exe
程序从数据库提取到一台机器的:IP地址、登陆用户名和登陆密码,
分别保存在三个字符串中strip、struser、strpwd,如何调用系统
的可执行文件mstsc.exe 并自动将这三个参数填充到“远程桌面连接”
对话框的相应位置,到这就OK,然后我再点连接就可登陆该机器。
要用到哪些函数,如何实现,请教诸位高手了!
------解决方案--------------------
程序从数据库提取到一台机器的:IP地址、登陆用户名和登陆密码,
分别保存在三个字符串中strip、struser、strpwd,如何调用系统
的可执行文件mstsc.exe 并自动将这三个参数填充到“远程桌面连接”
对话框的相应位置,到这就OK,然后我再点连接就可登陆该机器。
要用到哪些函数,如何实现,请教诸位高手了!
------解决方案--------------------
- C/C++ code
CWnd *pMainWnd = FindWindow(NULL,"远程桌面连接"); if ( !pMainWnd ) { STARTUPINFO si; PROCESS_INFORMATION pi; ZeroMemory( &si, sizeof(si) ); si.cb = sizeof(si); ZeroMemory( &pi, sizeof(pi) ); char szSystemDir[512+1]; memset(szSystemDir,0,sizeof(szSystemDir)); GetSystemDirectory(szSystemDir,sizeof(szSystemDir)); // Start the child process. if( !CreateProcess(strcat(szSystemDir,"\\mstsc.exe"), // No module name (use command line). NULL, // Command line. NULL, // Process handle not inheritable. NULL, // Thread handle not inheritable. FALSE, // Set handle inheritance to FALSE. 0, // No creation flags. NULL, // Use parent's environment block. NULL, // Use parent's starting directory. &si, // Pointer to STARTUPINFO structure. &pi ) // Pointer to PROCESS_INFORMATION structure. ) { MessageBox("打开远程桌面进程失败!"); return; } Sleep(500); while ( true ) { pMainWnd = FindWindow(NULL,"远程桌面连接"); if ( pMainWnd == NULL ) { continue; } else { break; } } } HWND hMainWnd = pMainWnd->m_hWnd; HWND hOptionWnd = FindWindowEx(hMainWnd,NULL,"Button","选项(&O) >>"); if ( hOptionWnd != NULL ) { while ( true ) { ::SendMessage(hOptionWnd,BM_CLICK,0,0); HWND hExtWnd = FindWindowEx(hMainWnd,NULL,"Button","选项(&O) <<"); if ( hExtWnd == NULL ) { continue; } else { break; } } } else { while ( true ) { hOptionWnd = FindWindowEx(hMainWnd,NULL,"Button","选项(&O) >>"); if ( hOptionWnd == NULL ) { continue; } else { break; } } } HWND hDlgWnd = FindWindowEx(hMainWnd,NULL,"#32770",""); if ( hDlgWnd == NULL ) { MessageBox("未找到远程桌面连接上的dialog!"); return; } HWND hComputerIPWnd = FindWindowEx(hDlgWnd,NULL,"ComboBoxEx32",NULL); if ( hComputerIPWnd == NULL ) { MessageBox("未找到填写远程计算机IP地址的窗口!"); return; } HWND hComputerUserNameWnd = FindWindowEx(hDlgWnd,NULL,"Edit",NULL); if ( hComputerUserNameWnd == NULL) { MessageBox("未找到填写远程计算机用户名的窗口!"); return; } HWND hComputerUserPwdWnd = FindWindowEx(hDlgWnd,hComputerUserNameWnd,"Edit",NULL); if ( hComputerUserPwdWnd == NULL ) { MessageBox("未找到填写远程计算机用户密码的窗口!"); return; } char szComputerIP[16] = "192.168.230.88"; char szUserName[512] = "administrator"; char szUserPwd[512] = "123"; ::SendMessage(hComputerIPWnd,WM_SETTEXT,0,(LPARAM)szComputerIP); ::SendMessage(hComputerUserNameWnd,WM_SETTEXT,0,(LPARAM)szUserName); ::SendMessage(hComputerUserPwdWnd,WM_SETTEXT,0,(LPARAM)szUserPwd); HWND hConnWnd = ::FindWindowEx(hMainWnd,NULL,"Button","连接(&N)"); if ( hConnWnd == NULL ) { MessageBox("未找到连接按钮!"); return; } ::SendMessage(hConnWnd,BM_CLICK,0,0);