2016-09-24 36 views
1

我想知道是否有办法将自动热键脚本的int值更改为双精度,因为我试图“微调”光标移动速度有多快,并且想要使用一个十进制值。我能想到能够输入十进制值的唯一方法是使用double,但我无法弄清楚如何将int值更改为double(或者甚至可能)。Autohotkey |如何更改INT为双倍

这里是代码,非常感谢你提前!

#NoEnv 
SendMode Input 
SetWorkingDir %A_ScriptDir% 

; NRA 
NRA := 1 

; NR 
~LButton:: 
while GetKeyState("LButton") & NRA 
{ 
DllCall("mouse_event", uint, 1, int, 0, int, 1, uint, 0, int, 0) 
Sleep, 15 
DllCall("mouse_event", uint, 1, int, 0, int, 1, uint, 0, int, 0) 
Sleep, 5 
} 
return 

; keys 
Insert::ExitApp 
delete::suspend 

我试图改变如下所示的Y值是小数点

DllCall("mouse_event", uint, 1, int, 0, int, Y, uint, 0, int, 0) 
Sleep, 15 
DllCall("mouse_event", uint, 1, int, 0, int, Y, uint, 0, int, 0) 

我知道,更高的I改变Y值,走得越快,但我希望自己是能够将一个值(例如1.5或2.7作为示例)放入该Y位置。

回答

0

在AutoHotkey v1.1中,浮点文字实际上只是字符串 ,对于浮点输出它们的默认精度为6位小数,可以通过SetFormat,Format(),Round() SubStr(),Floor()来显示它们。 Source

如果你打算做更大的精度数学,你将需要使用Math library

我真的不确定你的代码,因为你从来没有指定什么变量或显示任何数学,你需要更高的精度?你有没有留下什么?

双:

NRA := 1 

MsgBox % format("{1:0.15f}", NRA) ; Double precision 

根据您的编辑:

不幸的是mouse_event只节选DWORD和范围为0到4,294,967,295只接受整数值。

你唯一的选择似乎是最大控制增加1。

+0

对不起,我应该更具体一点,我试图改变的代码是DLL调用鼠标事件的Y位置。我会很快编辑这个问题 –