C ++ скрипт не может получить переменную из AHK - PullRequest
1 голос
/ 22 сентября 2019

Я пытаюсь создать сценарий 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"
...