首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 【特殊】VC中如何调用system32的命令行exe [已结帖,结帖人:biggerstone]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • biggerstone
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 结帖率:
    发表于:2008-08-19 17:07:30 楼主
    我在XP系统下VC程序中,想调用windows\system32下的diskpart.exe自动进行分区。但该命令需要带参数。我试验了以下方式:
    (1)使用ShellExecute()
    char *szDiskPart = "diskpart.exe";
    char szCommand[64] = {0};
    sprintf(szCommand, "list disk");
    ShellExecute(NULL, "open", szDiskPart, szCommand, NULL, SW_SHOW); 
    无法实现打印磁盘列表。 将ShellExecute中szCommand改成NULL,倒是可以显示出界面??

    (2)使用system("diskpart")也可以出现界面,当使用system("diskpart list disk")就不行。

    请问如何在VC程序中实现,类似在命令行diskpart>后输入list disk的功能???


    10  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • biggerstone
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 09:50:291楼 得分:0
    顶啊
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lake_cx
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 10:48:532楼 得分:2
    ShellExecute(NULL, "open", NULL, "diskpart.exe list disk", NULL, SW_SHOW);
    就可以了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • maomaoxiong
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 11:29:483楼 得分:2
    diskpart list disk语法错误,找到diskpart带参数使用的正确语法,然后填到system()中去调用
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • biggerstone
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 16:07:294楼 得分:0
    To 3楼:diskpart list disk确实是语法错误,只能使用diskpart /s scriptfile.txt的格式,但是system(“diskpart /s scriptfile.txt”),
    但这样如何实现隐藏窗口呢?

    我试验了都不能达到目的(根本就没有执行partition.txt脚本):
    WinExec("diskpart /s partition.txt >> 3.txt ", SW_SHOW);
    ShellExecute(NULL, "open", "diskpart /s partition.txt >> 3.txt ", NULL, NULL, SW_SHOW);

    system("diskpart /s partition.txt >> 3.txt ")可以实现功能,但会闪出窗口来,想隐藏怎么办??
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • biggerstone
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 16:12:545楼 得分:0
    非常奇怪system("diskpart /s partition.txt >> 3.txt ")可以实现功能。
    而WinExec("diskpart /s partition.txt >> 3.txt ", SW_SHOW);
    ShellExecute(NULL, "open", "diskpart /s partition.txt >> 3.txt ", NULL, NULL, SW_SHOW); 却不能???

    谁能说说:system和WinExec,ShellExecute有什么区别???
    大侠们帮忙,再不解决就要丢饭碗了!!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lake_cx
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 16:40:486楼 得分:2
    用ShellExecute(NULL, "open", NULL, "diskpart /s partition.txt >> 3.txt", NULL, SW_SHOW);
    “diskpart /s partition.txt >> 3.txt”这个是命令行
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lake_cx
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 16:42:067楼 得分:2
    一般我会用CreateProcess,可以返回句柄等待它结束
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • dux003
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 18:13:028楼 得分:2
    嗯,用CreateProcess和管道应该可以解决
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved