操作系统实验指导书2013原件
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一熟悉Windows2000/XP中的进程和线程
一、实验目的
1、熟悉Windows2000/XP中任务管理器的使用。
2、通过任务管理器识别操作系统中的进程和线程的相关信息。
二、实验内容与步骤
1、启动操作系统自带的任务管理器:
方法:直接按组合键Ctrl+Alt+Del,或者是在点击任务条上的“开始”“运行”,并输入“taskmgr.exe”。如下图所示:
2、调整任务管理器的“查看”中的相关设置,显示关于进程的以下各项信息,
并完成下表(填满即可):
表一:统计进程的各项主要信息
3、从桌面启动办公软件“Word”,在任务管理器中找到该软件的登记,并将其结
束掉。再从任务管理器中分别找到下列程序:winlogon.exe、csrss.exe,试着结束它们,观察到的反应是,原因是。
在任务管理器中找到进程“explorer.exe”,将之结束掉,并将桌面上你打开的所有窗口最小化,看看你的计算机系统起来什么样的变化、得到的结论是(说出explorer.exe进程的作用)。
实验二Windows编程_GUI应用程序
一、实验目的
利用C++ 编译器创建一个GUI应用程序,代码中包括了WinMain() 方法,这是GUI类型的应用程序的标准入口点。
二、实验内容与步骤
步骤1:运行Visual C++ 6.0,在“文件”菜单中依次点击“新建”-“工
程”-“Win32 Application”命令,输入工程名,例如“1”,点击“确定”进入下一个对话框,选择“An simple Win32 Application”,点击“完成”按钮,将建立一个GUI 应用工程。
步骤2:在工作区点击“FileView”,双击“1.cpp”,将清单1中的程序键入1.cpp 中。注:有的代码已经由VC++自动生成,用户只要添加必要的代码即可。
// 1.cpp : Defines the entry point for the application.
#include "windows.h"
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here.
::MessageBox(
NULL, // 没有父窗口
"Hello, Windows xp", // 消息框中的文本
"Greetings", // 消息框标题
MB_OK) ; // 其中只有一个OK按钮
// 返回0以便通知系统不进入消息循环
return 0;
}
关于1.cpp的一些说明:
/*///////////////////////////////////////////////////////////////////////////////////
APIENTRY: 表示是windows的mian函数的入口,实际上APIENTRY是个宏,其定义为
#define APIENTRY WINAPI
而WINAPI也是个宏,其定义为
#define WINAPI __stdcall
这是个关于调用时压栈顺序的修饰符,表示参数压栈的顺序
先压第一个参数,接下来是第二个,依此类推。
当然,定义回调函数也可以用APIENTRY
////////////////////////////////////////////////////////////////////////////
WinMain函数的定义
WinMain函数的原型声明如下:
int WINAPI WinMain(
HINSTANCE hInstance, // handle to current instance
HINSTANCE hPrevInstance, // handle to previous instance
LPSTR lpCmdLine, // command line
int nCmdShow // show state
);
WinMain函数接收4个参数,这些参数都是在系统调用WinMain函数时,传递给应用程序的。
第一个参数hInstance表示该程序当前运行的实例的句柄,这是一个数值。当程序在Windows下运行时,它唯一标识运行中的实例(注意,只有运行中的程序实例,才有实例句柄)。一个应用程序可以运行多个实例,每运行一个实例,系统都会给该实例分配一个句柄值,并通过hInstance参数传递给WinMain函数。第二个参数hPrevInstance表示当前实例的前一个实例的句柄。通过查看MSDN 我们可以知道,在Win32环境下,这个参数总是NULL,即在Win32环境下,这个参数不再起作用。
第三个参数lpCmdLine是一个以空终止的字符串,指定传递给应用程序的命令行参数。例如:在D盘下有一个sunxin.txt文件,当我们用鼠标双击这个文件时将启动记事本程序(notepad.exe),此时系统会将D:\sunxin.txt作为命令行参数传递给记事本程序的WinMain函数,记事本程序在得到这个文件的全路径名后,就在窗口中显示该文件的内容。要在VC++开发环境中向应用程序传递参数,可以单击菜单【Project】→【Settings】,选择“Debug”选项卡,在“Program arguments”编辑框中输入你想传递给应用程序的参数。
第四个参数nCmdShow指定程序的窗口应该如何显示,例如最大化、最小化、隐藏等。这个参数的值由该程序的调用者所指定,应用程序通常不需要去理会这个参数的值。
//LPSTR lpCmdLine lp前缀代表长指针。也可改为PSTR lpCmdLine,都是同一种类型,作为指向字符串的指针。
//另外前缀i 表示int,sz表示以零结束的字符串。
// #define WINAPI _stdcall 该语句指定一个约定,包括如何生成机器代码以及在堆栈中放置函数调用的参数,
//许多Windows函数调用声明为WINAPI
//HINSTANCE hInstance 实例句柄,该句柄唯一标识该程序。
//HINSTANCE hPrevInstance Windows早期版本中,同时运行同一程序多次时,您便创建了该程序的
// 多个实例。在32位Windows版本中,该概念已被抛弃。所以WinMain的第二个参数总是NULL(定义为0)
//LPSTR lpCmdLine 用于运行程序的命令行。某些Windows应用程序使用这个参数以在程序启动时将文件加载到内存。
//int nShowCmd 程序最初显示的方式。可以是正常地,或者是最大地,或者是最小化显示在任务列表栏中。
///////////////////////////////////////////////////////////////////////////////////////
为了显示提示信息给用户,Windows是提供了一个非常方便的API函数MessageBox给用户使用,使用这个API函数可以显示简单的文字信息出来,提醒或提示用户进行下一步操作。