Я пытаюсь создать сценарий C ++, который запускает поток AHK и извлекает из него переменную.Ему удается без проблем запустить скрипт AHK, но, похоже, он ничего не возвращает.
typedef UINT (*pahkdll)(LPTSTR script,LPTSTR p1,LPTSTR p2);
typedef BOOL (*pahkReady)(void);
HINSTANCE handle;
pahkdll ahkdll;
pahkReady ahkReady;
void debugAHK(){
while (!ahkReady()){
Sleep(10);
}
}
bool init(){
handle = LoadLibrary("AutoHotkey.dll");
if (!handle){ std::cout << "Could not load dynamic library!\n"; return 0;}
ahkdll = (pahkdll)GetProcAddress(handle, "ahkdll");
ahkReady = (pahkReady)GetProcAddress(handle, "ahkReady");
ahkdll("","","");
debugAHK();
return 1;
}
void check(){
ahkdll("ahk.ahk", "", "");
debugAHK();
typedef wchar_t* (*AhkGetVar)(wchar_t *, UINT);
AhkGetVar l_hAutoHotKeyGetVar = (AhkGetVar)GetProcAddress(handle, "ahkgetvar");
wchar_t* wcha = l_hAutoHotKeyGetVar(L"MyVar", 0); // 0 : content, 1 : pointer
std::wstring wcha(l_sRes);
std::cout << std::string(w.begin(), w.end());
}
Когда я пытаюсь вернуть контент, он ничего не возвращает.Когда я пытаюсь вернуть указатель, он просто возвращает, казалось бы, случайную последовательность чисел с суффиксом .txt или какой-либо другой случайной строкой.
Сценарий AHK просто:
#Persistent
#NoTrayIcon
MyVar := "test"