㈠ 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);