Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2259648
  • 博文数量: 218
  • 博客积分: 5767
  • 博客等级: 大校
  • 技术积分: 5883
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-01 14:44
文章存档

2012年(53)

2011年(131)

2009年(1)

2008年(33)

分类: WINDOWS

2012-01-10 16:32:19

在程序中如何调用可执行程序。
 

第一个程序:调用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的参数。

阅读(2560) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~