c语言调用exe文件的问题

现在有一个exe文件(没有它的代码),用system()函数调用它,但这个exe文件需要输入命令然后按回车才会运行,由于程序中需反复调用它,并且整个程序运行时不希望人来干... 现在有一个exe文件(没有它的代码),用system()函数调用它,但这个exe文件需要输入命令然后按回车才会运行,由于程序中需反复调用它,并且整个程序运行时不希望人来干预,
有没有什么函数可以让程序自动输入命令然后运行exe文件呢(也就是起到一个模拟键盘的作用)?我查到了一个keybd_event()函数,可是编入后没有效果(比如我在程序中system()语句后写入了keybd_event(65,0,0,0)语句,却没有起到输入的效果),到底怎样才能实现呢?
这个exe文件打开后,要先输入一个“2”,然后回车,再输入一个“1”,然后回车,再输入一个“0”,然后回车,才能运行,这些“2,1,0”并不是exe文件用来运算的数值,而算是用来选择这个exe文件的某些功能的命令(这个exe文件规模比较大,功能比较多)

求助啊,各位大神,急急急,有不明白的地方可以问我~~
展开
 我来答
潮范君
推荐于2018-03-28 · 知道合伙人软件行家
潮范君
知道合伙人软件行家
采纳数:1440 获赞数:2874
从事软件开发工作一年有余,主要C++方向。

向TA提问 私信TA
展开全部
有个API函数可以直接调用 ShellExecute(NULL,NULL,"D:\\test.ext",NULL,NULL,NULL);
其中第3个参数就是 exe程序的绝对路径.
普洛智应
2013-05-27 · 知道合伙人互联网行家
普洛智应
知道合伙人互联网行家
采纳数:410 获赞数:1585
虚拟现实(VR/AR)以及游戏相关技术,物联网以及传感器技术

向TA提问 私信TA
展开全部
yourexe.exe /d 假设你命令行接受这样的选项比如/d
system("yourexe.exe /d");
追问
可以说详细一点吗?没太看懂
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
金色潜鸟
推荐于2017-12-16 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5671万
展开全部
被调用的程序如果需要有输入参数,可以通过位置参数方式给入。
例如:a.c 需要输入1个int参数
#include <stdio.h>
#include <stdlib.h>
main(int argc,char *argv[]){
int d;
if (argc>=2) {
sscanf(argv[1],"%d",&d);
printf("value d=%d\n",d );
}
else printf("pass\n");
}

程序 b.c 将调用 a.exe 3 次:
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
main(){
char cmd[80];
int x[]={456,789,321};
int i;
for (i=0;i<3;i++)
{
sprintf(cmd,"Start /WAIT /B a.exe %d",x[i]);
system(cmd);
Sleep(2000); //隔2秒钟
}
printf("finished\n");
}
执行结果:
value d=456
value d=789
value d=321
finished
更多追问追答
追问
大神,我这个情况好像和这个不太一样,我那个exe文件打开后要先输入一个“2”,然后回车,再输入一个“1”,然后回车,再输入一个“0”,然后回车,才能运行,有没有什么办法让程序自己完成这三个输入,然后让exe运行呢?帮忙想想好吗,这个程序对我很重要,非常急,谢了~~
追答
你可以传递3个参数参数
调用时,命令行给3个
int x[]={456,789,321};
int y[]={556,589,821};
int z[]={656,689,721};
sprintf(cmd,"Start /WAIT /B a.exe %d %d %d",x[i],y[i],z[i]);

#include
#include
main(int argc,char *argv[]){
int d,e,f; // 传递3个参数
if (argc>=4) {
sscanf(argv[1],"%d",&d);
sscanf(argv[2],"%d",&e);
sscanf(argv[3],"%d",&f);

printf("value d=%d\n",d );
}
else printf("pass\n");
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
leichenfeng
2013-05-27 · TA获得超过757个赞
知道小有建树答主
回答量:425
采纳率:0%
帮助的人:479万
展开全部
用<windows.h>里面的windows API或者直接用system调用dos命令,system("路径\程序名.exe")
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
空雪梦见
推荐于2016-08-28 · TA获得超过5597个赞
知道大有可为答主
回答量:2522
采纳率:75%
帮助的人:1192万
展开全部
#include <stdio.h>
#include <stdlib.h>
int main()
{
system("echo 2 > tmp");
system("echo 1 >> tmp");
system("echo 0 >> tmp");
system("yourexe.exe < tmp");
remove("tmp");
}

来,楼主试试我这个代码。 yourexe自己改,知道吧
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式