C# 通过.Net应用程序在Windows中全局处理打印屏幕

C# 通过.Net应用程序在Windows中全局处理打印屏幕,c#,.net,keyboard-shortcuts,C#,.net,Keyboard Shortcuts,如何使我的C#应用程序成为Windows中的默认“打印屏幕”处理程序 我编写了一个屏幕捕获实用程序,理想情况下,我想让它替换默认的打印屏幕处理程序,或者用一个唯一的组合键来触发它 我知道如何在C++中使用全局钩子等,但是我不清楚如何在.NET中实现这一点。另外,如果有一种不使用超级内存驻留应用程序的方法,为什么不将(开源,免费)与以下脚本一起使用呢 此脚本取自的新闻组,它将打印屏幕映射为使用IrfanView。你可以用它来触发你的程序 ~printscreen:: ifexist,%screen

如何使我的C#应用程序成为Windows中的默认“打印屏幕”处理程序

我编写了一个屏幕捕获实用程序,理想情况下,我想让它替换默认的打印屏幕处理程序,或者用一个唯一的组合键来触发它

我知道如何在C++中使用全局钩子等,但是我不清楚如何在.NET中实现这一点。另外,如果有一种不使用超级内存驻留应用程序的方法,为什么不将(开源,免费)与以下脚本一起使用呢

此脚本取自的新闻组,它将打印屏幕映射为使用IrfanView。你可以用它来触发你的程序

~printscreen::
ifexist,%screenshot1%\irfanview.exe
    {
    run, "%screenshot1%\irfanview.exe" "/capture=0 /convert=%screenshots%\%A_now%_screenshot.jpg"
   sleep,500
   run,%screenshots%  ;open folder
   return
    }
return


~!printscreen::       ;copy only active window
ifexist,%screenshot1%\irfanview.exe
    {

只要您使用WM_键盘钩子捕获PrintScreen键,就没有理由不能在C#中执行此操作。它是少数几个可以在托管代码中使用的全局钩子之一,因为它不需要将DLL注入每个目标进程。相反,上下文将切换回原始应用程序进行处理


Adam的博客上有一篇关于如何在C#中设置这样一个钩子的好文章:

一个很好的建议。在我将第三方依赖项插入安装程序之前,我确实想弄清楚如何在代码中执行此操作。但我肯定会研究它。AutoHotKey是一个独立的应用程序,我无法轻松地将其自定义和打包为应用程序的一部分。它的大小也大约为2MB。作为一个通用的快捷方式工具,它很棒,但它不是现有应用程序的快捷方式插件。我会试试它。但这确实意味着我的程序必须运行才能捕获钥匙,对吗?@Assaf,是的,你的程序需要运行。