首页 > 代码库 > CreateProcess 函数
CreateProcess 函数
进程的创建:可以使用CreateProcess 函数
来源:MSDN(竟然不允许MSDN链接 靠 无语)
BOOL CreateProcess ( LPCTSTRlpApplicationName, LPTSTRlpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes。 LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCTSTR lpCurrentDirectory, LPSTARTUPINFO lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation );
p s z A p p l i c a t i o n N a m e和p s z C o m m a n d L i n e参数分别用于设定新进程将要使用的可执行文件的
名字和传递给新进程的命令行字符串。
若要创建一个新进程,系统必须创建一个进程内核对象和一个线程内核对象(用于进程的
主线程),由于这些都是内核对象,因此父进程可以得到机会将安全属性与这两个对象关联起
来
f d w C r e a t e参数用于标识标志,以便用于规定如何来创建新进程。
p v E n v i r o n m e n t参数用于指向包含新进程将要使用的环境字符串的内存块。
p s z C u r D i r参数允许父进程设置子进程的当前驱动器和目录。
p s i S t a r t I n f o参数用于指向一个S TA RT U P I N F O结构:
p p i P r o c I n f o参数用于指向你必须指定的P R O C E S S I N F O R M AT I O N结构。C r e a t e P r o c e s s在
返回之前要对该结构的成员进行初始化。
小例子:
功能:打开我桌面的一个exe引用程序
#include<Windows.h> #include <iostream> #include<iostream> int main() { LPSTR szCmdLine="C:\\Users\\Lenovo\\Desktop\\mtail.exe"; STARTUPINFO si={sizeof(si)}; PROCESS_INFORMATION pi; si.wShowWindow=TRUE; si.dwFlags=STARTF_USESHOWWINDOW; BOOL ret=::CreateProcessA( NULL, szCmdLine, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi); //释放句柄,否则新进程将无法退出 if(ret) { ::CloseHandle(pi.hProcess); ::CloseHandle(pi.hThread); std::cout<<"新进程的id:"<<pi.dwProcessId<<std::endl <<"Thread id:"<<pi.dwThreadId<<std::endl; } system("pause"); return 0; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。