加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

Windows API一日一练 87 CreateProcess函数

发布时间:2020-12-14 02:28:51 所属栏目:Windows 来源:网络整理
导读:分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!http://www.captainbed.net 人们需要处理的信息越来越复杂,往往在一个应用程序里是处理不完的,因此,就出现多个应用程序协同处理同

分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!http://www.captainbed.net

人们需要处理的信息越来越复杂,往往在一个应用程序里是处理不完的,因此,就出现多个应用程序协同处理同一件事情。当然多个应用程序分开处理,也是比较容易开发,并且让应用程序复杂难度迅速降低。比如在开发一个银行的交易系统,有一个报表生成的主程序,然后还有很多小的,不同的报表生成程序。这样就需要从主程序里创建小报表程序进行运行。创建进程运行,需要使用函数 CreateProcess 来实现。
?
函数 CreateProcess 声明如下:
?
?
WINBASEAPI
BOOL
WINAPI
CreateProcessA(
??? __in_opt??? LPCSTR lpApplicationName,
??? __inout_opt LPSTR lpCommandLine,
??? __in_opt??? LPSECURITY_ATTRIBUTES lpProcessAttributes,
??? __in_opt??? LPSECURITY_ATTRIBUTES lpThreadAttributes,
??? __in??????? BOOL bInheritHandles,
??? __in??????? DWORD dwCreationFlags,
??? __in_opt??? LPVOID lpEnvironment,
??? __in_opt??? LPCSTR lpCurrentDirectory,
??? __in??????? LPSTARTUPINFOA lpStartupInfo,
??? __out?????? LPPROCESS_INFORMATION lpProcessInformation
??? );
WINBASEAPI
BOOL
WINAPI
CreateProcessW(
??? __in_opt??? LPCWSTR lpApplicationName,
??? __inout_opt LPWSTR lpCommandLine,
??? __in_opt??? LPCWSTR lpCurrentDirectory,
??? __in??????? LPSTARTUPINFOW lpStartupInfo,
??? __out?????? LPPROCESS_INFORMATION lpProcessInformation
??? );
#ifdef UNICODE
#define CreateProcess?CreateProcessW
#else
#define CreateProcess?CreateProcessA
#endif // !UNICODE
?
lpApplicationName 是应用程序的名称。
lpCommandLine 是命令行参数。
lpProcessAttributes 是进程的属性。
lpThreadAttributes 是线程的属性。
bInheritHandles 是否继承父进程的属性。
dwCreationFlags 是创建标志。
lpEnvironment 是环境变量。
lpCurrentDirectory 是当前目录。
lpStartupInfo 是传给新进程的信息。
lpProcessInformation 是进程返回的信息。
?
调用函数的例子如下:
#001?// 创建进程。
#002??// 蔡军生 ?2007/12/11 QQ:9073204 深圳
#003??void TestCreateProcess(void)
#004??{
#005???????? // 清空结构。
#006???????? STARTUPINFO sInfo;
#007???????? PROCESS_INFORMATION pInfo;
#008?
#009???????? ZeroMemory( &sInfo,sizeof(sInfo) );
#010???????? sInfo.cb = sizeof(sInfo);
#011???????? sInfo.dwFlags = STARTF_USESHOWWINDOW;
#012???????? sInfo.wShowWindow = SW_SHOWNORMAL;
#013?
#014???????? ZeroMemory( &pInfo,sizeof(pInfo) );
#015?
#016???????? // 创建一个进程。 ?????
#017??????? if( !::CreateProcess( _T("WinCpp.exe"),??
#018????????????? NULL,
#019????????????? NULL,????????????
#020????????????? NULL,????????????
#021????????????? FALSE,???????????
#022????????????? 0,???????????????
#023????????????? NULL,????????????
#024????????????? NULL,????????????
#025????????????? &sInfo,?????????????
#026????????????? &pInfo )? ???????????
#027?????????????? )
#028???????? {
#029?????????????? // 输出出错信息。
#030?????????????? const int nBufSize = 512;
#031?????????????? TCHAR chBuf[nBufSize];
#032?????????????? ZeroMemory(chBuf,nBufSize);
#033?
#034?????????????? wsprintf(chBuf,_T("CreateProcess failed (%d)./n"),GetLastError() );
#035?????????????? OutputDebugString(chBuf);
#036?????????????? return;
#037???????? }
#038?
#039?
#040???????? // 等进程关闭。
#041???????? WaitForSingleObject( pInfo.hProcess,INFINITE );
#042?
#043???????? // 关闭进程和线程的句柄。
#044???????? CloseHandle( pInfo.hProcess );
#045???????? CloseHandle( pInfo.hThread );
#046?
#047??}
?
?

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!http://www.captainbed.net

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读