Есть код для подключения AutoHotkey.dll:
AutoHotkey = NativeMethods.LoadLibrary(@"AutoHotkey_ANSI.dll");
AutoHotkeyDLL = (pAhkdll)Marshal.GetDelegateForFunctionPointer(NativeMethods.GetProcAddress(AutoHotkey, "ahkdll"), typeof(pAhkdll));
AutoHotkeyReady = (pAhkReady)Marshal.GetDelegateForFunctionPointer(NativeMethods.GetProcAddress(AutoHotkey, "ahkReady"), typeof(pAhkReady));
AutoHotkeyExec = (pAhkExec)Marshal.GetDelegateForFunctionPointer(NativeMethods.GetProcAddress(AutoHotkey, "ahkExec"), typeof(pAhkExec));
AutoHotkeyDLL("", "", "");
while (!AutoHotkeyReady())
Thread.Sleep(10);
AutoHotkeyExec("MsgBox Hello World");
Допустим, я хочу использовать эту функцию:
AutoHotkeyExec("ImageSearch, OutputVarX, OutputVarY, X1, Y1, X2, Y2, ImageFile");
И вытянуть значения OutputVarX и OutputVarY.
Каким образом мне это сделать? Я пробовал создавать функцию ahkGetVar подобно функциям выше:
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate string pAhkGetVar(string var1, uint var2);
AutoHotkeyGetVar = (pAhkGetVar)Marshal.GetDelegateForFunctionPointer(NativeMethods.GetProcAddress(AutoHotkey, "ahkGetVar"), typeof(pAhkGetVar));
Затем, например, я вставляю:
AutoHotkeyExec("test := \"Some value\"");
AutoHotkeyGetVar("test", 0);
И программа просто вылетает (без ошибок, просто закрывается).
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости