目前知道三種方式:winexec,shellexecute ,createprocess。
1. 阻塞式呼叫,呼叫時程序阻塞
void cmfccodedlg::callshellscript(cstring path, cstring fbat, cstring param)
; shexecinfo.cbsize = sizeof(shellexecuteinfo);
shexecinfo.fmask = see_mask_nocloseprocess;
shexecinfo.hwnd = null;
shexecinfo.lpverb = null;
shexecinfo.lpfile = fbat;
shexecinfo.lpparameters = param;
shexecinfo.lpdirectory = path;
shexecinfo.nshow = sw_hide;
shellexecuteex(&shexecinfo);
// 等待指令碼返回
waitforsingleobject(shexecinfo.hprocess,infinite);
}callshellscript(null, batfile, allparam); //todo: check path
2. 多執行緒呼叫
dword winapi callbatthreadfunc(handle thread)
; shexecinfo.cbsize = sizeof(shellexecuteinfo);
shexecinfo.fmask = see_mask_nocloseprocess;
shexecinfo.hwnd = null;
shexecinfo.lpverb = null;
// todo: 新增bat檔案的完整路徑
shexecinfo.lpfile = _t("call.bat");
shexecinfo.lpparameters = g_strport;
shexecinfo.lpdirectory = null;
shexecinfo.nshow = sw_hide;
shellexecuteex(&shexecinfo);
// 等待指令碼返回
waitforsingleobject(shexecinfo.hprocess,infinite);
return 0;
} handle thread;
dword dwthreadid;
//呼叫指令碼檔案
thread=::createthread(null,0,callbatthreadfunc,null,0,&dwthreadid);
自動執行指令碼
乙個偶然的機會,發現了自動執行指令碼的東東,真是神奇啊,可以執行sql 控制台命令等。由於研究的時間有限,所以知之甚少 先和大家分享下,哈 dim consoleprocess as new system.diagnostics.process consoleprocess.startinfo.fi...
Mac執行指令碼
由於iphone的成功,用mac os的朋友也越來越多,建立批處理指令碼檔案還是非常重要的。由於在mac下面建立指令碼檔案和windows下面大不一樣,於是寫篇博文紀錄一下。plain view plain copy 1.bin bash 2.echo abc plain view plain co...
Linux執行指令碼
首先指令碼需要有執行許可權 chmod u x file.sh 執行指令碼有三種方法 1.file.sh 特點 開啟bash子程序來執行,也就是開啟額外的程序來進行,不影響原程序的變數 配置等 2.bash file.sh 特點 和.file.sh相同 3.source file.sh 或者 fil...