操作系统实验指导书2013原件

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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函数可以显示简单的文字信息出来,提醒或提示用户进行下一步操作。

相关文档
最新文档