b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

VC中CreateProcess函数用法

电脑杂谈  发布时间:2016-05-17 01:03:54  来源:网络整理

你是否正在寻找关于createprocess的内容?让我把最实时的东西奉献给你:

VC中createprocess函数用法

1.函数说明:

WIN32API函数createprocess用来创建一个新的进程和它的主线程,这个新进程运行指定的可执行文件。

3.参数:

lpApplicationName

lpCommandLine

这个参数可以为空,那么函数将使用参数指定的字符串当作要运行的程序的命令行。

lpProcessAttributes

lpThreadAttributes

bInheritHandles

指示新进程是否从调用进程处继承了句柄。如果参数的值为真,调用进程中的每一个可继承的打开句柄都将被子进程继承。被继承的句柄与原进程拥有完全相同的值和访问权限。

dwCreationFlags

指定附加的、用来控制优先类和进程的创建的标志。以下的创建标志可以以除下面列出的方式外的任何方式组合后指定。

下面是一些常用的标志.

lpCurrentDirectory

lpStartupInfo

lpProcessInformation

createprocess函数实现。

另外createprocess函数除了创建一个进程,还创建一个线程对象。这个线程将连同一个已初始化了的堆栈一起被创建,堆栈的大小由可执行文件的文件头中的描述决定。线程由文件头处开始执行。

新进程和新线程的句柄被以全局访问权限创建。对于这两个句柄中的任一个,如果没有安全描述符,那么这个句柄就可以在任何需要句柄类型作为参数的函数中被使用。当提供安全描述符时,在接下来的时候当句柄被使用时,总是会先进行访问权限的检查,如果访问权限检查拒绝访问,请求的进程将不能使用这个句柄访问这个进程。

createprocess函数不会等待新进程完成它的初始化工作。举例来说,在试图与新进程关联的窗口之前,进程应该先调用WaitForInputIdle,。

ExitProcess, ExitThread, CreateThread, CreateRemoteThread,当一个进程启动时(调用了createprocess的结果)是在进程中序列化进行的。在一段地址空间中,同一时间内这些事件中只有一个可以发生。这意味着下面的限制将保留:

**ExitProcess函数才返回。

CloseHandle函数关闭。如果不再需要这些句柄,最好在创建进程后立刻关闭它们。

5.使用示例:

char chPath[301];

::GetCurrentDirectory(300,(LPTSTR)chPath);//得到当前目录

char path[200]= "\\123.exe";

strcat(chPath,path);

STARTUPINFO si;

PROCESS_INFORMATION pi;

ZeroMemory( &pi, sizeof(pi) );

ZeroMemory( &si, sizeof(si) );

si.cb = sizeof(si);

// Start the child process

if(createprocess(chPath, "", NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))

{

CloseHandle( pi.hProcess );

CloseHandle( pi.hThread );

}

else

{

HANDLE hProcess = GetCurrentProcess();//get current process

TerminateProcess(hProcess,0); //close process

}

posted on

以上就是关于createprocess的全部内容,相信你一定会非常满意。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shenmilingyu/article-5189-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...