分享

ShellExecute 的返回值

 水中麒麟 2013-09-20

MFC中如何判断ShellExecute函数执行dos命令是否成功?

2011-03-28 07:28zhccsd | 分类:VC++ | 浏览1358次
比如这样的语句ShellExecute(NULL, "open", "cmd.exe", "/k  rasdial \"1223\" 1233 1233", NULL, SW_HIDE);这是一个连接宽带的语句
ShellExecute函数的返回值让我很不解,什么ox000002a什么的,这样用if(! )else结构的话不管是否连上都是true的,以前用system()语句倒是可以返回true和false。请问各位高手怎么控制ShellExecute的返回值啊
检举| 2011-03-28 08:11提问者采纳
执行成功会返回应用程序句柄; 如果这个值 <= 32, 表示执行错误}
//返回值可能的错误有: = 0 {内存不足}
ERROR_FILE_NOT_FOUND = 2; {文件名错误}
ERROR_PATH_NOT_FOUND = 3; {路径名错误}
ERROR_BAD_FORMAT = 11; {EXE 文件无效}
SE_ERR_SHARE = 26; {发生共享错误}
SE_ERR_ASSOCINCOMPLETE = 27; {文件名不完全或无效}
SE_ERR_DDETIMEOUT = 28; {超时}
SE_ERR_DDEFAIL = 29; {DDE 事务失败}
SE_ERR_DDEBUSY = 30; {正在处理其他 DDE 事务而不能完成该 DDE 事务}
SE_ERR_NOASSOC = 31; {没有相关联的应用程序}
//ShowCmd 参数可选值:SW_HIDE = 0; {隐藏}
SW_SHOWNORMAL = 1; {用最近的大小和位置显示, 激活}
SW_NORMAL = 1; {同 SW_SHOWNORMAL}
SW_SHOWMINIMIZED = 2; {最小化, 激活}
SW_SHOWMAXIMIZED = 3; {最大化, 激活}
SW_MAXIMIZE = 3; {同 SW_SHOWMAXIMIZED}
SW_SHOWNOACTIVATE = 4; {用最近的大小和位置显示, 不激活}
SW_SHOW = 5; {同 SW_SHOWNORMAL}
SW_MINIMIZE = 6; {最小化, 不激活}
SW_SHOWMINNOACTIVE = 7; {同 SW_MINIMIZE}
SW_SHOWNA = 8; {同 SW_SHOWNOACTIVATE}
SW_RESTORE = 9; {同 SW_SHOWNORMAL}
SW_SHOWDEFAULT = 10; {同 SW_SHOWNORMAL}
SW_MAX = 10; {同 SW_SHOWNORMAL}
追问
但是我这边不管是否成功都返回同一个值0x0000002A      这个值不是42吗?怎么会这样?
回答
按函数说明来说,返回42(>32),说明正常执行了啊
根据你的函数参数,只要成功执行cmd就成功了,至于后面参数里东西,是属于cmd处理的范围,该函数不管那些。
你传给cmd的应该是一个程序的名字吧,其实这种程序,不需要cmd来启动,直接执行就行了。
追问
rasdial \"1223\" 1233 1233   这是连接宽带的语句   那真是无语了   我用system()的话倒是可以正常返回是否成功,但是有黑框    真是不能兼得啊

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多