CreateProcess函数
函数原型:
BOOL CreateProcess
(
LPCTSTR lpApplicationName, //可执行文件的文件名,如"C:\\Windows\\system32\\notepad.exe"
LPTSTR lpCommandLine, // 指定传递给可执行文件的参数,如"WORDPAD C:\\Windows\\System32\\ReadMe.txt"
LPSECURITY_ATTRIBUTES lpProcessAttributes, //进程安全属性,一般默认为NULL
LPSECURITY_ATTRIBUTES lpThreadAttributes, //线程安全属性,一般默认为NULL
BOOL bInheritHandles, //指定当前进程的可继承句柄是否可被新进程继承
DWORD dwCreationFlags, //指定新进程的优先级及其创建的标志
LPVOID lpEnvironment, //指定新进程使用的环境变量
LPCTSTR lpCurrentDirectory, // 新进程使用的当前目录
LPSTARTUPINFO lpStartupInfo, // 指定新进程主窗口 位置,大小等
LPPROCESS_INFORMATION lpProcessInformation //返回新进程的标志信息,如ID,句柄等
);
下面是一个打开记事本的例程:
1 #include<windows.h>
2 #include <iostream>
3 using namespace std;
4 int _tmain(int argc, _TCHAR* argv[])
5 {
6 TCHAR szComanmd[] = TEXT("WORDPAD C:\\Windows\\System32\\ReadMe.txt");
7 STARTUPINFO si = {sizeof(si)};
8 PROCESS_INFORMATION pi;
9 bool bRet = ::CreateProcess(TEXT("C:\\Windows\\system32\\notepad.exe"),\
10 szComanmd,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi);
11 return 0;
12 }
13
14
其中:
STARTUPINFO 是记录新进程的一些窗口信息,具体的数据结构,请参看http://blog.sina.com.cn/s/blog_5cec38f30100balh.html。
PROCESS_INFORMATION 是记录新进程的标志信息,如ID,句柄等,具体定义如下:
typedef struct _PROCESS_INFORMATION {
HANDLE hProcess; // 进程句柄
HANDLE hThread; // 线程句柄
DWORD dwProcessId; // 进程ID
DWORD dwThreadId; // 线程ID
} PROCESS_INFORMATION, *LPPROCESS_INFORMATION;
浙公网安备 33010602011771号