【发布时间】:2020-08-07 11:13:28
【问题描述】:
我正在尝试对 user32 api 函数CreateCaret 使用简单的 AHK DLLCall。我希望它给记事本一个粗体插入符号。
caretWidth := 10
NULL := 0
Ptr := A_PtrSize ? "Ptr" : "UInt" ; If A_PtrSize is not defined, use UInt instead.
WinHwnd := WinExist("A")
result := Dllcall("CreateCaret", Ptr, WinHwnd, Ptr, NULL, "Int", caretWidth, "Int", 0)
msgbox % "LE " A_lasterror ; Gives LE 0
msgbox % result ; Gives 0
这应该等同于以下 c++ 调用:
CreateCaret(0x37072c, NULL, 10, 0);
故意搞砸函数名会使结果为空,所以我相信该函数被正确调用。我只是不知道为什么它失败了
对GetCursorBlinkRate 使用类似的代码会返回一个合理的数字。
我也试过caretWidth := 0
关于GetLastError 的类似问题是c++ 调用,并且AHK 应该确保GetLastError 被及时调用以确保正确设置A_lasterror。为什么函数明显失败时没有显示错误代码?
【问题讨论】:
标签: autohotkey user32