网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > VC++ > 正文
从任务通知区启动屏幕保护程序
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/15
下载{$ArticleTitle}原创论文样式
别,以及从scr文件资源中取得屏幕保护程序描述字符串的方法。

  a.对scr文件的判别

  Windows NT提供了对GetBinaryType函数的支持,因此,可用此函数判断一个scr文件是否是Windows可执行程序,并判断出它是基于Win16还是 Win32的可执行程序。这一点很重要,因为,对基于Win32的scr文件,我们在后面要取得它的字符串资源中的一个重要信息,及对屏幕保护程序的描述字符串。还应注意的是,lpApplicationName应给出全路径,否则,它只在进程所在的路径下寻找文件,这样会导致错误,从而不能返回在Windows启动目录下的.scr文件的信息。


  BOOL GetBinaryType(

  LPCTSTR lpApplicationName,

  LPDWORD lpBinaryType

  );

  GetBinaryType调用成功后,lpBinaryType指向的DWORD返回以下值:

  SCS_32BIT_BINARY 基于Win32的应用程序

  SCS_DOS_BINARY 基于MS-DOS的应用程序

  SCS_OS216_BINARY 基于16位OS/2的应用程序

  SCS_PIF_BINARY MS-DOS应用程序的PIF 文件

  SCS_POSIX_BINARY 基于POSIX的应用程序

  SCS_WOW_BINARY 基于16位Windows的应用程序

  b.从scr文件字符串资源中取得屏幕保护文件描述字符串

  当我们判断出了一个基于Win32的scr文件后,就可以着手取得它的字符串。在Win32中,有一种简单有效的方法:把一个EXE或DLL文件以数据文件方式加载,调用LoadLibraryEx函数。

  HINSTANCE LoadLibraryEx(

  LPCTSTR lpLibFileName, // EXE或DLL文件名

  HANDLE hFile, // 保留参数,必须为NULL

  DWORD dwFlags // 函数入口标志

  );

  dwFlags可以是0或以下标志的组合:

  DON''T_RESOLVE_DLL_REFERENCES 系统将DLL映射到进程的地址空间而不调用DllMain函数。

  LOAD_LIBRARY_AS_DATAFILE 系统将DLL象一个数据文件那样映射到进程的地址空间,而不调用DllMain函数。如果要取得EXE中的资源,也可调用LoadLibraryEx函数把EXE映射到进程地址空间。

  LOAD_WITH_ALTERED_SEARCH_PATH 将改变LoadLibraryEx在定位DLL文件时所采用的方法。

  
  当以LOAD_LIBRARY_AS_DATAFILE的方式调用LoadLibraryEx时,系统只是简单地创建一个文件映象对象,把DLL(EXE)映射到本进程的地址空间,并不调用DllMain(WinMain)。如果调用成功,则函数返回一个HINSTANCE,即被映射到本进程地址空间的DLL(EXE)的装入地址,这样,就可以调用LoadString函数,从DLL(EXE)文件的字符串资源表中取得指定的字符串。

  点击示意图

  这里仍需指出的是,必须判断LoadString函数调用是否成功,因为有些scr文件(即使是基于Win32的)也有可能是非标准的(如Windows 95下的大多数scr文件),如果LoadString调用失败,则SSLaunchNT用文件名取代scr的描述字符串填入SSLaunchNT上下文菜单的菜单项。

  • 下一篇资讯: 获得OnOK退出控制
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号