使用微信PC端的截圖dll庫(kù)實(shí)現(xiàn)微信截圖功能
本文實(shí)例為大家分享了截圖dll庫(kù)實(shí)現(xiàn)微信截圖功能 ,供大家參考,具體內(nèi)容如下
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)
{
//注冊(cè)熱鍵(窗體句柄,熱鍵ID,輔助鍵,實(shí)鍵)
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 系統(tǒng)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>
/// 注冊(cè)快捷鍵
/// </summary>
/// <param name="hWnd">持有快捷鍵窗口的句柄</param>
/// <param name="fsModifiers">組合鍵</param>
/// <param name="vk">快捷鍵的虛擬鍵碼</param>
/// <param name="callBack">回調(diào)函數(shù)</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">回調(diào)函數(shù)</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
}
}

運(yùn)行結(jié)果如圖:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- C#截圖程序類似騰訊QQ截圖實(shí)現(xiàn)代碼
- 解決C# 截取當(dāng)前程序窗口指定位置截圖的實(shí)現(xiàn)方法
- c#實(shí)現(xiàn)winform屏幕截圖并保存的示例
- 解決C#全屏幕截圖的實(shí)現(xiàn)方法
- C#實(shí)現(xiàn)網(wǎng)頁(yè)截圖功能
- 對(duì)指定的網(wǎng)頁(yè)進(jìn)行截圖的效果 C#版
- c# 控件截圖的簡(jiǎn)單實(shí)例
- C#實(shí)現(xiàn)類似qq的屏幕截圖程序
- C#實(shí)現(xiàn)通過(guò)ffmpeg從flv視頻文件中截圖的方法
- C#實(shí)現(xiàn)屬于自己的QQ截圖工具
相關(guān)文章
XslTransform.Transform將結(jié)果輸出到字符串里的方法
XslTransform.Transform將結(jié)果輸出到字符串里的方法...2007-04-04
js實(shí)現(xiàn)網(wǎng)頁(yè)防止被iframe框架嵌套及幾種location.href的區(qū)別
首先我們了解一下幾種location.href的區(qū)別簡(jiǎn)單的說(shuō):幾種location.href的區(qū)別js實(shí)現(xiàn)網(wǎng)頁(yè)被iframe框架功能,感興趣的朋友可以了解下2013-08-08
ASP.NET生成eurl.axd Http異常錯(cuò)誤的處理方法
在IIS6中同時(shí)啟用了ASP.NET 2.0 和 ASP.NET 4.0 后,網(wǎng)站程序可能會(huì)出現(xiàn)如下錯(cuò)誤:“ System.Web.HttpException: Path ‘//eurl.axd/‘ was not found. ”2011-05-05
asp.net Silverlight應(yīng)用程序中獲取載體aspx頁(yè)面參數(shù)
有時(shí)候SL應(yīng)用中需要使用由aspx頁(yè)面中傳遞過(guò)來(lái)的參數(shù)值,此時(shí)通常有兩種方法獲取2009-11-11
.NET 6開(kāi)發(fā)TodoList應(yīng)用之實(shí)現(xiàn)PUT請(qǐng)求
PUT請(qǐng)求本身其實(shí)可說(shuō)的并不多,過(guò)程也和創(chuàng)建基本類似。這篇文章主要為大家介紹了.NET6實(shí)現(xiàn)PUT請(qǐng)求的示例詳解,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2021-12-12
將DataTable中的一行復(fù)制到另一個(gè)DataTable的方法
將DataTable中的一行復(fù)制到另一個(gè)DataTable的方法...2007-09-09

