WEB开发网
开发学院软件开发汇编语言 用汇编编写屏幕保护程序 阅读

用汇编编写屏幕保护程序

 2008-04-28 09:33:10 来源:WEB开发网   
核心提示:屏幕保护程序是什么,相信大家都用过,用汇编编写屏幕保护程序,但对于它的结构也许就不那么熟悉了,屏幕保护程序是一种特使的 .exe 文件,它必须位于字符串表的首位,ID 为 100,实际上它是一个标准的 PE 文件,除了有扩展名 .scr

屏幕保护程序是什么,相信大家都用过,但对于它的结构也许就不那么熟悉了。屏幕保护程序是一种特使的 .exe 文件,实际上它是一个标准的 PE 文件,除了有扩展名 .scr,当然这个扩展名也是用连接程序产生的 .exe 文件改名得到的。但在编程中,屏幕保护程序又有它的特殊的地方,说穿了就是它的编程规范。

屏幕保护程序有以下特点:

屏幕保护程序是Win32 API 支持一种特殊的应用程序并由系统自动激活。其机制是当条件满足时,系统向当前活动窗口发出字参数 wParam 值为 SC_SCREENSAVE 的 WM_SYSCOMMAND 消息,然后由当前活动窗口执行 SYSTEM.INI 文件中 [boot] 区指定的屏幕保护程序。

屏幕保护程序激活的条件是:在规定时间内没有鼠标或键盘输入、当前的活动窗口是标准的 WINDOWS 应用程序。因为非 WINDOWS 应用,不会理睬 WM_SYSCOMMAND 消息。显然,如果当前活动的程序接管了字参数 wParam 值为 SC_SCREENSAVE 的 WM_SYSCOMMAND 消息并且不传递到 DefWindowProc 函数就可以禁止屏幕保护程序。这对某些运行中不愿意被打断的程序如视频播放,光盘刻录程序特别有用。

可以在控制面板的显示器中选择需要的屏幕保护程序,并可以配置屏幕保护程序的参数。配置的对话框由屏幕保护程序提供。

下面是编写屏幕保护程序的要点:

屏幕保护程序的编写由静态链接库 SCRNSAVE.LIB 支持,它包含了建立屏幕保护程序的主程序和缺省功能,如建立一个缺省的大小为全屏幕的窗口供用户使用,并提供缺省的消息处理程序,它对下面消息的缺省处理是:

WM_SETCURSOR -- 将光标设置为无

WM_PAINT -- 画屏幕背景

WM_LBUTTONDOWN、WM_MBUTTONDOWN、WM_RBUTTONDOWN、WM_KEYDOWN、WM_MOUSEMOVE -- 终止执行

WM_ACTIVATE -- 如果 wParam 是 FALSE,则终止执行

程序的入口代码已经包括在 scrnsave.lib 中,名称为 WinMain,所以程序尾包括 end WinMain 即可。

用户只需编写三个基本函数必须名为 ScreenSaverConfigureDialog、ScreenSaverProc 和 RegisterDialogClasses,这 3 个函数必须在.DEF 文件中指定 export

ScreenSaverProc - 主过程,也就是自动建立的主窗口的窗口过程,所有对屏幕的处理就是由它完成的。可以把未处理的消息传递到 DefScreenSaverProc函数,由系统处理上面说到的缺省处理。缺省 DefScreenSaverProc 过程处理 WM_LBUTTONDOWN、WM_MBUTTONDOWN ; WM_RBUTTONDOWN、WM_KEYDOWN、WM_MOUSEMOVE 消息并结束程序,如果在这些消息时不想退出,可以自行处理,不要传递到 DefScreenSaverProc。

ScreenSaverConfigureDialog - 处理屏幕保护程序配置对话框过程,这个过程并不是由主程序调用的,而是由控制面板的显示器设置程序调用。用户输入的配置数据应该输出到.INI 或注册表中。

RegisterDialogClasses - 登记屏幕保护程序配置对话框的窗口类,如果使用标准的对话框,可以简单地返回 TRUE。

在 ScreenSaverProc 窗口过程中,有个专用消息 WM_ERASEBKGND -- 可以在这时擦除背景,如果把这个消息传到 DefScreenSaverProc,会得到一个全黑的背景。

使用时必须将编译完成的 .exe 文件改名为 .scr 文件,然后拷贝到 Windows 或 Windows\System 目录下。

为使控制面板能够识别,屏幕保护程序的图标(ICON)在资源文件中必须定义为 100,资源文件中必须包含一描述字符串。该字符串用于控制面板显示屏幕保护程序的名字。它必须位于字符串表的首位,ID 为 100。资源文件中屏幕保护程序配置对话框的 ID 必须为2003。

1 2  下一页

Tags:汇编 编写 屏幕保护

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接