首页 > 编程 > .NET > 正文

使用微信PC端的截图dll库实现微信截图功能

2020-01-17 22:21:40
字体:
来源:转载
供稿:网友

本文实例为大家分享了截图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  }}

运行结果如图:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表