Tidak dapat membuat alat snipping Windows dijalankan secara otomatis dengan AutoHotKey

13

Saya mencoba menjalankan alat sniping Windows 7 ketika saya menekan PRINTSCREENtombol keyboard saya dengan AUTOHOTKEY.

Sejauh ini saya belum berhasil. Inilah yang saya miliki untuk skrip Autohotkey.

Saya sudah mencoba ini

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

dan ini

PRINTSCREEN::Run, SnippingTool.exe

dan ini

PRINTSCREEN::Run, SnippingTool

Dan semua itu memberi saya kesalahan yang pada dasarnya mengatakan tidak dapat menemukan file, namun path file tampaknya benar, saya dapat menyalinnya ke jendela dan membuka alat snipping, ada ide mengapa tidak akan bekerja?


Ini adalah kode lengkap untuk file AHK saya ...

;
; 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
JasonDavis
sumber

Jawaban:

17

Apakah Anda menjalankan versi Windows 7 64-bit secara kebetulan?

Windows 7 (dan juga Vista, saya percaya) mengimplementasikan apa yang disebut WoW64 Filesystem Redirection. Jika ini masalahnya, Anda ingin mengarahkan AHK ke direktori Sysnative:

PrintScreen :: Jalankan, "C: \ Windows \ Sysnative \ SnippingTool.exe"
John T
sumber
4

Menggunakan

PrintScreen :: Jalankan C: \ Windows \ explorer.exe C: \ Windows \ system32 \ SnippingTool.exe

Ini akan memanggil executable dengan benar dengan batas-batas Woir64 Filesystem Redirection

Steve
sumber
4

Anda dapat menentukan apakah Anda perlu memanggil SnippingTool.exe dari Sysnative atau windows32 berdasarkan apakah autohotkey berjalan sebagai proses Wow64 atau tidak.

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
    }
}

Info lebih lanjut dan sumber untuk IsWow64Process di sini: http://www.autohotkey.com/community/viewtopic.php?t=22277

jsbannis
sumber
Saya menggunakan %A_WinDir%sebagai gantinya %windir%, dengan #noEnvpengaturan dinonaktifkan.
jiggunjer