微信(英文名:wechat)是腾讯公司于2011年1月21日推出的一个为智能终端提供即时通讯服务的免费应用程序,微信支持跨通信运营商、跨操作系统平台通过网络快速发送免费语音短信、视频、图片和文字,同时,也可以使用通过共享流媒体内容的资料和基于位置的社交插件“摇一摇”、“漂流瓶”、“朋友圈”、”公众平台“、”语音记事本“等服务插件。
这篇文章主要为大家详细介绍了使用微信PC端的截图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
- }
- }
运行结果如图:
来源: http://www.phperz.com/article/17/0902/337807.html