#pragma once

#ifdef _WIN64
#define CODE_PASSWORD 0xda64
#define CODE_ANSVER 0x64
#else
#define CODE_PASSWORD 0xda86
#define CODE_ANSVER 0x86
#endif

struct TOOLS_PARAMS
{
	TCHAR ToolName[_MAX_PATH];
	TCHAR ToolStart[_MAX_PATH];
};

#define MAX_MENU_ITEMS 10

extern TCHAR g_pToolsMenuData[MAX_MENU_ITEMS][_MAX_PATH];

typedef HRESULT(*GETTOOLSPARAM)(DWORD *, DWORD *, DWORD *);

// код для x86: 0xda86, для x64: 0xda64
// ответ для x86: 0x86, для x64: 0x64
#define GETTOOLSPARAM_CODE(password, ansver)                            \
	extern "C" __declspec(dllexport) HRESULT GetToolsParam(DWORD *dwCode, DWORD *dwResName, DWORD *dwResCmd)    \
	{                                                                       \
		if (*dwCode == password)                                            \
		{                                                                   \
			*dwCode = ansver;                                               \
			*dwResName = IDS_MODULE_MENU_NAME;                              \
			*dwResCmd = IDS_MODULE_MENU_START;                              \
			return S_OK;                                                    \
		}                                                                   \
		return -1;                                                          \
	}

void FillTools(CMFCMenuBar *pwndMenuBar);

/*
В принципе работает, но из-за того, что в реестре сохраняются параметры меню,
изменения не будут видны, пока не стереть из реестра старые параметры
HKEY_CURRENT_USER\Software\BK0010-01EMUL-new\BK\Workspace\MFCToolBar-593980
*/
void DeleteUnneededKeys();
bool RegDelnode(HKEY hKeyRoot, CString &lpSubKey);
bool RegDelnodeRecurse(HKEY hKeyRoot, CString &lpSubKey);
void LaunchTool(UINT id);
