📜  截图工具的快捷方式 (1)

📅  最后修改于: 2023-12-03 14:54:25.692000             🧑  作者: Mango

截图工具的快捷方式

截图工具是进行屏幕截图的必备工具,通常需要使用快捷键来进行操作。本文将介绍常用的截图工具快捷键以及如何自定义设置自己喜欢的快捷键。

Windows系统

在Windows系统中,自带了Snipping Tool截图工具,可以使用以下快捷键来进行操作:

  • Win + Shift + S:选择并截取某一部分
  • Alt + M:选择截取模式
  • Ctrl + C:复制截图到剪贴板
  • Ctrl + S:保存截图

除了Snipping Tool,还可以使用其他第三方截图工具,如Greenshot、LightShot等。不同的工具可能有不同的快捷键设置,可以在工具的设置选项中进行自定义。

Mac系统

在Mac系统中,可以使用以下快捷键来进行截图:

  • Command + Shift + 3:截取整个屏幕
  • Command + Shift + 4:选择并截取某一部分
  • Command + Shift + 4 + 空格键:选择窗口并截取

在Mac系统中,还可以使用Preview工具进行截图,可以使用以下快捷键:

  • Command + N:新建截图
  • Command + S:保存截图
  • Command + C:复制截图到剪贴板

和Windows系统类似,不同的第三方截图工具也可以有不同的快捷键设置。

自定义快捷键

如果对于以上快捷键无法适应自己的习惯,也可以进行自定义设置。可以使用AutoHotkey工具(Windows系统)或者Karabiner-Elements工具(Mac系统)进行快捷键的自定义设置。

在AutoHotkey中,可以使用以下代码来实现Win + F1为截取当前窗口的快捷键:

#F1::WinGetPos,, width, height, id ;获取当前窗口的坐标和大小
WinGet, pid, PID, % "ahk_id " id ;获取当前窗口的进程ID
DllCall("PrintWindow", "UInt", id, "UInt", 0, "UInt") ;截取窗口快照
h:=DllCall("FindWindow", "str", "#32770", "UInt", 0) ;查找窗口操作框架的句柄
PostMessage, 0x111, WinExist("A"), 0 ;发送关闭操作框架窗口的消息
saving_img:=A_Desktop "\temp_save.jpg"
DllCall("gdiplus\GdiplusStartup", "UIntP", pToken, "UInt", 0, "Ptr")
pImage:=DllCall("CreateBitmap", "int", width,"int", height, "UInt", 1, "UInt", 32, "UInt", 0)
hDC:=DllCall("CreateCompatibleDC", "UInt", 0)
DllCall("SelectObject", "UInt", hDC, "UInt", pImage)
DllCall("BitBlt", "UInt", hDC, "Int", 0, "Int", 0, "Int", width, "Int", height, "UInt", id, "Int", 0, "UInt", 0xCC0020)
bitmapData:=NumPut(hDC + 20 + ( A_PtrSize = 8 ? 8 : 0 ), &bitmapData, "ptr")
VarSetCapacity(FontFamily, 70, 0)
Loop % DllCall("gdiplus\GdipGetFontFamilyFromName", "wstr", "Arial", "ptr", &FontFamily, "ptr") ;当字体只有新宋体时,可改用“SimSun”
    fontfamily_uid:=NumGet(FontFamily + (A_Index - 1) * 4, "uint")
Loop % DllCall("gdiplus\GdipCreateFromHDC", "ptr", hDC, "ptr*", graphics := 0)
{
    if (A_Index = 1)
    {
        DllCall("gdiplus\GdipSetTextRenderingHint", "ptr", graphics, "int", 5, "ptr")
        DllCall("gdiplus\GdipCreateSolidFill", "uint", 0x22FFFFFF, "ptr*", brush := 0)
        DllCall("gdiplus\GdipFillRectangleI", "ptr", graphics, "ptr", brush, "int", 0, "int", 0, "int", width, "int", 25) ;注意修改此数字以调整文字所占高度
    }
    DllCall("gdiplus\GdipCloneFont", "ptr", fontfamily_uid, "double", 10, "int", 0, "ptr*", font := 0)
    DllCall("gdiplus\GdipCreateSolidFill", "uint", 0xFFFFFFFF, "ptr*", brush := 0)
    DllCall("gdiplus\GdipDrawString", "ptr", graphics, "wstr", "由QQ775077054帮助您抓屏", "int", -1, "ptr", font, "ptr", &Rect, "ptr", brush)
    DllCall("gdiplus\GdipDeleteFont", "ptr", font)
    DllCall("gdiplus\GdipDeleteBrush", "ptr", brush)
    DllCall("gdiplus\GdipDeleteGraphics", "ptr", graphics)
}
DllCall("gdiplus\GdipDisposeImage", "ptr", pImage)
DllCall("gdiplus\GdiplusShutdown", "UInt", pToken)
FileDelete, %saving_img%
saved:=DllCall("Gdiplus\GdipSaveImageToFile", "ptr", pImage, "wstr", saving_img, "ptr", &CLSID_JPG, "ptr", 0)
ClipBoard:=FileRead0(saving_img)
FileDelete, %saving_img%
return

上述代码将Win + F1设置为截取当前窗口的快捷键。具体可以根据需求进行自定义修改。

在Karabiner-Elements中,可以使用以下代码来将Ctrl + Shift + 4改为Ctrl + F1:

{
    "description": "Ctrl + Shift + 4 to Ctrl + F1",
    "manipulators": [
        {
            "type": "basic",
            "from": {
                "key_code": "4",
                "modifiers": {
                    "mandatory": [
                        "left_shift",
                        "left_control"
                    ]
                }
            },
            "to": [
                {
                    "key_code": "f1",
                    "modifiers": [
                        "left_control"
                    ]
                }
            ]
        }
    ]
}

如上述代码,可以根据需求进行快捷键的自定义设置。

总之,截图工具的快捷键有很多种,可以根据自己的具体需求进行设置。