C MFC ShellExecute執行指令碼

2021-06-20 03:36:17 字數 1482 閱讀 3542

目前知道三種方式: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...