鱼C论坛

 找回密码
 立即注册
查看: 2675|回复: 8

[原创] C语言 屏幕乱程序

[复制链接]
发表于 2016-6-18 20:02:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 无符号整形 于 2016-6-18 20:30 编辑

改进自《Windows程序设计》仅供参考!
警告:屏幕乱别怪我
提醒:注销或者重启吧!除非你会解锁
  1. #include <windows.h>

  2. #define NUM 32767

  3. LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;

  4. int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
  5.                     PSTR szCmdLine, int iCmdShow)
  6. {
  7.      static int iKeep [NUM][4] ;
  8.      HDC        hdcScr, hdcMem ;
  9.      int        cx, cy ;
  10.      HBITMAP    hBitmap ;
  11.      HWND       hwnd ;
  12.      int        i, j, x1, y1, x2, y2 ;

  13.      if (LockWindowUpdate (hwnd = GetDesktopWindow ()))
  14.      {
  15.           hdcScr  = GetDCEx (hwnd, NULL, DCX_CACHE | DCX_LOCKWINDOWUPDATE) ;
  16.           hdcMem  = CreateCompatibleDC (hdcScr) ;
  17.           cx      = GetSystemMetrics (SM_CXSCREEN) / 10 ;
  18.           cy      = GetSystemMetrics (SM_CYSCREEN) / 10 ;
  19.           hBitmap = CreateCompatibleBitmap (hdcScr, cx, cy) ;
  20.          
  21.           SelectObject (hdcMem, hBitmap) ;

  22.           srand ((int) GetCurrentTime ()) ;
  23.          
  24.           for (i = 0 ; i < 2   ; i++)
  25.                   for (j = 0; j < NUM; j++)
  26.           {
  27.                            LockWindowUpdate(hwnd = GetDesktopWindow());
  28.                if (i == 0)
  29.                {
  30.                     iKeep [j] [0] = x1 = cx * (rand () % 10) ;
  31.                     iKeep [j] [1] = y1 = cy * (rand () % 10) ;
  32.                     iKeep [j] [2] = x2 = cx * (rand () % 10) ;
  33.                     iKeep [j] [3] = y2 = cy * (rand () % 10) ;
  34.                }
  35.                else
  36.                {
  37.                                    x1 = iKeep[NUM - 1 - j][0];
  38.                                    y1 = iKeep[NUM - 1 - j][1];
  39.                                    x2 = iKeep[NUM - 1 - j][2];
  40.                                    y2 = iKeep[NUM - 1 - j][3];
  41.                }
  42.                BitBlt (hdcMem,  0,  0, cx, cy, hdcScr, x1, y1, SRCCOPY) ;
  43.                BitBlt (hdcScr, x1, y1, cx, cy, hdcScr, x2, y2, SRCCOPY) ;
  44.                BitBlt (hdcScr, x2, y2, cx, cy, hdcMem,  0,  0, SRCCOPY) ;
  45.           }
  46.                
  47.           DeleteDC (hdcMem) ;
  48.           ReleaseDC (hwnd, hdcScr) ;
  49.           DeleteObject (hBitmap) ;
  50.      }
  51.      return 0;
  52. }
复制代码

原理:
第一步 禁止更新屏幕
第二步 用GetDCEx获取屏幕HDC,把他放进位图
第三步 算出屏幕分辨率,把截图的结果大小/10重新显示
第四步 把获取的图形显示并随机分配位置
第五步 重新开始,进行32767次循环!


链接:
百度云:http://pan.baidu.com/s/1kV72Xqn 无密码
360云:https://yunpan.cn/cRkRwD3EWv7Tm  访问密码 7710
如果发生找不到msvcr120.dll的情况,请下载msvcr120.dll,并把它拷贝到主程序的目录。
360云 msvcr120.dll https://yunpan.cn/cRkRLPIwDfnYz  访问密码 422e
百度云 msvcr120.dll http://pan.baidu.com/s/1dFNUnwH 无密码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-6-18 20:18:12 | 显示全部楼层
占个沙发
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-6-19 21:32:43 | 显示全部楼层
那么问题来了,效果截图咧?有解锁密码之类的吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-6-19 21:35:38 | 显示全部楼层
没,因为屏幕花了截不了图T_T
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-6-19 21:36:15 | 显示全部楼层
~风介~ 发表于 2016-6-19 21:32
那么问题来了,效果截图咧?有解锁密码之类的吗?

没,因为屏幕花了截不了图T_T
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-6-19 21:37:50 | 显示全部楼层
~风介~ 发表于 2016-6-19 21:32
那么问题来了,效果截图咧?有解锁密码之类的吗?

你试过没
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-6-19 21:50:23 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-6-19 22:11:29 | 显示全部楼层

好吧,下次用虚拟机截图给你
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-6-20 19:21:04 | 显示全部楼层
有人试过吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 23:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表