vc中直接调用dos命令
CString str;
str="net use p: \\\\192.168.0.21\\d$ 111111 /user:administrator";
ShellExecute(NULL,NULL,str,0,NULL,SW_HIDE);
为什么执行总不能成功?
而如果我在dos命令下执行就可以成功?
问题点数:20、回复次数:17Top
1 楼ra3(军机大臣)回复于 2005-04-02 16:24:30 得分 2
用 system 函数
Top
2 楼wangjianddy(~~~~>_<~~~~)回复于 2005-04-02 16:27:09 得分 0
同意楼上Top
3 楼wangjianddy(~~~~>_<~~~~)回复于 2005-04-02 16:28:27 得分 2
system("net use p: \\\\192.168.0.21\\d$ 111111 /user:administrator");Top
4 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2005-04-02 16:37:05 得分 2
system()就可以Top
5 楼ironox(铁牛)回复于 2005-04-02 16:52:42 得分 0
哇,这么简单啊,真神奇。关注一下,回去试试。Top
6 楼yzhgr()回复于 2005-04-02 16:57:53 得分 0
用system会弹出dos窗口,怎么解决这个问题?Top
7 楼Practise_Think(时代“过客”)回复于 2005-04-02 17:39:38 得分 2
CString str;
str="net use p: \\\\192.168.0.21\\d$ 111111 /user:administrator";
ShellExecute(NULL,"open","cmd.exe",str,NULL,SW_HIDE);
Top
8 楼Practise_Think(时代“过客”)回复于 2005-04-02 17:41:49 得分 0
不好意思,上面的应该不行,因为不能带有空格Top
9 楼vcmute(BCare4 H1Rest Good9!)回复于 2005-04-03 14:32:46 得分 8
str="/c net use p: \\\\192.168.0.21\\d$ 111111 /user:administrator";Top
10 楼keiy()回复于 2005-04-03 14:40:08 得分 2
如果要隐藏控制台窗口,可用CreateProcess
见我回过的
http://community.csdn.net/Expert/topic/3883/3883795.xml?temp=.2644464
Top
11 楼surstar(我要写个操作系统出来……)回复于 2005-04-03 14:58:09 得分 0
收藏~Top
12 楼kugou123(酷狗)(彪悍的人生,不需要解释 www.xiaozhou.net)回复于 2005-04-03 21:12:33 得分 2
WinExec也可以。
WinExec("delete d:\test.txt",SW_HIDE);Top
13 楼yzhgr()回复于 2005-04-04 14:18:25 得分 0
vcmute()做法正确,但不知道是什么意思?能不能讲讲?
还有就是用ShellExecute执行时怎么才能知道命令执行的结果是成功了还是失败了?
比如我用ShellExecute来执行一个批处理文件,里面有一些dos命令,怎么才能知道里面的命令执行的结果?Top
14 楼bobob(静思)回复于 2005-04-04 14:23:22 得分 0
{
SECURITY_ATTRIBUTES sa;
HANDLE hRead,hWrite;
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.lpSecurityDescriptor = NULL;
sa.bInheritHandle = TRUE;
if (!CreatePipe(&hRead,&hWrite,&sa,0))
{
MessageBox("Error On CreatePipe()");
return;
}
STARTUPINFO si;
PROCESS_INFORMATION pi;
si.cb = sizeof(STARTUPINFO);
GetStartupInfo(&si);
si.hStdError = hWrite;
si.hStdOutput = hWrite;
si.wShowWindow = SW_HIDE;
si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
if (!CreateProcess(NULL,"c:\\winnt\\system32\\cmd.exe /c dir"
,NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi))
{
DWORD dw = GetLastError();
MessageBox("Error on CreateProcess()");
return;
}
CloseHandle(hWrite);
char buffer[4096] = {0};
DWORD bytesRead;
while (true)
{
if (ReadFile(hRead,buffer,4095,&bytesRead,NULL) == NULL)
break;
m_strResult+= buffer;
UpdateData(false);
Sleep(200);
}
}
Top
15 楼bobob(静思)回复于 2005-04-04 14:23:52 得分 0
重定向输出到文本Top
16 楼xxrl(孔曰成仁,孟曰取媳妇-->她太有才了)回复于 2005-04-04 16:03:26 得分 0
bool CHistoryServerDlg::ExecuteUnrar(CString strRarPath, CString strSourcePath)
{
//执行压缩文件
//因为rar所在的目录是program files 这个路径有空格,所以cmd执行错误,我就把路径包含在环境变量里面了,所以只有一个rar 下面是格式化dos命令,这也是我试验了很多次才成功的,呵呵
//示例一下,FYI
CString sWinRARInstallPath = "rar";
CString sParameter = "";
sParameter.Format("cmd /c \"%s a -y -ep2 %s %s\"",sWinRARInstallPath,strRarPath,strSourcePath);
LPTSTR CommandLine;
CommandLine = sParameter.GetBuffer(sParameter.GetLength());
sParameter.ReleaseBuffer();
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si,sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi,sizeof(pi));
//Start the child process.
if(!CreateProcess(NULL,
CommandLine,
NULL,
NULL,
false,
CREATE_NO_WINDOW,
NULL,
NULL,
&si,
&pi)
){
perror("调用解压缩程序WINRAR出现错误!");
return false;
}
WaitForSingleObject(pi.hProcess, INFINITE);
DWORD ExitCode;
GetExitCodeThread(pi.hThread, &ExitCode);
AlertErrMessage(ExitCode);
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
return true;
}Top
17 楼yzhgr()回复于 2005-04-04 16:36:13 得分 0
所答非所问Top




