Windows 2000系统编程——进程的创建

1 引言
新一代操作系统—— Windows 2000 是一个具有完整功能的环境 , 与其他操作系统相比完成同样的任务 Windows 2000 更出色 。编程人员要编写系统层次应用程序和用户应用程序掌握 Windows 2000 中的进程管理至关重要 。下面对 Windows 2000 进程的创建作详细论述 。以便使读者从中掌握 Windows 2000 的特性 , 编写更有效和更有用的程序 。
2 使用 WinExec 命令
⑴ 函数原型:
UINT Win Exec(LPCSTR lpCmdLine, UINT uCmdShow);
⑵ 参数:
lpCmdLine :指向一个空结束的字符串 , 串中包含将要执行的应用程序的命令行(文件名加上可选参数) 。
uCmdShow :定义 Windows 应用程序的窗口如何显示 , 并为 CreateProcess 函数提供 STARTUPINFO 参数的 wShowWindow 成员的值 。
⑶ 返回值:
若函数调用成功 , 则返回值大于 31。若函数调用失败 , 则返回值为下列之一:
①0 :系统内存或资源已耗尽 。
②ERROR_BAD_FORMAT : EXE 文件无效(非 Win32.EXE 或 .EXE 影像错误) 。
③ERROR_FILE_NOT_FOUND :指定的文件未找到 。
④ERROR_PATH_NOT_FOUND :指定的路径未找到 。
虽然 Microsoft 认为 WinExec 已过时 , 但是在许多时候 , 简单的 WinExec 函数仍是运行新程序的最好方式 。简单地传送作为第一个参数的命令行 , 还需要决定如何显示程序(该程序也许会忽视它)的第二个参数 。通常 , 将其设置为 SW_SHOW , 也可尝试 SW_MINIMIZED 或 SW_MAXIMIZED。WinExec 不允许用 CreateProcess 获得的所有选项 , 而它的确简单 。
3 使用 ShellExecute 命令
⑴ 函数原型:
HINSTANCE ShellExecute(HWND hwnd, LPCTSTR lpOperation, LPCTSTR lpFile, LPCTSTR lpParameters, LPCTSTR lpDirectory, INT nShowCmd);
⑵ 参数:
hwnd :指向父窗口的窗口句柄 。此窗口接收应用程序产生的任何信息框 。
lpOperation :一个空结束的字符串地址 , 此字符串指定要执行的操作 。下面的操作字符串是有效的:
"open"
此函数打开由参数 lpFile 指定的文件 , 此文件可以是一个可执行文件或文档文件 , 也可是一个文件夹 。
"print"
此函数打印由参数 lpFile 指定的文件 , 此文件应是一个文档文件 , 假如此文件是一个可执行文件 , 则打开此文件 。
"explore"
此函数搜索由参数 lpFile 指定的文件夹 , 此文件应是一个文档文件 ,
此参数可以为空 。这种情况下 , 函数用于打开由参数 lpFile 指定的文件 。
lpFile :一个空结束的字符串地址 , 此字符串指定要打开或打印的文件或者是要打开或搜索的文件夹 。
lpParameters :假如参数 lpFile 指定一个可执行文件 , lpParameters 则是一个空结束的字符串地址 , 此字符串指定要传递给应用程序的参数 。假如 lpFile 指定一个文档文件 , lpParameters 应为空 。
lpDirectory :一个空结束的字符串地址 , 此字符串指定默认目录 。
nShowCmd :假如 lpFile 指定一个可执行文件 , nShowCmd 表明应用程序打开时如何显示 。假如 lpFile 指定一个文档文件 , nShowCmd 应为空 。
⑶ 返回值:
若函数调用成功 , 则返回值大于 32 , 否则为一个小于等于 32 的错误值 。
说明:可以用此函数打开或搜索一个外壳文件夹 。打开文件夹可用下面任何一种形式:
ShellExecute(handle, NULL, path_to_folder, NULL, NULL, SW_SHOWNORMAL);或
ShellExecute(handle, "open", path_to_folder, NULL, NULL, SW_SHOWNORMAL); 搜索文件夹 , 可用如下形式 ShellExecute(handle, "explore", path_to_folder, NULL, NULL, SW_SHOWNORMAL);ShellExecute 命令虽已过时但易于得到 。该命令向命令解释程序提出打开、浏览或打印文档或文件夹的请求 , 虽然可以用 ShellExecute 运行程序 , 但通常只发送文档名 , 而命令解释程序则决定要运行那个程序 。另外在打开目录文件夹时 , ShellExecute 命令非常有用 。

推荐阅读