㈠ mfc程序怎么接受命令行参数
三种方法:
假设我们启动程序的时候执行的是以下命令:
D:mfcapp.exe -l -f ./1.txt
方法1,调用全局函数
::GetCommandLine();
将获取到全部参数信息:D:mfcapp.exe -l -f ./1.txt
方法2,使用宏__argc和__argv,使用方法和命令行main(int argc,char *argv[])一样,示例代码:
for(inti=0;i<__argc;i++)
{
__argv[i];//依次遍历可以得到D:mfcapp.exe-l-f./1.txt
}
方法3:使用CWinApp类的成员变量m_lpCmdLine,它里面包含除了第一个参数的所有信息,比如:
AfxGetApp()->m_lpCmdLine;//结果为-l -f ./1.txt
㈡ 怎么使用mfc的cdatabase类直接执行sql命令
环境:WindowsXP ; VC++6.0 + sp5 1。通过odbc直接执行SQL语句CDatabase mydb;
CRecordset myRecord;
CString strSQL;
CDBVariant cv;try{if ( !mydb.IsOpen() )
mydb.OpenEx("数据库连接字符串",CDatabase::noOdbcDialog); myRecord.m_pDatabase = &mydb;
//直接执行SQL语句,
//注意,SQL语句字符串一定不能以空格开始
strSQL = "SELECT 字段或计算列 FROM 表 WHERE 条件";
//strSQL = " SELECT 字段或计算列 FROM 表 WHERE 条件 "; //这样不行,会报错,查询语句中没有字段
myRecord.Open(CRecordset::snapshot,"需要执行的SQL语句"); int i = 0;
while ( !myRecord.IsEOF() ){myRecord.MoveFirst();
myRecord.GetFieldValue(i,cv); //获得第(i+1)列的数据,数据保存在CDBVariant变量中,不可以直接使用数字0
myRecord.MoveNext();}
myRecord.Close();
mydb.Close();
}上文中的 myRecord.GetFieldValue(i,cv); 语句也可以使用下面的方式实现。
㈢ 利用MFC执行dos命令,system()函数的相关问题。
每个system会弹出一个窗口
如果想在同一窗口中执行多个命令,可采用下面方式:
system("命令1 && 命令2 && 命令3...");
如
system("d: && md abc && cd abc && md def");
相当于打开cmd后执行了如下的命令:
d:
md abc
cd abc
md def
我的回答有没有帮到你?
㈣ 在MFC程序中怎么打开CMD命令窗口,运行一些代码
很多人问,但无正确答案。CSDN也有人问,但CSDN的帖子过期就不能回复,所以别人有答案了也干着急。CSDN领导人脑袋长了肿瘤吧?
答案如下:
using namespace std;
STARTUPINFO si;
memset(&si, 0, sizeof(STARTUPINFO));//初始化si在内存块中的值(详见memset函数)
si.cb = sizeof(STARTUPINFO);
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_SHOW;
PROCESS_INFORMATION pi;//必备参数设置结束
if (!CreateProcessW(TEXT("C:\\WINDOWS\\system32\\cmd.exe"),
TEXT("/k tclsh "),
NULL,
NULL,
FALSE,
0,
NULL,
NULL,
&si,
&pi
)){
cout << "CreateFail!" << endl;
exit(1);
}
else{
cout << "Success!" << endl;
}
//不使用的句柄最好关掉
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
重点是CreateProcessW函数的第二个参数要带上/k参数!!!!!!!!!!!!
㈤ MFC中调用控制台程序如何进行自动输入并执行
以ping命令为例。
CStringA str = "ping sohu.com";
str += " -t";
system(str);
以上是vs2008环境。在vc6下如果CStringA不能通过编译请使用CString代替。
你把ping sohu.com改成你的长文件路径就可以了啊。
CStringA str = "c:\\mypass\\MypassCCCCC.exe";
// str += " -t";
system(str);
另外,要确认你的控制台程序中有接收参数的功能。如果没有,光靠简单的调用api函数是达不到你要求的,即使用其他函数也一样。这样的话,你可以考虑编写一个.bat批处理文件。
system( "X:\\xxxx\\xx.bat");
这下应该够明白了吧
㈥ MFC 主对话框收到消息,就重新执行命令,而不是等到执行完第一次再执行第二次
这个必须基于线程。
窗口消息机制,是一个消息队列,消息是顺序执行的,虽然有“插队”和“清除”机制,但比较简单粗暴。
你需要将按钮内的任务做成一个工作者线程,每次按钮消息是启动这个线程,这样按钮消息就可以快速返回了,但任务依然在继续。这样再次点击按钮的时候,如果存在线程,则结束线程,启动新的线程。
这个逻辑应该是你需要的(记得前面看到你提问过),不过线程的相关知识,对初学者可能有些复杂,你需要了解创建线程、信号灯机制,线程异步管理等相关知识,这个不是几句话说得清的,在VC相关书籍中,是几个大章节的内容。
线程的用法和相关知识太多,建议你使用AfxBeginThread,并着重研究WaitForSingleObject和CEvent用法,网络这两个关键词有各种讲解。
㈦ 菜鸟请教,MFC如何执行带参数的EXE
1、外部运行:cmd中 a.exe -param1 -param2
2、IDE中:属性-调试-命令参数中添加
㈧ MFC按钮调用一程序,如何执行程序命令行参数呢
标准c库函数不知道行不行,如果在win32环境下,调用win32 API绝对是可以的,用shellexecute函数启动程序,命令行参数在程序名称后按空格隔开,在调用程序main函数中使用string strLine=::AfxGetApp()->m_lpCmdLine;就可以获取命令行参数了,在开发多进程项目的时候用的比较多,常用于进程间启动参数传递。
㈨ MFC中定时器运行时能执行其他命令吗
仅供参考:
可以。
在定时器启动的时候,定时器函数中的代码定时执行。
在启动定时器之后的代码也会依次执行。
㈩ MFC中怎么调用cmd并执行命令
ShellExecute(NULL, "open", "ping", "127.0.0.1", NULL, SW_SHOW);