Automation 如何通过自动热键自动设置netbeans ide来格式化java代码?

Automation 如何通过自动热键自动设置netbeans ide来格式化java代码?,automation,autohotkey,code-formatting,Automation,Autohotkey,Code Formatting,我想通过向隐藏的NetBeans IDE发送键来格式化所选java代码 ^+b:: sleep 30 Send ^c sleep 30 run,C:\Program Files\NetBeans 8.2\bin\netbeans64.exe "C:\sample.java",Hide sleep 1500 ControlSend,,{^v}, "Netbeans" sleep 50 ControlSend,,{!+f}, "Netbeans" sleep 50 ControlSend,,{^a

我想通过向隐藏的NetBeans IDE发送键来格式化所选java代码

^+b::
sleep 30
Send ^c
sleep 30
run,C:\Program Files\NetBeans 8.2\bin\netbeans64.exe "C:\sample.java",Hide
sleep 1500
ControlSend,,{^v}, "Netbeans"
sleep 50
ControlSend,,{!+f}, "Netbeans" 
sleep 50
ControlSend,,{^a}, "Netbeans" 
sleep 50
ControlSend,,{^c}, "Netbeans" 
sleep 50
WinMinimize,"Netbeans"
sleep 100
Send, ^v
return

但当尝试使用ControlSend发送密钥时,会弹出隐藏的NetBeans,我无法使用WinMinimize“NetBeans”最小化NetBeans窗口。如何解决此问题?

我不使用NetBeans,因此无法进行实验,但:

  • 双击脚本的任务栏图标并运行Window Spy。
  • 确保检测到正确的窗口,您可能需要尝试使用“RegEx”并优化字符串,但这可能不是真正必要的,因为您的
    ControlSend
    似乎能够正确地检测到它。不过,我还是要确定。
  • 您可能还必须使用另一种方法来最小化窗口:
    发件人:
    PostMessage,0x112,0xF020,,,WinTitle,WinText;0x112=WM_系统命令,0xF020=SC_最小化

  • 您真正想要使用的可能不是
    WinMinimize
    ,而是

  • 您不需要使用引号,您的代码将无法工作。如果您愿意,您不必使用逗号

    此代码工作正常:

    WinMinimize Netbeans
    ; WinMinimize, Netbeans ; this will work too
    
    与逗号一起使用:

    WinMinimize % "Netbeans"
    
    但是,由于某些程序使用动态窗口名,因此您最好按其进程名最小化程序:

    WinMinimize, ahk_exe netbeans.exe
    
    此外,您还可以最小化活动窗口:

    WinMinimize A
    

    更多信息:

    WinMinimize和WinHide之间有什么区别吗?当然。如果你尝试一下,你会看到很大的不同。非常感谢。“WinMinimize,ahk_exe netbeans64.exe”工作正常。但是ControlSend不能与“ahk_exe netbeans64.exe”一起工作。这很奇怪。
    ControlSend
    ahk_exe
    一起工作对我来说很好。也许你应该使用
    {Ctrl down}{V}{Ctrl up}
    而不是
    {^V}
    。确保代码中没有使用
    SendMode Input
    ,因为
    Input
    模式太快,因此程序没有时间接收按键。如果这仍然不起作用,您可以在
    ctrl-down
    v
    之间设置一个超时。