Windouwc程序设计基础学习
1.关于程序的基本执行
首先我们先重一个最基本的窗口程序执行说行,
CreateWindow() 学过Win32的都知道,创建一个窗口,会调用该函数系列类型,当然这只是一个类型,包括对话框,消息框等等都是一个窗口,下面进入主题
我要讲的是该函数内部的执行过程,声明一下,在看这本书之前,我之前学过WIN32的基本窗口程序设计,
第一个函数
函数介绍:CreateProcess() ,创建一个进程。
CloseHandle() ,关闭句柄
GetStartupinfo()获得创建进程时的StartupInfo结构
结构体: PROCESS_INFORMATION
STARTUPINFO
代码如下
#include <windows.h> #include <winbase.h> #include <stdio.h> #include <tchar.h> int main(int argc,char * argv[]) { char szCommandLine[] = "notepad"; STARTUPINFO si = {sizeof(si)}; PROCESS_INFORMATION pi; si.dwFlags = STARTF_USESHOWWINDOW; si.wShowWindow = TRUE; BOOL bRet = ::CreateProcess( NULL, szCommandLine, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi); if(bRet) { ::CloseHandle(pi.hThread); ::CloseHandle(pi.hProcess); printf("新创建的进程ID号是:%d\n",pi.dwProcessId); printf("新创建的线程ID号是:%d\n",pi.dwThreadId); } }
函数原型:
CreateProcess(
LPCSTR lpApplicationName, //可执行文件的名字
LPSTR lpCommandLine, // 制定了要传递给执行模块的参数
LPSECURITY_ATTRIBUTES lpProcessAttributes // 进程安全性,值为NULL,表示使用默认的安全属性
LPSECURITY_ATTRIBUTES lpThreadAttributes //线程安全性,值为NULL ,表示使用默认的安全属性
BOOL bInheritHandles, //制定了当前进程中可继承句柄是否可以被新进程继承
DWORD dwCreationFlags // 指定了新进程的优先级及其他创建标志)
LPVOID lpEnvironment,// 指定了新进程使用的环境变量
LPCSTR lpCurrentDirectory // 新进程使用的当前目录
LPSTARTUPINFO lpStartupinfo // 指定新进程主窗口中的位置,大小,和标准句柄等
LPPROCESS_INFORMATION lpProcessInformation // 返回新建进程的标志信息
);