精华内容
下载资源
问答
  • 很多xp系统竟然没有自带的屏保,可下载测试用。
  • 真正的windows屏幕保护程序 雪花屏保 真正的windows屏幕保护程序 雪花屏保 真正的windows屏幕保护程序 雪花屏保 真正的windows屏幕保护程序 雪花屏保 真正的windows屏幕保护程序 雪花屏保 真正的windows屏幕保护程序...
  • WMP可视化插件包装屏幕保护程序
  • WMP可视化插件包装屏幕保护程序
  • 三维迷宫.scr是windows9x年代一款屏幕保护程序,现在看来仍然令人十分怀念,测试了一下这个屏保仍可运行WIN7系统上。程序上单击右键,选择安装即可。可设置封面地板及天花板纹理,设置图像质量及显示迷宫图。
  • 酷炫Linux屏幕保护程序Windows版本。
  • 摘要:C#源码,系统相关,屏幕保护 C#启动Windows屏幕保护程序,点击程序窗口上的按钮,即可启动用户设置的Windows屏幕保护程序,功能仅此而已,初学者新手学习。
  • windows7系统怎么设置屏幕保护程序.docx
  • 阻止屏幕保护程序

    2015-05-14 23:55:43
    完全绿色,简洁小巧,很实用的小程序,为打游戏时屏幕保护程序不受限制的频繁出现而设计的。
  • 如果你的程序需要一个很长的时间段来进行大量的数据处理,这段时间长得足以使Windows因检测不到用户动作而激活屏幕保护程序,一旦启动了屏幕保护程序,你的程序运行实际上就变慢了,这会大大影响程序的正常运行...
  • windows7系统怎么设置屏幕保护程序.docx
  • Windows 7系统如何更改屏幕保护程序.docx
  • 虚拟屏幕保护程序系统是纯粹基于Winasm Studio设计的基于Windows的程序。 屏幕保护程序的主要设计基于Windows应用程序编程接口(Windows API),这是Microsoft的核心应用程序编程接口。 实施的基本思想是构建一个...
  • 此文件是windowsXP屏幕保护程序的根本文件。 解压后打开测试即可!
  • 屏幕保护程序中,出现灰色的一栏【此时无法设置等待时间和设置是否回到登陆界面的时候】,用以下方法即可 一、用Win+R键打开注册表工具 二、运行框输入 regedit 三、依次打开这些以下目录 HKEY_CURRENT_USER\...

     

    屏幕保护程序中,出现灰色的一栏【此时无法设置等待时间和设置是否回到登陆界面的时候】,用以下方法即可

    一、用Win+R键打开注册表工具

    二、运行框中输入  regedit

    三、依次打开这些以下目录

            HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\Control Panel\Desktop

    四、删掉Desktop目录下的ScreenSaverIsSecure和ScreenTimeOut这两个文件

           (要是还有有scrnsave.exe保护程序,也一起删除)

     

    本人win10 亲测有效

    展开全文
  • 使用Win32 SDK开发屏幕保护程序

    千次阅读 2019-01-04 10:26:51
    屏幕保护程序(Screen Saver)的历史几乎与视窗操作系统的历史一样悠久,设计它的目的是为了保护CRT显示器使其的使用寿命更长。但随着技术的进步,新型的CRT显示器及液晶显示器已经无须这样做了,不过屏幕保护程序并未...

    暮鼓集    行走集

    1.引言

    屏幕保护程序(Screen Saver)的历史几乎与视窗操作系统的历史一样悠久,设计它的目的是为了保护CRT显示器使其的使用寿命更长。但随着技术的进步,新型的CRT显示器及液晶显示器已经无须这样做了,不过屏幕保护程序并未消失,因为其绚丽的画面成了人们彰显个性的方式。

    现在,逼真的水族箱,浩瀚的太空以及更吸引眼球的屏幕保护程序不段被开发出来。

    如果你有兴趣开发自己的屏幕保护程序,并且具有Windows程序的开发经验,请深入阅读本文,本文将提供使用Win32 Platform SDK开发屏幕保护程序的指引及范例。

    2.屏幕保护程序是一种应用程序

    屏幕保护程序虽然变化多端,但对开发者而言,它仍然是一种Windows应用程序,虽然屏幕保护程序的扩展文件名是scr,但在文件格式上与exe可执行文件是完全一样的。

    那么,是不是只要是Windows应用程序都可以作为屏幕保护程序呢?

    我们做个一个实验,将Windows自带的“扫雷”程序文件winmine.exe改成winmine.scr,接着我们打开显示器设定,选择屏幕保护程序选项卡,可以发现winmine.scr已经被当成一个屏幕保护程序出现在列表里。我们选中它,看看发生了甚么--扫雷程序运行起来了!但是,随后无论我们如何摆弄键盘和鼠标,程序不会象其他屏幕保护程序那样自动关闭。

    所以,虽然屏幕保护程序一种应用程序,但是它与普通应用程序在人机界面上有所不同,我们可以归纳出以下几点特征:

    操作系统自动运行程序 全屏幕的窗口 用户输入即退出 因此,只要我们在一个应用程序中实现这些特征,那么这个应用程序即可做为屏幕保护程序。

    3.实现屏幕保护程序的基本特征

    3.1 操作系统自动运行程序

    这实际上由系统完成,只要用户将程序设定为系统的屏幕保护程序,那么当用户没有输入一段时间后,系统就会自动调用这个程序。因此,这不需要开发者操心。

    3.2. 创建全屏幕的窗口

    我们在创建Window时设置其坐标及长宽参数即可实现这个目的:

    CreateWindow( WNDCLASS_SSFRAME,
                             NULL,
                             WS_POPUP|WS_VISIBLE,
                             0,
                             0,
                             GetSystemMetrics( SM_CXSCREEN ),
                             GetSystemMetrics( SM_CYSCREEN ),
                             HWND_DESKTOP,
                             NULL,
                             hInst,
                             NULL);
    

    注意,在这里函数参数中的父窗口句柄传入的是HWND_DESKTOP。

    3.3. 用户输入即退出

    用户输入的主要途径是通过键盘或鼠标,在Windows系统中,当键盘或鼠标事件发生时,系统会产生一系列的消息通知应用程序,具体有如下几个:

    WM_LBUTTONDOWN  按下鼠标左键
    WM_MBUTTONDOWN按下鼠标中键   
    WM_RBUTTONDOWN按下鼠标右键
    WM_MOUSEMOVE鼠标移动
    WM_KEYDOWN按下键盘键
    WM_KEYUP抬起键盘键
    WM_SYSKEYDOWN按下键盘系统键

      (注: 系统键指Windows系统定义的用来激活菜单的F10键,以及按下Alt与其它键的组合键)。

    因此,当屏幕保护程序收到这些消息时,应立刻退出运行,在消息处理函数添加如下的代码:

    INT g_nOrigin_X = -1, g_nOrigin_Y = -1;
    
    switch( message )
    {
     ...
    case WM_LBUTTONDOWN:
    case WM_MBUTTONDOWN:
    case WM_RBUTTONDOWN:
    case WM_KEYDOWN:
    case WM_SYSKEYDOWN:
        PostQuitMessage( 0 ); // 退出程序
        break;  
    case WM_MOUSEMOVE:
        {
            INT nNew_X = LOWORD(lParam);
            INT nNew_Y = HIWORD(lParam);
            if( g_nOrigin_X == -1 && g_nOrigin_Y == -1 )
            {
               g_nOrigin_X = nNew_X ;
               g_nOrigin_Y = nNew_Y ;
             }
             else if( g_nOrigin_X != nNew_X  &&  g_nOrigin_Y != nNew_Y )
                PostQuitMessage( 0 );
        }
    ...
    }
    

    请注意,程序对WM_MOUSEMOVE的消息的处理有些特殊。

    当应用程序开始之行时,系统会将当前的鼠标坐标用WM_MOUSEMOVE消息通知应用程序。如果采用收到这个消息就退出处理方法,就会导致程序刚运行就会退出。因此,通过使用两个全局变量g_nOrigin_X和g_nOrigin_Y来纪录下初始化时的鼠标位置值。当再次收到这一消息时,通过比较当前鼠标位置与纪录的位置值可检测出鼠标有没有被移动过,若检测到则退出运行。

    3.4 实现屏幕保护程序的画面

    这与普通应用程序是完全一样的,在WM_PAINT里运用GDI API实现你的想法。在本例中,我们什么也不做,这就是简单实现黑屏的效果。

    按照上面的方法生成的屏幕保护程序已经有模有样了。

    4.成为真正的屏幕保护程序

    尽管上述的应用程序已经很像一个屏幕保护程序了,但是,如果我们深入使用它,就会发现一些问题。

    当我们把这个应用程序的扩展名改成scr并且设定它为系统的屏幕保护程序后,再次在控制面板中选择显示器设定并进入屏幕保护程序选项卡,发现及时我们没有“测试”,它却已经运行了。

    这是因为,Windows系统会通过不同的命令行参数,以三种方式运行屏幕保护程序:

    方式命令行参数
    正常(由系统自动执行,全屏幕显示/s
    配置(屏幕保护程序选项卡中的设定)/c
    预览(显示在屏幕保护程序选项卡的小窗口中)/p

    当我们一进入显示器设定的屏幕保护程序选项卡,系统就会自动在小窗口中预览当前选中的屏幕保护程序,即在命令行中传入/p参数运行了程序。而我们的程序中并未处理命令行参数,所以出现了上述的问题。

    4.1 处理命令行参数

    程序如下

    if( __argc > 1 )
    {
     if( strstr(__argv[1], "/p"))
     {
      if( __argc == 3 )
      {
       hFrameWnd = (HWND)atoi( __argv[2] );
    
      GetClientRect( hFrameWnd, &rect );
      CreateWindow( "ScreenSaverDraw", NULL,
        WS_CHILD|WS_VISIBLE,
        rect.left, rect.top,
        rect.right, rect.bottom,
        hFrameWnd, NULL,
        hInst, NULL);
    
      return 0;
      }
     }
     else if(strchr(__argv[1], 'c') )
     {
      MessageBox( NULL, "This screen saver doesn't have configuration",
       "Blank Screen Saver", MB_OK );
      // Preview mode
      return 0;
     }
    }
    

    我们重点要处理的是/p和/c参数。

    当系统传入/p参数时,一定会将预览窗口的句柄通过第二个命令行参数一并传入。因此在程序中,可以通过

    hFrameWnd = (HWND)atoi( __argv[2] );
    
    

    来获知预览窗口句柄,此后可以在此窗口中显示预览界面。

    当系统传入/c参数时,通常我们要创建一个对话框,并在其中提供一些设定让用户对屏幕保护程序的外观进行定制而使其更具个性。在本程序中,为了简化,所以只其弹出一个对话框,告知用户"This screen saver doesn’t have configuration”。

    4.2 密码验证

    如果在设置屏幕保护程序的时候选择了密码保护选项,则当屏幕保护程序退出前,应该显示密码验证窗口。

    应用程序如何获知用户有没有选择密码保护? Windows会通过发送消息SCRM_VERIFYPW消息来通知应用程序来进行保护。

    我们可以定制一个对话框要求用户输入指定的密码。 也可以通过Windows的Shell API使用共用的密码界面,这会更加简单可靠。

    处理SCRM_VERIFYPW的代码:

    case SCRM_VERIFYPW:
     if( VerifyPassword(hWnd) )
      PostQuitMessage(0);
     break;
    

    函数VerifyPassword的代码:

    BOOL VerifyPassword( HWND hwnd )
    {
        // Under NT, we return TRUE immediately. This lets the saver quit,
        // and the system manages passwords. Under '95, we call VerifyScreenSavePwd.
        // This checks the appropriate registry key and, if necessary,
        // pops up a verify dialog
    
        OSVERSIONINFO osv;
        HINSTANCE hpwdcpl;
        typedef BOOL (WINAPI *VERIFYSCREENSAVEPWD)(HWND hwnd);
        VERIFYSCREENSAVEPWD VerifyScreenSavePwd;
        BOOL bRet;
    
        osv.dwOSVersionInfoSize = sizeof(osv);
     
        GetVersionEx( &osv );
    
        if( osv.dwPlatformId == VER_PLATFORM_WIN32_NT )
             return TRUE;
    
        hpwdcpl = LoadLibrary( "PASSWORD.CPL" );
    
        if( hpwdcpl == NULL )
            return TRUE;
    
        VerifyScreenSavePwd=(VERIFYSCREENSAVEPWD)GetProcAddress(hpwdcpl,"VerifyScreenSavePwd");
     
        if (VerifyScreenSavePwd==NULL)
        {
            FreeLibrary( hpwdcpl );
            return TRUE;
        }
    
        bRet = VerifyScreenSavePwd( hwnd );
        FreeLibrary(hpwdcpl);
    
        return bRet;
    }
    

    4.3 处理其它消息

    屏幕保护程序还必须处理如下系统消息

    WM_ACTIVATE

    WM_ACTIVATEAPP

    WM_NCACTIVATE   

    这是因为我们没有处理WM_SYSCOMMAND消息。当我们选择最大化,最小化按钮,选择系统菜单时等等,或者是应用程序就会收到这个消息,

    前三个消息指示当程序窗口被系统或其它应用程序解除活动状态时,应退出。(注,wParam为FALSE表示收到这是一个DEACTIVATE消息。WM_SYSCOMMAND是系统通知消息,wParam标示参数类型,SC_SCREENSAVE和SC_CLOSE表示系统要求执行预定的屏幕保护程序和结束程序,这两种情况下,也应该结束程序的执行。

    代码如下:

    switch( message )
    {
     ...  
    case WM_ACTIVATE:
    case WM_ACTIVATEAPP:
    case WM_NCACTIVATE :
        if( wParam == FALSE )
             PostQuitMessage( 0 );
         break;
     
    case WM_SYSCOMMAND:
         if( wParam == SC_SCREENSAVE || wParam == SC_CLOSE )
             PostQuitMessage( 0 );
        break;
     ...
    }
    

    4.4 隐藏光标

    由于屏幕保护程序运行过程中,不需要与用户互动,因此鼠标光标没有必要显示出来。隐藏鼠标的光标可以通过处理WM_SETCURSOR消息来实现。

    case WM_SETCURSOR:  
      SetCursor( NULL );  
      return FALSE;
    

    5.让开发更简单-Screen Saver程序库

    使用上述的方法所开发的应用程序已经具有屏幕保护程序的典型特征了。我们可以了解,任何屏幕保护程序为了实现其共有特征,必须对键盘,鼠标和部分系统消息进行相同的处理。

    Microsoft考虑到了这一点,它对这些处理过程进行封装,这就是Screen Saver程序库scrnsave.lib。

    在这个程序库中,Mircosoft封装了包括WinMain,注册Window Class(窗口类),建立消息循环等过程。开发者要做的只是完成名为”ScreenSaverProc”的消息处理函数。

    下面是用Screen Saver程序库改写的”全屏”程序的完整代码。

    #include <windows.h>
    #include <scrnsave.h>
    
    LRESULT CALLBACK ScreenSaverProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam )
    {
        switch( message )
        {
            case WM_PAINT:
            {
                PAINTSTRUCT ps;
                HDC hdc;
                RECT rect;
       
                GetClientRect( hWnd, &rect );
       
                hdc = BeginPaint(hWnd, &ps);
       
                hBrush = CreateSolidBrush( RGB(0,0,0) );
                FillRect( hdc, &rect, hBrush );
       
                DeleteObject( hBrush );
                EndPaint( hWnd, &ps );
            }
            break;
     
    
        case SCRM_VERIFYPW:
            ScreenSaverChangePassword( hWnd );
            break;
        }
     
        defScreenSaverProc(hWnd, message, wParam, lParam);
    }
    
     
    
    BOOL WINAPI RegisterDialogClasses (HANDLE hInst)
    {
        return TRUE;
    }
    
     
    
    BOOL WINAPI ScreenSaverConfigureDialog (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
    {
        switch( message )
        {
           case WM_INITDIALOG:
               return FALSE;
        }
        return 0;
    }
    

    6.结束语

    通过阅读本文,相信读者已经掌握了屏幕保护程序的开发方法。对于开发一般的屏幕保护程序,我建议使用Screen Saver程序库进行开发,这样,开发者可以将精力放在屏幕保护程序的内容的开发上,从而提高开发的效率。

    展开全文
  • scr屏幕保护程序.rar

    2021-10-13 13:17:51
    使用方法:把scr格式的文件拷贝到windows系统的windows\system32即可,然后就可以”桌面>设置>屏幕保护程序找到,windows10任务栏搜索“屏幕保护”就找到屏幕保护程序设置。 ------------------------- ...
  • 这个小工具是Windows屏幕保护程序锁定的暂时避开。 尽管可以编辑注册表,但是公司拥有的计算机上,通常会登录时由GPO安全策略将其重置。 这个小实用工具是暂时允许绕过锁定,基本上是通过将鼠标移动一个像素或两...
  • Windows8系统使用屏幕保护程序的方法.docx
  • Win95 专有的屏幕保护程序
  • 1、将解压出来的文件全部复制到c:\windows目录下,然后桌面的屏幕属性屏幕保护程序而选择本程序即可 2、MagicImages_Config.lua文件为本屏保程序的配置文件,采用Lua编写,通过修改此文件可自由定制模型显示效果或...
  • 经验 经典的Windows XP徽标屏幕保护程序,适用于所有OSX。
  • windows屏幕保护程序

    2010-09-23 18:15:55
    很漂亮的屏幕保护程序 1.下雨屏保 2.绚丽火焰屏保 3.。。。。。
  • Windows的磷屏幕保护程序 周末项目,使Windows版本的... *还包括一个小应用程序,该应用程序位于通知托盘,并且检测到会话锁定时(锁定计算机时)会启动屏幕保护程序,因此您不必等待超时。 只需将SCRLockStarte
  • windows xp 自带屏幕保护程序

    热门讨论 2012-03-18 17:36:17
    新下的很多xp 系统竟然没有自带的屏保 很是费解啊
  • 内容索引:VC/C++源码,系统相关,屏幕保护 禁止、启用windows屏幕保护程序VC源代码,一键禁止、一键打开,压缩包内分别包含禁止和启用的程序,两个是独立分开的,互不干涉,有经验的VC高手就不用看了,入门新兵可参考...
  • Hacker_src windows黑客帝国屏幕保护程序 todo: 优化用户体验:体现能够设置滚落的字符,下落速度,物体的密度,物体的大小. 但是首先,我要先学一下C++和补充一下屏幕保护的知识
  • 一篇文章介绍如何使用可编写代码的屏幕保护程序源代码C#开发屏幕保护程序
  • CruelMinimalClock是Windows屏幕保护程序,可与所有版本的Windows(包括Windows 10、8.1、8、7)一起使用。 特征 时钟颜色随脉冲效果而变化 使用大多数可用的Pt sans字体 黑色背景寻找低屏幕功耗 最小的外观 使用...
  • dot_scr:记录Windows 3.1屏幕保护程序的DOSBox电影并将其发布到Twitter的Perl进程

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 46,191
精华内容 18,476
关键字:

7中屏幕保护程序在windows