2019-06-07 14:24:28 +08:00
|
|
|
|
#include "common.h"
|
2019-06-09 20:10:44 +08:00
|
|
|
|
#include "defs.h"
|
2019-06-07 14:24:28 +08:00
|
|
|
|
#include "resource.h"
|
2019-06-11 10:23:06 +08:00
|
|
|
|
#include <filesystem>
|
|
|
|
|
#include <fstream>
|
|
|
|
|
#include <sstream>
|
2019-07-17 00:25:40 +08:00
|
|
|
|
#include <QApplication>
|
2019-06-07 14:24:28 +08:00
|
|
|
|
|
|
|
|
|
wchar_t buffer[1000] = {};
|
|
|
|
|
std::array<int, 10> vars = {};
|
|
|
|
|
|
2019-07-17 00:25:40 +08:00
|
|
|
|
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int _)
|
2019-06-07 14:24:28 +08:00
|
|
|
|
{
|
2019-07-17 00:25:40 +08:00
|
|
|
|
QApplication a(_ = 0, DUMMY);
|
|
|
|
|
static std::vector<AutoHandle<Functor<(void(__stdcall *)(void*))FreeLibrary>>> extensions;
|
2019-06-11 10:23:06 +08:00
|
|
|
|
for (auto file : std::filesystem::directory_iterator(std::filesystem::current_path()))
|
|
|
|
|
if (file.path().extension() == L".dll"
|
|
|
|
|
&& (std::stringstream() << std::ifstream(file.path(), std::ios::binary).rdbuf()).str().find("OnNewSentence") != std::string::npos)
|
2019-07-17 00:25:40 +08:00
|
|
|
|
extensions.emplace_back(LoadLibraryW(file.path().c_str()));
|
2019-06-09 20:10:44 +08:00
|
|
|
|
|
2019-06-07 14:24:28 +08:00
|
|
|
|
ShowWindow(CreateDialogParamW(hInstance, MAKEINTRESOURCEW(IDD_DIALOG1), NULL, [](HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) -> INT_PTR
|
|
|
|
|
{
|
|
|
|
|
switch (uMsg)
|
|
|
|
|
{
|
|
|
|
|
case WM_CLOSE:
|
|
|
|
|
{
|
|
|
|
|
DestroyWindow(hWnd);
|
|
|
|
|
}
|
|
|
|
|
return TRUE;
|
|
|
|
|
case WM_DESTROY:
|
|
|
|
|
{
|
|
|
|
|
PostQuitMessage(0);
|
|
|
|
|
}
|
|
|
|
|
return TRUE;
|
|
|
|
|
case WM_COMMAND:
|
|
|
|
|
{
|
|
|
|
|
if (HIWORD(wParam) == EN_CHANGE)
|
|
|
|
|
{
|
|
|
|
|
GetWindowTextW((HWND)lParam, buffer, std::size(buffer));
|
|
|
|
|
try { vars.at(LOWORD(wParam) - IDC_EDIT1) = std::stoi(buffer); }
|
2019-06-09 20:10:44 +08:00
|
|
|
|
catch (...) {}
|
2019-07-17 00:25:40 +08:00
|
|
|
|
if (vars.at(1)) extensions.clear();
|
2019-06-07 14:24:28 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
return FALSE;
|
|
|
|
|
}, 0), SW_SHOW);
|
|
|
|
|
|
2019-06-16 07:38:44 +08:00
|
|
|
|
std::thread([] { while (true) Sleep(vars.at(0)), lstrlenW(L"こんにちは\n (Hello)"); }).detach();
|
2019-06-11 10:23:06 +08:00
|
|
|
|
|
|
|
|
|
STARTUPINFOW info = { sizeof(info) };
|
|
|
|
|
wchar_t commandLine[] = { L"Textractor -p\"Test.exe\"" };
|
|
|
|
|
CreateProcessW(NULL, commandLine, nullptr, nullptr, FALSE, 0, nullptr, nullptr, &info, DUMMY);
|
2019-06-07 14:24:28 +08:00
|
|
|
|
|
|
|
|
|
MSG msg;
|
|
|
|
|
while (GetMessageW(&msg, NULL, 0, 0) > 0)
|
|
|
|
|
{
|
|
|
|
|
TranslateMessage(&msg);
|
|
|
|
|
DispatchMessageW(&msg);
|
|
|
|
|
}
|
|
|
|
|
return 0;
|
|
|
|
|
}
|