diff --git a/include/MaaFramework/MaaDef.h b/include/MaaFramework/MaaDef.h index 0e7e6f579..4555e3738 100644 --- a/include/MaaFramework/MaaDef.h +++ b/include/MaaFramework/MaaDef.h @@ -4,7 +4,7 @@ * @brief The type definitions. * * @copyright Copyright (c) 2024 - * + * */ #pragma once @@ -106,7 +106,7 @@ typedef MaaOption MaaCtrlOption; /** * @brief Option keys for controller instance options. See MaaControllerSetOption(). - * + * */ enum MaaCtrlOptionEnum { @@ -239,11 +239,7 @@ enum MaaWin32ControllerTypeEnum // MaaWin32ControllerType_Screencap_DXGI_BackBuffer = 3 << 16, MaaWin32ControllerType_Screencap_DXGI_FramePool = 4 << 16, }; -#if defined(LHG_PROCESS) || defined(LHG_BUILD) -typedef size_t MaaWin32Hwnd; -#else typedef void* MaaWin32Hwnd; -#endif typedef void* MaaTransparentArg; typedef MaaTransparentArg MaaCallbackTransparentArg; diff --git a/source/MaaHttp/LHG b/source/MaaHttp/LHG index db8886ce2..e67d642ea 160000 --- a/source/MaaHttp/LHG +++ b/source/MaaHttp/LHG @@ -1 +1 @@ -Subproject commit db8886ce284615bc2693450b6630a87d6531477a +Subproject commit e67d642ea0303e6bcb55ecb83887c0665745383f diff --git a/source/MaaHttp/config.json b/source/MaaHttp/config.json index c1bcf4599..bdffa8c8e 100644 --- a/source/MaaHttp/config.json +++ b/source/MaaHttp/config.json @@ -69,8 +69,6 @@ "MaaWin32ControllerCreate", "MaaCustomControllerCreate", "MaaSetImageRawData", - "MaaRegisterCustomRecognizer", - "MaaRegisterCustomAction", "/MaaSyncContext.+", "/Maa.+Rect.*", "/Maa.+String.+", diff --git a/source/MaaHttp/extra.cpp b/source/MaaHttp/extra.cpp index b57f08310..7c7a85755 100644 --- a/source/MaaHttp/extra.cpp +++ b/source/MaaHttp/extra.cpp @@ -35,45 +35,3 @@ MaaBool MaaSetGlobalOptionBoolean(MaaCtrlOption key, bool value) MaaBool v = !!value; return MaaSetGlobalOption(key, &v, 1); } - -struct CustomRecoInfo { - MaaCustomRecognizerAPI api; - MaaTransparentArg analyze; -}; - -MaaBool FAKE_IMPORT MaaRegisterCustomRecognizerImpl(MaaInstanceHandle inst, MaaStringView name, decltype(MaaCustomRecognizerAPI{}.analyze) analyze, MaaTransparentArg analyze_arg) { - static MaaCustomRecognizerAPI api = { - [](auto sycctx, auto img, auto task, auto param, auto ctx, auto out_box, auto out_detail) { - auto info = reinterpret_cast(ctx); - return info->api.analyze(sycctx, img, task, param, info->analyze, out_box, out_detail); - } - }; - auto info = new CustomRecoInfo { {analyze}, analyze_arg }; - return MaaRegisterCustomRecognizer(inst, name, &api, info); -} - -struct CustomActionInfo -{ - MaaCustomActionAPI api; - MaaTransparentArg run; - MaaTransparentArg stop; -}; - -MaaBool FAKE_IMPORT MaaRegisterCustomActionImpl(MaaInstanceHandle inst, MaaStringView name, - decltype(MaaCustomActionAPI {}.run) run, MaaTransparentArg run_arg, - decltype(MaaCustomActionAPI {}.stop) stop, MaaTransparentArg stop_arg) -{ - static MaaCustomActionAPI api = { - [](auto sycctx, auto task, auto param, auto box, auto detail, auto ctx) { - auto info = reinterpret_cast(ctx); - return info->api.run(sycctx, task, param, box, detail, info->run); - }, - [](auto ctx) { - auto info = reinterpret_cast(ctx); - info->api.stop(info->stop); - } - }; - auto info = new CustomActionInfo { { run, stop }, run_arg, stop_arg }; - - return MaaRegisterCustomAction(inst, name, &api, info); -} diff --git a/source/MaaHttp/extra.h b/source/MaaHttp/extra.h index 836b39144..c3189e52b 100644 --- a/source/MaaHttp/extra.h +++ b/source/MaaHttp/extra.h @@ -15,10 +15,3 @@ MaaBool FAKE_IMPORT MaaControllerSetOptionBoolean(MaaControllerHandle ctrl, MaaC MaaBool FAKE_IMPORT MaaSetGlobalOptionString(MaaCtrlOption key, MaaStringView value); MaaBool FAKE_IMPORT MaaSetGlobalOptionInteger(MaaCtrlOption key, int value); MaaBool FAKE_IMPORT MaaSetGlobalOptionBoolean(MaaCtrlOption key, bool value); - -MaaBool FAKE_IMPORT MaaRegisterCustomRecognizerImpl(MaaInstanceHandle inst, MaaStringView name, - decltype(MaaCustomRecognizerAPI {}.analyze) analyze, - MaaTransparentArg analyze_arg); -MaaBool FAKE_IMPORT MaaRegisterCustomActionImpl(MaaInstanceHandle inst, MaaStringView name, - decltype(MaaCustomActionAPI {}.run) run, MaaTransparentArg run_arg, - decltype(MaaCustomActionAPI {}.stop) stop, MaaTransparentArg stop_arg); diff --git a/source/MaaHttp/info.hpp b/source/MaaHttp/info.hpp index 9befe51d0..b6329adf3 100644 --- a/source/MaaHttp/info.hpp +++ b/source/MaaHttp/info.hpp @@ -1,3 +1,4 @@ +// clang-format off #pragma once #include "function/interface.hpp" @@ -1077,6 +1078,56 @@ struct is_output { namespace lhg::maa { +struct func_type_MaaRegisterCustomRecognizer { + struct _0_inst { + constexpr static size_t index = 0; + constexpr static const char* name = "inst"; + using type = MaaInstanceAPI *; + }; + struct _1_name { + constexpr static size_t index = 1; + constexpr static const char* name = "name"; + using type = const char *; + }; + struct _2_recognizer { + constexpr static size_t index = 2; + constexpr static const char* name = "recognizer"; + using type = MaaCustomRecognizerAPI *; + }; + struct _3_recognizer_arg { + constexpr static size_t index = 3; + constexpr static const char* name = "recognizer_arg"; + using type = void *; + }; + struct ret { + constexpr static size_t index = 4; + constexpr static const char* name = "return"; + using type = unsigned char; + }; + using args = std::tuple<_0_inst, _1_name, _2_recognizer, _3_recognizer_arg, ret>; +}; +struct function_MaaRegisterCustomRecognizer { + constexpr static auto func = MaaRegisterCustomRecognizer; + constexpr static const char* name = "MaaRegisterCustomRecognizer"; + using type = func_type_MaaRegisterCustomRecognizer; +}; + +} +namespace lhg::call { + +template<> +struct is_input { + constexpr static bool value = false; +}; +template<> +struct is_output { + constexpr static bool value = true; +}; + +} + +namespace lhg::maa { + struct func_type_MaaUnregisterCustomRecognizer { struct _0_inst { constexpr static size_t index = 0; @@ -1152,6 +1203,56 @@ struct is_output { namespace lhg::maa { +struct func_type_MaaRegisterCustomAction { + struct _0_inst { + constexpr static size_t index = 0; + constexpr static const char* name = "inst"; + using type = MaaInstanceAPI *; + }; + struct _1_name { + constexpr static size_t index = 1; + constexpr static const char* name = "name"; + using type = const char *; + }; + struct _2_action { + constexpr static size_t index = 2; + constexpr static const char* name = "action"; + using type = MaaCustomActionAPI *; + }; + struct _3_action_arg { + constexpr static size_t index = 3; + constexpr static const char* name = "action_arg"; + using type = void *; + }; + struct ret { + constexpr static size_t index = 4; + constexpr static const char* name = "return"; + using type = unsigned char; + }; + using args = std::tuple<_0_inst, _1_name, _2_action, _3_action_arg, ret>; +}; +struct function_MaaRegisterCustomAction { + constexpr static auto func = MaaRegisterCustomAction; + constexpr static const char* name = "MaaRegisterCustomAction"; + using type = func_type_MaaRegisterCustomAction; +}; + +} +namespace lhg::call { + +template<> +struct is_input { + constexpr static bool value = false; +}; +template<> +struct is_output { + constexpr static bool value = true; +}; + +} + +namespace lhg::maa { + struct func_type_MaaUnregisterCustomAction { struct _0_inst { constexpr static size_t index = 0; @@ -2956,7 +3057,7 @@ struct func_type_MaaToolkitGetWindow { struct ret { constexpr static size_t index = 1; constexpr static const char* name = "return"; - using type = unsigned long long; + using type = void *; }; using args = std::tuple<_0_index, ret>; }; @@ -2986,7 +3087,7 @@ struct func_type_MaaToolkitGetCursorWindow { struct ret { constexpr static size_t index = 0; constexpr static const char* name = "return"; - using type = unsigned long long; + using type = void *; }; using args = std::tuple; }; @@ -3016,7 +3117,7 @@ struct func_type_MaaToolkitGetDesktopWindow { struct ret { constexpr static size_t index = 0; constexpr static const char* name = "return"; - using type = unsigned long long; + using type = void *; }; using args = std::tuple; }; @@ -3046,7 +3147,7 @@ struct func_type_MaaToolkitGetForegroundWindow { struct ret { constexpr static size_t index = 0; constexpr static const char* name = "return"; - using type = unsigned long long; + using type = void *; }; using args = std::tuple; }; @@ -3327,116 +3428,6 @@ struct is_output { namespace lhg::maa { -struct func_type_MaaRegisterCustomRecognizerImpl { - struct _0_inst { - constexpr static size_t index = 0; - constexpr static const char* name = "inst"; - using type = MaaInstanceAPI *; - }; - struct _1_name { - constexpr static size_t index = 1; - constexpr static const char* name = "name"; - using type = const char *; - }; - struct _2_analyze { - constexpr static size_t index = 2; - constexpr static const char* name = "analyze"; - using type = unsigned char (*)(MaaSyncContextAPI *, MaaImageBuffer *, const char *, const char *, void *, MaaRect *, MaaStringBuffer *); - }; - struct _3_analyze_arg { - constexpr static size_t index = 3; - constexpr static const char* name = "analyze_arg"; - using type = void *; - }; - struct ret { - constexpr static size_t index = 4; - constexpr static const char* name = "return"; - using type = unsigned char; - }; - using args = std::tuple<_0_inst, _1_name, _2_analyze, _3_analyze_arg, ret>; -}; -struct function_MaaRegisterCustomRecognizerImpl { - constexpr static auto func = MaaRegisterCustomRecognizerImpl; - constexpr static const char* name = "MaaRegisterCustomRecognizerImpl"; - using type = func_type_MaaRegisterCustomRecognizerImpl; -}; - -} -namespace lhg::call { - -template<> -struct is_input { - constexpr static bool value = false; -}; -template<> -struct is_output { - constexpr static bool value = true; -}; - -} - -namespace lhg::maa { - -struct func_type_MaaRegisterCustomActionImpl { - struct _0_inst { - constexpr static size_t index = 0; - constexpr static const char* name = "inst"; - using type = MaaInstanceAPI *; - }; - struct _1_name { - constexpr static size_t index = 1; - constexpr static const char* name = "name"; - using type = const char *; - }; - struct _2_run { - constexpr static size_t index = 2; - constexpr static const char* name = "run"; - using type = unsigned char (*)(MaaSyncContextAPI *, const char *, const char *, MaaRect *, const char *, void *); - }; - struct _3_run_arg { - constexpr static size_t index = 3; - constexpr static const char* name = "run_arg"; - using type = void *; - }; - struct _4_stop { - constexpr static size_t index = 4; - constexpr static const char* name = "stop"; - using type = void (*)(void *); - }; - struct _5_stop_arg { - constexpr static size_t index = 5; - constexpr static const char* name = "stop_arg"; - using type = void *; - }; - struct ret { - constexpr static size_t index = 6; - constexpr static const char* name = "return"; - using type = unsigned char; - }; - using args = std::tuple<_0_inst, _1_name, _2_run, _3_run_arg, _4_stop, _5_stop_arg, ret>; -}; -struct function_MaaRegisterCustomActionImpl { - constexpr static auto func = MaaRegisterCustomActionImpl; - constexpr static const char* name = "MaaRegisterCustomActionImpl"; - using type = func_type_MaaRegisterCustomActionImpl; -}; - -} -namespace lhg::call { - -template<> -struct is_input { - constexpr static bool value = false; -}; -template<> -struct is_output { - constexpr static bool value = true; -}; - -} - -namespace lhg::maa { - using __function_list = std::tuple< function_MaaAdbControllerCreate, function_MaaAdbControllerCreateV2, @@ -3462,8 +3453,10 @@ using __function_list = std::tuple< function_MaaBindResource, function_MaaBindController, function_MaaInited, + function_MaaRegisterCustomRecognizer, function_MaaUnregisterCustomRecognizer, function_MaaClearCustomRecognizer, + function_MaaRegisterCustomAction, function_MaaUnregisterCustomAction, function_MaaClearCustomAction, function_MaaPostTask, @@ -3522,9 +3515,7 @@ using __function_list = std::tuple< function_MaaControllerSetOptionBoolean, function_MaaSetGlobalOptionString, function_MaaSetGlobalOptionInteger, - function_MaaSetGlobalOptionBoolean, - function_MaaRegisterCustomRecognizerImpl, - function_MaaRegisterCustomActionImpl + function_MaaSetGlobalOptionBoolean >; } @@ -3771,4 +3762,4 @@ struct type_is_handle { constexpr static bool value = true; }; -} \ No newline at end of file +} diff --git a/source/MaaHttp/interface.json b/source/MaaHttp/interface.json index acb8b880b..7d4bfd906 100644 --- a/source/MaaHttp/interface.json +++ b/source/MaaHttp/interface.json @@ -34,7 +34,7 @@ "argument": [ { "name": "hWnd", - "type": "unsigned long long" + "type": "void *" }, { "name": "type", @@ -1702,25 +1702,25 @@ } ], "name": "MaaToolkitGetWindow", - "return": "unsigned long long" + "return": "void *" }, { "argument": [ ], "name": "MaaToolkitGetCursorWindow", - "return": "unsigned long long" + "return": "void *" }, { "argument": [ ], "name": "MaaToolkitGetDesktopWindow", - "return": "unsigned long long" + "return": "void *" }, { "argument": [ ], "name": "MaaToolkitGetForegroundWindow", - "return": "unsigned long long" + "return": "void *" }, { "argument": [ @@ -1817,58 +1817,6 @@ ], "name": "MaaSetGlobalOptionBoolean", "return": "unsigned char" - }, - { - "argument": [ - { - "name": "inst", - "type": "MaaInstanceAPI *" - }, - { - "name": "name", - "type": "const char *" - }, - { - "name": "analyze", - "type": "unsigned char (*)(MaaSyncContextAPI *, MaaImageBuffer *, const char *, const char *, void *, MaaRect *, MaaStringBuffer *)" - }, - { - "name": "analyze_arg", - "type": "void *" - } - ], - "name": "MaaRegisterCustomRecognizerImpl", - "return": "unsigned char" - }, - { - "argument": [ - { - "name": "inst", - "type": "MaaInstanceAPI *" - }, - { - "name": "name", - "type": "const char *" - }, - { - "name": "run", - "type": "unsigned char (*)(MaaSyncContextAPI *, const char *, const char *, MaaRect *, const char *, void *)" - }, - { - "name": "run_arg", - "type": "void *" - }, - { - "name": "stop", - "type": "void (*)(void *)" - }, - { - "name": "stop_arg", - "type": "void *" - } - ], - "name": "MaaRegisterCustomActionImpl", - "return": "unsigned char" } ] } \ No newline at end of file diff --git a/source/MaaHttp/main.cpp b/source/MaaHttp/main.cpp index e78bd21f3..24bc89745 100644 --- a/source/MaaHttp/main.cpp +++ b/source/MaaHttp/main.cpp @@ -1,15 +1,32 @@ #include -#include "MaaFramework/MaaDef.h" -#include "callback/callback.hpp" #include "info.hpp" -#include "manager/manager.hpp" +#include "server/dispatcher.hpp" +#include "server/server.hpp" #include "utils/phony.hpp" +#include "specialize.hpp" + int main() { + auto* dispatcher = new lhg::server::Dispatcher(); + auto* server = new lhg::server::Server(dispatcher, 13126); + + lhg::server::apply_function(dispatcher); + + // dispatcher->handle( + // "/api/MaaVersion", + // [](auto& provider, auto& res, const auto& req) { + // lhg::call::call(provider, res, req); + // }, + // [](auto& provider, auto& res) {}); + + server->sync_run(); + + return 0; + // json::object res, req; - lhg::ManagerProvider provider; + // lhg::ManagerProvider provider; // lhg::call::call( // provider, res, { { "key", MaaGlobalOption_LogDir }, { "value", "log" } }); @@ -23,13 +40,13 @@ int main() // lhg::call::call(provider, res, req); // std::cout << res.format() << std::endl; - auto cb = lhg::callback::create_callback(); - lhg::callback::context_info context { &provider, - [](auto& res, const auto& req) { - std::cout << req.format() << std::endl; - std::ignore = res; - return; - }, - nullptr }; - cb("hello", "world!", &context); + // auto cb = lhg::callback::create_callback(); + // lhg::callback::context_info context { &provider, + // [](auto& res, const auto& req, auto ctx) { + // std::cout << req.format() << std::endl; + // std::ignore = res; + // return; + // }, + // nullptr }; + // cb("hello", "world!", &context); } diff --git a/source/MaaHttp/specialize.hpp b/source/MaaHttp/specialize.hpp new file mode 100644 index 000000000..6e326140b --- /dev/null +++ b/source/MaaHttp/specialize.hpp @@ -0,0 +1,168 @@ +#pragma once + +#include "MaaFramework/MaaDef.h" +#include "base64.hpp" + +#include "MaaFramework/Utility/MaaBuffer.h" +#include "function/interface.hpp" +#include "info.hpp" +#include "utils/phony.hpp" + +namespace lhg::call +{ + +#define __DECLARE_INPUT(arg_tag, v) \ + template <> \ + struct is_input \ + { \ + constexpr static bool value = v; \ + }; + +#define __DECLARE_OUTPUT(arg_tag, v) \ + template <> \ + struct is_output \ + { \ + constexpr static bool value = v; \ + }; + +#define __DECLARE_OUTER_STATE(arg_tag, t) \ + template <> \ + struct is_outer_state \ + { \ + constexpr static bool value = true; \ + using type = t; \ + }; + +#define __DECLARE_PREPARE_STATE_BEGIN(func_tag, atag) \ + template <> \ + struct prepare_state \ + { \ + using arg_tuple = func_tag::args; \ + using arg_tag = func_tag::atag; \ + using call_arg_tuple = convert_arg_type; \ + using call_arg_state_tuple = convert_outer_state; \ + static bool convert(lhg::ManagerProvider& provider, const json::object& req, call_arg_tuple& arg, \ + call_arg_state_tuple& state) \ + { + +#define __DECLARE_PREPARE_STATE_END() \ + } \ + } \ + ; + +#define __DECLARE_JSON_TO_ARG_BEGIN(func_tag, atag) \ + template <> \ + struct json_to_arg \ + { \ + using arg_tuple = func_tag::args; \ + using arg_tag = func_tag::atag; \ + using call_arg_tuple = convert_arg_type; \ + using call_arg_state_tuple = convert_outer_state; \ + static bool convert(lhg::ManagerProvider& provider, const json::object& req, call_arg_tuple& arg, \ + call_arg_state_tuple& state) \ + { \ + if constexpr (!is_input::value) { \ + return true; \ + } \ + else { \ + auto name = arg_tag::name; \ + if (!req.contains(name)) { \ + return false; \ + } \ + const json::value& value = req.at(name); +#define __DECLARE_JSON_TO_ARG_END() \ + } \ + } \ + } \ + ; + +#define __DECLARE_ARG_TO_JSON_BEGIN(func_tag, atag) \ + template <> \ + struct arg_to_json \ + { \ + using arg_tuple = func_tag::args; \ + using arg_tag = func_tag::atag; \ + using call_arg_tuple = convert_arg_type; \ + using call_arg_state_tuple = convert_outer_state; \ + static void convert(lhg::ManagerProvider& provider, json::object& res, call_arg_tuple& arg, \ + call_arg_state_tuple& state) \ + { \ + if constexpr (!is_output::value) { \ + return; \ + } \ + else { \ + auto name = arg_tag::name; +#define __DECLARE_ARG_TO_JSON_END() \ + } \ + } \ + } \ + ; + +#define __DECLARE_RETURN_HWND_ARG_TO_JSON(func_tag) \ + __DECLARE_ARG_TO_JSON_BEGIN(func_tag, ret) \ + std::ignore = state; \ + json::value value; \ + value = std::format("{:#018x}", reinterpret_cast(std::get(arg))); \ + res[name] = value; \ + __DECLARE_ARG_TO_JSON_END() + +__DECLARE_RETURN_HWND_ARG_TO_JSON(maa::func_type_MaaToolkitGetWindow) +__DECLARE_RETURN_HWND_ARG_TO_JSON(maa::func_type_MaaToolkitGetCursorWindow) +__DECLARE_RETURN_HWND_ARG_TO_JSON(maa::func_type_MaaToolkitGetDesktopWindow) +__DECLARE_RETURN_HWND_ARG_TO_JSON(maa::func_type_MaaToolkitGetForegroundWindow) + +#pragma region MaaGetImageEncoded + +__DECLARE_ARG_TO_JSON_BEGIN(maa::func_type_MaaGetImageEncoded, ret) +std::ignore = state; +json::value value; +auto size = MaaGetImageEncodedSize(std::get(arg)); +std::string_view data(reinterpret_cast(std::get(arg)), size); +value = base64::to_base64(data); +res[name] = value; +__DECLARE_ARG_TO_JSON_END() + +#pragma endregion MaaGetImageEncoded + +#pragma region MaaSetImageEncoded + +__DECLARE_INPUT(maa::func_type_MaaSetImageEncoded::_2_size, true) +__DECLARE_OUTER_STATE(maa::func_type_MaaSetImageEncoded::_1_data, std::string) + +__DECLARE_JSON_TO_ARG_BEGIN(maa::func_type_MaaSetImageEncoded, _1_data) +std::string& data = std::get(state); +data = base64::from_base64(value.as_string()); +std::get(arg) = + reinterpret_cast(const_cast(data.c_str())); +std::get(arg) = data.size(); +return true; +__DECLARE_JSON_TO_ARG_END() + +#pragma endregion MaaSetImageEncoded + +#define __DECLARE_STRING_BUFFER_OUTPUT(func_tag, arg_tag) \ + __DECLARE_INPUT(func_tag::arg_tag, false) \ + __DECLARE_OUTPUT(func_tag::arg_tag, true) \ + __DECLARE_OUTER_STATE(func_tag::arg_tag, MaaStringBufferHandle) \ + \ + __DECLARE_PREPARE_STATE_BEGIN(func_tag, arg_tag) \ + std::ignore = provider; \ + std::ignore = req; \ + std::ignore = arg; \ + std::get(state) = MaaCreateStringBuffer(); \ + return true; \ + __DECLARE_PREPARE_STATE_END() \ + \ + __DECLARE_ARG_TO_JSON_BEGIN(func_tag, arg_tag) \ + std::ignore = state; \ + json::value value; \ + auto handle = std::get(state); \ + auto size = MaaGetStringSize(handle); \ + std::string data(MaaGetString(handle), size); \ + res[name] = value; \ + __DECLARE_ARG_TO_JSON_END() + +__DECLARE_STRING_BUFFER_OUTPUT(maa::func_type_MaaResourceGetTaskList, _1_buffer) +__DECLARE_STRING_BUFFER_OUTPUT(maa::func_type_MaaResourceGetHash, _1_buffer) + +}; // namespace lhg::call diff --git a/source/MaaHttp/update-macos.sh b/source/MaaHttp/update-macos.sh index 2f592155e..7a73f9a91 100755 --- a/source/MaaHttp/update-macos.sh +++ b/source/MaaHttp/update-macos.sh @@ -2,4 +2,4 @@ cd LHG ./build/bin/Release/LHGInterfaceExtractor ../include.h -I/opt/local/libexec/llvm-17/lib/clang/17/include -I../../../include -tsx projects/generator/src/main.ts +tsx projects/generator/src/new.ts diff --git a/source/MaaHttp/update-win.bat b/source/MaaHttp/update-win.bat index 4a96f03e9..4afbfea2c 100644 --- a/source/MaaHttp/update-win.bat +++ b/source/MaaHttp/update-win.bat @@ -1,3 +1,3 @@ cd LHG .\build\bin\Release\LHGInterfaceExtractor ..\include.h -IC:\Program Files\LLVM\lib\clang\17\include -I..\..\..\include -tsx projects\generator\src\main.ts +tsx projects\generator\src\new.ts