计算机20级7班+张晴+5011220733+实验二.docxVIP

  • 13
  • 0
  • 约4.5千字
  • 约 12页
  • 2022-06-15 发布于新疆
  • 举报
实验二 windows 进程的创建与销毁 实验目的: 掌握 windows 进程的创建和销毁 API 的调用方法。 实验内容与要求: 1. 创建和销毁一个 Word 进程; 创建进程 API: (1) WinExec:运行一个指定的程序。 UNIT WINAPI WinExec( _In_ LPCTSTR lpCmdLine, //要执行应用程序的命令行,如果不包 含目录路径,则按应用程序目录,当前目录,Windows 系统目录, Windows 目录以及 Path 环境目录来搜索 _In_ UNIT uCmdShow //显示选项,SW_HIDE 表示隐藏窗口并激 活其他窗口。 ) (2) ShellExecute:运行一个外部程序, 并进行一定程度的控制 HINSTANCE ShellExecute( HWND hwnd, LPCTSTR lpOperation, LPCTSTR lpFile, //显示 UI 或错误消息的窗口句柄,可以为 NULL //要执行的操作 //要选择的文件, 如果 Directory 是相对路径 则该字符串不能是相对路径 LPCTSTR lpParameters, //执行文件所需参数,可以为 NULL LPCTSTR lpDirectory, //文件目录,如果为当前工作目录则为 NULL INT nShowCmd //窗口显示标志 ); (3) CreateProcess:创建一个新线程及主线程 BOOL CreateProcess( LPCTSTR lpApplicationName, //要执行的模块名称, 99%的情况都为 NULL LPTSTR lpCommandLine, LPSECURITY_ATTRIBUTES LPSECURITY_ATTRIBUTES //要执行的命令行,不指明文件类型的话, 即为.exe lpProcessAttributes, //用于确定是否可以由子进程继承 返回的新进程对象的句柄,NULL 则不继承 lpThreadAttributes, //用于确定是否可以由子进程继 承返回的新线程对象的句柄, NULL 则不继承 BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, //若为true 则进程中的每个可继承句柄都由新进程 来继承,若为 false 即不继承 //控制优先级和创建进程标志 //指向新进程环境块指针, 若为 NULL,则使用调用进 程的环境 LPSTARTUPINFO lpStartupInfo, //新进程窗口如何显示的 STARTUPINFO 的结构体 LPPROCESS_INFORMATION lpProcessInformation //指向 PROCESS_INFORMATION 结 构的指针, 接受有关新进程的标识符信息 ); (4) STARTUPINFO 结构体 (5) PROCESS_INFORMATION 结构体 (6) 销毁进程 API: BOOL TerminateProcess( HANDLE hProcess, UINT uExitCode ); 参考代码: 2. 挂起和激活创建进程的主线程; 挂起进程的主线程 API DWORD SuspendThread(HANDLE hThread); 激活进程的主线程 API DWORD ResumeThread(HANDLE hThread); 3. 通过 windows 进程管理器查看系统进程列表的变化(快捷键 crtl+shift+esc) 二、实验结果 1 代码实现: #include windows.h #include tchar.h #include stdio.h int main(int argc, char* argv[]) { TCHAR szCommandLine[] = TEXT(NOTEPAD);//或者WCHAR //LPWSTR szCommandLine = TEXT(NOTEPAD);//错误 //STARTUPINFO si = { sizeof(si) }; STARTUPINFO si; PROCESS_INFORMATION pi; ZeroMemory(si, sizeof(si)); si.cb = sizeof(si); ZeroMemory(pi, sizeof(pi)); si.dwFlags = STARTF_USESHOWWINDOW; // 指定wShowWi

文档评论(0)

1亿VIP精品文档

相关文档