这篇文章主要为大家详细介绍了使用微信PC端的截图dll库实现微信截图功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了截图dll库实现微信截图功能 ,供大家参考,具体内容如下

ScreenForm.cs代码:


using System;using System.Collections.Generic;using System.Runtime.InteropServices;using System.Windows.Forms;namespace screenT{  public partial class ScreenForm : Form  {    public ScreenForm()    {      InitializeComponent();    }    private void ScreenCapture()    {      DLL.PrScrn();    }    protected override void WndProc(ref Message m)    {      base.WndProc(ref m);      Hotkey.ProcessHotKey(m);    }    private void button1_Click(object sender, EventArgs e)    {      DLL.PrScrn();    }    private void Form1_Load(object sender, EventArgs e)    {      //注册热键(窗体句柄,热键ID,辅助键,实键)        try      {        Hotkey.Regist(Handle, HotkeyModifiers.MOD_ALT, Keys.F1, ScreenCapture);      }      catch (Exception te)      {        MessageBox.Show("Alt + A 热键被占用");      }    }    private void Form1_FormClosed(object sender, FormClosedEventArgs e)    {      //注消热键(句柄,热键ID)        Hotkey.UnRegist(Handle, ScreenCapture);    }  }  public class DLL  {    [DllImport("PrScrn.dll", EntryPoint = "PrScrn")]    public static extern int PrScrn(); //与dll中一致    }  public static class Hotkey  {    #region 系统api    [DllImport("user32.dll")]    [return: MarshalAs(UnmanagedType.Bool)]    private static extern bool RegisterHotKey(IntPtr hWnd, int id, HotkeyModifiers fsModifiers, Keys vk);    [DllImport("user32.dll")]    private static extern bool UnregisterHotKey(IntPtr hWnd, int id);    #endregion    public delegate void HotKeyCallBackHanlder();    private const int WM_HOTKEY = 0x312;    private static int keyid = 10;    private static readonly Dictionary<int, HotKeyCallBackHanlder> keymap =      new Dictionary<int, HotKeyCallBackHanlder>();    /// <summary>    ///   注册快捷键    /// </summary>    /// <param name="hWnd">持有快捷键窗口的句柄</param>    /// <param name="fsModifiers">组合键</param>    /// <param name="vk">快捷键的虚拟键码</param>    /// <param name="callBack">回调函数</param>    public static void Regist(IntPtr hWnd, HotkeyModifiers fsModifiers, Keys vk, HotKeyCallBackHanlder callBack)    {      int id = keyid++;      if (!RegisterHotKey(hWnd, id, fsModifiers, vk))        throw new Exception("regist hotkey fail.");      keymap[id] = callBack;    }    /// <summary>    ///   注销快捷键    /// </summary>    /// <param name="hWnd">持有快捷键窗口的句柄</param>    /// <param name="callBack">回调函数</param>    public static void UnRegist(IntPtr hWnd, HotKeyCallBackHanlder callBack)    {      foreach (var var in keymap)      {        if (var.Value == callBack)          UnregisterHotKey(hWnd, var.Key);      }    }    /// <summary>    ///   快捷键消息处理    /// </summary>    public static void ProcessHotKey(Message m)    {      if (m.Msg == WM_HOTKEY)      {        int id = m.WParam.ToInt32();        HotKeyCallBackHanlder callback;        if (keymap.TryGetValue(id, out callback))        {          callback();        }      }    }  }  public enum HotkeyModifiers  {    MOD_ALT = 0x1,    MOD_CONTROL = 0x2,    MOD_SHIFT = 0x4,    MOD_WIN = 0x8  }}

运行结果如图:

更多相关文章

  1. VS2015常用快捷键详解
  2. Jupyter Notebook & Lab快捷键大全
  3. 实用 | PyCharm常用快捷键整理
  4. Mac版本的Sublime Text常用快捷键
  5. ThinkPHP框架快捷键使用说明
  6. 环境变量的安装以及python cahrm的安装以及常用快捷键的使用
  7. linux下vim配置以及一些常用的快捷键
  8. Linux 命令行快捷键
  9. linux终端常用快捷键

随机推荐

  1. Android编译环境(2) - 手工编译C模块
  2. 学习android的布局
  3. Android入门教程 (二) 第一个App HelloWorl
  4. android实现应用程序的开机自启动
  5. android性能之一:内存泄露、内存溢出的区
  6. Android Studio之软件安装教程
  7. Android(安卓)-BLE蓝牙小DEMO
  8. android之通过phoneStateListener监听电
  9. Android开发:ZXing条码扫描-竖屏解决方案
  10. Android 基础知识、Android 进阶知识、An