第一个程序:调用WinExec()函数,但是打开应用程序后,得手动关闭,没有自行结束的方法。
#include
#include
#include
int main()
{
if(WinExec("C:\\Program Files\\WinRAR\\WinRAR.exe D:\\My_Document_ZL\\Study\\C_code_example\\my_printf.tgz", 1));
printf("success\n");
return 0;
}
第二个程序:调用CreatProcess()函数,它可以用TerminateProcess()函数使之关闭,还可以使之延迟时间。
#include
#include
#include
#include
void main()
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
char* szCmdline[]={"D:\\My_Document_ZL\\C_test\\test\\Debug\\atio.exe"};
//int i;
int ret;
ZeroMemory(&si, sizeof(STARTUPINFO));
si.cb = sizeof(STARTUPINFO);
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_SHOWNORMAL;
printf("Create Process beginning...\n");
ret = CreateProcess(NULL, szCmdline[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
// 等待5秒后,将强行关闭进程。
if(WaitForSingleObject(pi.hProcess, 5000) == WAIT_TIMEOUT)
{
TerminateProcess(pi.hProcess, 0);
}
CloseHandle(pi[0].hThread);
CloseHandle(pi[0].hProcess);
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/sunnyboychina/archive/2006/04/13/661821.aspx
shellexcute()
是通过windows外壳打开任意文件,非可执行文件自动通过关联的程序打开
对于可执行文件,区别不大,不过shellexcute可以指定运行时的工作路径
http://hi.baidu.com/dfaty/blog/item/dd3e710a9ccab71995ca6bf2.html
CreateProcess
如何用CreateProcess启动一个程序,使它隐藏在后台?
BOOL err = CreateProcess("name.exe",NULL,
NULL,NULL,true,CREATE_NEW_CONSOLE |
CREATE_DEFAULT_ERROR_MODE | NORMAL_PRIORITY_CLASS | CREATE_NO_WINDOW,
NULL,SysDir,&si,&pi);
------------------
Add this before you call CreateProcess:
StartInfo.cb = Len(StartInfo);
StartInfo.dwFlags = STARTF_USESHOWWINDOW;
StartInfo.wShowWindow = SW_HIDE;
lngProcessRslt = CreateProcessA(0&, strCmdline, SecurityInfo,
> SecurityInfo, 1&, NORMAL_PRIORITY_CLASS, _
> 0&, 0&, StartInfo, ProcessInfo);
SW_SHOW表示以当前大小激活运行后的程序窗口并显示它。
第二个参数是控制程序主窗口的显示方式
第二个参数可能的取值为 :
SW_HIDE //程序启动后隐藏主窗口
SW_MAXIMIZE //最大化运行
SW_MINIMIZE //最小化运行
SW_RESTORE //将最大化或最小化的窗口恢复正常
SW_SHOW //以当前位置和大小显示主窗口
SW_SHOWMAXIMIZED //激活窗口并以最大化运行
SW_SHOWMINIMIZED //激活窗口并以最小化运行
SW_SHOWMINNOACTIVE //最小化运行,但不激活
SW_SHOWNOACTIVATE //以上一次的窗口大小运行,但不激活
SW_SHOWNORMAL //普通方式,一般运行时采用这个
一般情况下,第二个参数取SW_SHOWNORMAL即可,这样就是无参数运行one.exe
WinExec("one.exe", SW_SHOWNORMAL);第二个参数只是WinExec函数的参数,不是one.exe的参数。