Không thể có công cụ snipping Windows để tự động chạy với AutoHotKey


13

Tôi đang cố gắng để công cụ bắn tỉa Windows 7 chạy khi tôi nhấn PRINTSCREENnút bàn phím bằng AUTOHOTKEY.

Tôi đã không thành công cho đến nay mặc dù. Đây là những gì tôi có cho tập lệnh AutoHotKey.

Tôi đã thử nó

PRINTSCREEN::Run, c:\windows\system32\SnippingTool.exe

và điều này

PRINTSCREEN::Run, SnippingTool.exe

và điều này

PRINTSCREEN::Run, SnippingTool

Và tất cả những lỗi đó cho tôi về cơ bản là nó không thể tìm thấy tệp, tuy nhiên đường dẫn tệp có vẻ đúng, tôi có thể sao chép dán vào cửa sổ và nó sẽ mở công cụ snipping, bạn có biết tại sao nó không hoạt động không?


Đây là mã đầy đủ cho tệp AHK của tôi ...

;
; AutoHotkey Version: 1.x
; Language:       English
; Platform:       Win7
; Author:         Jason Davis <friendproject@>
;
; Script Function:
; Template script (you can customize this template by editing "ShellNew\Template.ahk" in your Windows folder)
;

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.


/*
PRINTSCREEN = Will run Windows 7 snipping tool
*/
PRINTSCREEN::Run, c:\windows\system32\SnippingTool.exe
return

Câu trả lời:


17

Bạn có đang chạy phiên bản Windows 7 64 bit không?

Windows 7 (cũng như Vista tôi tin) thực hiện cái được gọi là Chuyển hướng hệ thống tập tin WoW64. Nếu đây là trường hợp, bạn sẽ muốn trỏ AHK vào thư mục Sysnative:

PrintScreen :: Chạy, "C: \ Windows \ Sysnative \ SnippingTool.exe"

4

Sử dụng

PrintScreen :: Chạy C: \ Windows \ explorer.exe C: \ Windows \ system32 \ SnippingTool.exe

Điều này sẽ gọi chính xác thực thi với các ranh giới của Chuyển hướng hệ thống tập tin WoW64


4

Bạn có thể xác định xem bạn có cần gọi SnippingTool.exe từ Sysnative hoặc windows32 hay không dựa trên việc autohotkey có chạy như một quy trình Wow64 hay không.

PrintScreen::LaunchSnippingTool()

; Determines if we are running a 32 bit program (autohotkey) on 64 bit Windows
IsWow64Process()
{
   hProcess := DllCall("kernel32\GetCurrentProcess")
   ret := DllCall("kernel32\IsWow64Process", "UInt", hProcess, "UInt *", bIsWOW64)
   return ret & bIsWOW64
}

; Launch snipping tool using correct path based on 64 bit or 32 bit Windows
LaunchSnippingTool()
{
    if(IsWow64Process())
    {
        Run, %windir%\Sysnative\SnippingTool.exe
    }
    else
    {
        Run, %windir%\system32\SnippingTool.exe
    }
}

Thêm thông tin và nguồn cho IsWow64Process tại đây: http://www.autohotkey.com/community/viewtopic.php?t=22277


Tôi đã sử dụng %A_WinDir%thay vì %windir%, với các #noEnvthiết lập bị vô hiệu hóa.
jiggunjer
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.