• 大小: 313KB
    文件类型: .rar
    金币: 2
    下载: 0 次
    发布日期: 2021-05-04
  • 语言: C#
  • 标签: C#Hook  

资源简介

使用C#Hook实现的屏幕放大镜,可以实现实时放大,附有源码

资源截图

代码片段和文件信息

/*******************************************************************
 * 声明
 * 
 * 本示例代码仅用于学习交流。
 * 拒绝在未经过本人许可的情况下在任何商业性出版物或商业性网站上使用。
 * 
 *                                                SHARKOO 2006.3.24
 *
 * Mail: sharkoo@msn.com
 * Blog: http://sharkoo.cnblogs.com/
 * 
 *******************************************************************/
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;

namespace ScreenMagnifier
{
/// 
/// 屏幕放大示例 V1.0
/// 
/// 功能说明:
/// 简单实现了屏幕图像的放大显示。采样点为鼠标点(-25,-25)-(25,25),放大2倍显示。
/// 
/// 已知问题:
/// 1。不支持视频截取
/// 2。部分ToolTip提示无法显示
/// 3。可能会造成背景窗口部分显示失效。
/// 4。SKHook类中,对于键盘事件处理,存在不足。
/// 
/// 

public partial class FrmMain : Form
{
#region 私有常量

private readonly int m_ScreenWidth = 1024;

private readonly int m_ScreenHeight = 768;

#endregion 私有常量

#region 私有变量

/// 
/// 用于存在屏幕捕获位图
/// 

private Bitmap m_ScreenCapture = new Bitmap( 50 50 );

/// 
/// 屏幕捕获点X坐标
/// 

private int m_CaptureX = 0;

/// 
/// 屏幕捕获点Y坐标
/// 

private int m_CaptureY = 0;

/// 
/// 锁定对象用于加锁
/// 

private object m_LockObj = new object();

/// 
/// 钩子管理实例
/// 

private SKHook m_HookMain = new SKHook();

#endregion 私有变量

#region 私有方法

/// 
/// 手动释放资源
/// 

private void CustomDispose()
{
this.m_ScreenCapture.Dispose();
}

/// 
/// 使用鼠标位置设置捕获位置同时进行位图捕获及设置窗体显示位置
/// 

/// 
/// 
private void SetCaptureXY( int mousex int mousey )
{
this.GetLoactionOfCapture( ref mousex ref mousey );
if ( this.m_CaptureX == mousex && this.m_CaptureY == mousey )
return;
lock ( this.m_LockObj )
{
this.m_CaptureX = mousex;
this.m_CaptureY = mousey;
}
this.GetLoactionOfForm( ref mousex ref mousey );
Win32API.SetWindowPos( this.Handle -1 mousex mousey 0 0
( int )SetWindowPosFlags.SWP_ASYNCWINDOWPOS | ( int )SetWindowPosFlags.SWP_NOSIZE );
this.CreateScreenCapture();
}

/// 
/// 捕获屏幕图像到位图
/// 

private void CreateScreenCapture()
{
lock ( this.m_LockObj )
{
using ( Graphics g = Graphics.FromImage( this.m_ScreenCapture ) )
{
// g.Clear( Color.White );
g.CopyFromScreen( this.m_CaptureX this.m_CaptureY 0 0 new Size( 50 50 ) );
}
}
if ( this.InvokeRequired )
{
VoidCallback InvalidateCallback = new VoidCallback( this.Invalidate );
this.Invoke( InvalidateCallback null );
}
else
this.Invalidate();
}

/// 
/// 获取合理的窗体显示位置
/// 

/// 
/// <

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       6943  2006-03-24 15:15  ScreenMagnifier0325\FrmMain.cs

     文件        403  2006-03-24 09:17  ScreenMagnifier0325\Program.cs

     文件       5273  2006-03-24 09:17  ScreenMagnifier0325\SKPublic.cs

     文件       3648  2006-03-24 11:49  ScreenMagnifier0325\ScreenMagnifier.csproj

     文件        168  2006-03-24 09:17  ScreenMagnifier0325\ScreenMagnifier.csproj.user

     文件        918  2006-03-24 09:17  ScreenMagnifier0325\ScreenMagnifier.sln

    ..A..H.     20992  2006-03-24 15:15  ScreenMagnifier0325\ScreenMagnifier.suo

     文件     127438  2006-03-24 09:17  ScreenMagnifier0325\Search.ico

     文件        668  2006-03-24 15:14  ScreenMagnifier0325\obj\ScreenMagnifier.csproj.FileList.txt

     目录          0  2006-03-24 09:18  ScreenMagnifier0325\obj\Release\TempPE

     目录          0  2006-03-24 09:18  ScreenMagnifier0325\obj\Release\Refactor

     文件     128004  2006-03-24 12:14  ScreenMagnifier0325\obj\Release\ScreenMagnifier.FrmMain.resources

     文件        180  2006-03-24 12:14  ScreenMagnifier0325\obj\Release\ScreenMagnifier.Properties.Resources.resources

     文件        844  2006-03-24 12:14  ScreenMagnifier0325\obj\Release\ScreenMagnifier.csproj.GenerateResource.Cache

     文件      32256  2006-03-24 15:14  ScreenMagnifier0325\obj\Release\ScreenMagnifier.pdb

     文件     282624  2006-03-24 15:14  ScreenMagnifier0325\obj\Release\ScreenMagnifier.exe

     目录          0  2006-03-24 09:18  ScreenMagnifier0325\obj\Release

     文件        844  2006-03-24 09:17  ScreenMagnifier0325\obj\Debug\ScreenMagnifier.csproj.GenerateResource.Cache

     文件     282624  2006-03-24 09:17  ScreenMagnifier0325\obj\Debug\ScreenMagnifier.exe

     文件     128004  2006-03-24 09:17  ScreenMagnifier0325\obj\Debug\ScreenMagnifier.FrmMain.resources

     文件        180  2006-03-24 09:17  ScreenMagnifier0325\obj\Debug\ScreenMagnifier.Properties.Resources.resources

     文件      32256  2006-03-24 09:17  ScreenMagnifier0325\obj\Debug\ScreenMagnifier.pdb

     目录          0  2006-03-24 09:18  ScreenMagnifier0325\obj\Debug\TempPE

     目录          0  2006-03-24 09:18  ScreenMagnifier0325\obj\Debug\Refactor

     目录          0  2006-03-24 09:18  ScreenMagnifier0325\obj\Debug

     目录          0  2006-03-24 09:18  ScreenMagnifier0325\obj

     文件       1216  2006-03-24 09:17  ScreenMagnifier0325\Properties\AssemblyInfo.cs

     文件       2553  2006-03-24 09:17  ScreenMagnifier0325\Properties\Resources.Designer.cs

     文件       5612  2006-03-24 09:17  ScreenMagnifier0325\Properties\Resources.resx

     文件       1030  2006-03-24 09:17  ScreenMagnifier0325\Properties\Settings.Designer.cs

............此处省略10个文件信息

评论

共有 条评论