我使用ControlClick(而不是常规的鼠标事件)为AHK创建了脚本,以便在运行脚本时可以继续使用鼠标来执行其他任务。但是,我需要模拟鼠标单击和拖动事件。是否可以使用ControlClick事件来执行此操作?

我尝试使用:

ControlClick, x365 y560, SM N910V,,,,D
ControlClick, x365 y770, SM N910V,,,,U


但没有运气。

最佳答案

不幸的是,由于ControlClick的工作原理,该功能无法立即使用。可以通过COM调用来完成(例如,如果您单击文件并将其拖到窗口中)。我不记得在网上找到它的地方,但是可以肯定它在AHK论坛上。

;window = target window, standard AHK window syntax works eg: ahk_id hwnd or just WinTitle
;files = list of files to be dropped
DropFiles(window, files*)
{
  for k,v in files
    memRequired+=StrLen(v)+1
  hGlobal := DllCall("GlobalAlloc", "uint", 0x42, "ptr", memRequired+21)
  dropfiles := DllCall("GlobalLock", "ptr", hGlobal)
  NumPut(offset := 20, dropfiles+0, 0, "uint")
  for k,v in files
    StrPut(v, dropfiles+offset, "utf-8"), offset+=StrLen(v)+1
  DllCall("GlobalUnlock", "ptr", hGlobal)
  PostMessage, 0x233, hGlobal, 0,, %window%
  if ErrorLevel
    DllCall("GlobalFree", "ptr", hGlobal)
}


如果您提供有关单击和拖动内容的详细信息,我可能可以为您提供更简单的解决方法。

关于controls - AHK Control点击并拖动?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41718301/

10-12 06:28