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文件规模比较大,功能比较多)
求助啊,各位大神,急急急,有不明白的地方可以问我~~ 展开
有没有什么函数可以让程序自动输入命令然后运行exe文件呢(也就是起到一个模拟键盘的作用)?我查到了一个keybd_event()函数,可是编入后没有效果(比如我在程序中system()语句后写入了keybd_event(65,0,0,0)语句,却没有起到输入的效果),到底怎样才能实现呢?
这个exe文件打开后,要先输入一个“2”,然后回车,再输入一个“1”,然后回车,再输入一个“0”,然后回车,才能运行,这些“2,1,0”并不是exe文件用来运算的数值,而算是用来选择这个exe文件的某些功能的命令(这个exe文件规模比较大,功能比较多)
求助啊,各位大神,急急急,有不明白的地方可以问我~~ 展开
6个回答
2013-05-27 · 知道合伙人互联网行家
关注
展开全部
yourexe.exe /d 假设你命令行接受这样的选项比如/d
system("yourexe.exe /d");
system("yourexe.exe /d");
追问
可以说详细一点吗?没太看懂
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
被调用的程序如果需要有输入参数,可以通过位置参数方式给入。
例如: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
例如: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");
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用<windows.h>里面的windows API或者直接用system调用dos命令,system("路径\程序名.exe")
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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自己改,知道吧
#include <stdlib.h>
int main()
{
system("echo 2 > tmp");
system("echo 1 >> tmp");
system("echo 0 >> tmp");
system("yourexe.exe < tmp");
remove("tmp");
}
来,楼主试试我这个代码。 yourexe自己改,知道吧
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询