summaryrefslogtreecommitdiff
path: root/PC
diff options
context:
space:
mode:
authorBrian Curtin <brian@python.org>2012-06-21 16:35:12 -0500
committerBrian Curtin <brian@python.org>2012-06-21 16:35:12 -0500
commit6b2cf01744b06717f3082c97db235b66e9c7d1ba (patch)
tree2a41c036db1964ede52bd8e9a93123dfa564919b /PC
parent8559b3cecf1ecc142ef82c50308672b06b19b931 (diff)
downloadcpython-git-6b2cf01744b06717f3082c97db235b66e9c7d1ba.tar.gz
Remove associator project - it's not needed
Diffstat (limited to 'PC')
-rw-r--r--PC/associator.c731
-rw-r--r--PC/associator.h1480
-rw-r--r--PC/associator.rc97
3 files changed, 0 insertions, 2308 deletions
diff --git a/PC/associator.c b/PC/associator.c
deleted file mode 100644
index 21dc3ff3f2..0000000000
--- a/PC/associator.c
+++ /dev/null
@@ -1,731 +0,0 @@
-/*
- * Copyright (C) 2011-2012 Vinay Sajip. All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include <windows.h>
-#include <commctrl.h>
-#include <stdio.h>
-#include "associator.h"
-
-#define PYTHON_EXECUTABLE L"python.exe"
-
-#define MSGSIZE 1024
-#define MAX_VERSION_SIZE 4
-
-typedef struct {
- wchar_t version[MAX_VERSION_SIZE]; /* m.n */
- int bits; /* 32 or 64 */
- wchar_t executable[MAX_PATH];
-} INSTALLED_PYTHON;
-
-/*
- * To avoid messing about with heap allocations, just assume we can allocate
- * statically and never have to deal with more versions than this.
- */
-#define MAX_INSTALLED_PYTHONS 100
-
-static INSTALLED_PYTHON installed_pythons[MAX_INSTALLED_PYTHONS];
-
-static size_t num_installed_pythons = 0;
-
-/* to hold SOFTWARE\Python\PythonCore\X.Y\InstallPath */
-#define IP_BASE_SIZE 40
-#define IP_SIZE (IP_BASE_SIZE + MAX_VERSION_SIZE)
-#define CORE_PATH L"SOFTWARE\\Python\\PythonCore"
-
-static wchar_t * location_checks[] = {
- L"\\",
-/*
- L"\\PCBuild\\",
- L"\\PCBuild\\amd64\\",
- */
- NULL
-};
-
-static wchar_t *
-skip_whitespace(wchar_t * p)
-{
- while (*p && isspace(*p))
- ++p;
- return p;
-}
-
-/*
- * This function is here to minimise Visual Studio
- * warnings about security implications of getenv, and to
- * treat blank values as if they are absent.
- */
-static wchar_t * get_env(wchar_t * key)
-{
- wchar_t * result = _wgetenv(key);
-
- if (result) {
- result = skip_whitespace(result);
- if (*result == L'\0')
- result = NULL;
- }
- return result;
-}
-
-static FILE * log_fp = NULL;
-
-static void
-debug(wchar_t * format, ...)
-{
- va_list va;
-
- if (log_fp != NULL) {
- va_start(va, format);
- vfwprintf_s(log_fp, format, va);
- }
-}
-
-static void winerror(int rc, wchar_t * message, int size)
-{
- FormatMessageW(
- FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
- NULL, rc, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
- message, size, NULL);
-}
-
-static INSTALLED_PYTHON *
-find_existing_python(wchar_t * path)
-{
- INSTALLED_PYTHON * result = NULL;
- size_t i;
- INSTALLED_PYTHON * ip;
-
- for (i = 0, ip = installed_pythons; i < num_installed_pythons; i++, ip++) {
- if (_wcsicmp(path, ip->executable) == 0) {
- result = ip;
- break;
- }
- }
- return result;
-}
-
-static void
-locate_pythons_for_key(HKEY root, REGSAM flags)
-{
- HKEY core_root, ip_key;
- LSTATUS status = RegOpenKeyExW(root, CORE_PATH, 0, flags, &core_root);
- wchar_t message[MSGSIZE];
- DWORD i;
- size_t n;
- BOOL ok;
- DWORD type, data_size, attrs;
- INSTALLED_PYTHON * ip, * pip;
- wchar_t ip_path[IP_SIZE];
- wchar_t * check;
- wchar_t ** checkp;
- wchar_t *key_name = (root == HKEY_LOCAL_MACHINE) ? L"HKLM" : L"HKCU";
-
- if (status != ERROR_SUCCESS)
- debug(L"locate_pythons_for_key: unable to open PythonCore key in %s\n",
- key_name);
- else {
- ip = &installed_pythons[num_installed_pythons];
- for (i = 0; num_installed_pythons < MAX_INSTALLED_PYTHONS; i++) {
- status = RegEnumKeyW(core_root, i, ip->version, MAX_VERSION_SIZE);
- if (status != ERROR_SUCCESS) {
- if (status != ERROR_NO_MORE_ITEMS) {
- /* unexpected error */
- winerror(status, message, MSGSIZE);
- debug(L"Can't enumerate registry key for version %s: %s\n",
- ip->version, message);
- }
- break;
- }
- else {
- _snwprintf_s(ip_path, IP_SIZE, _TRUNCATE,
- L"%s\\%s\\InstallPath", CORE_PATH, ip->version);
- status = RegOpenKeyExW(root, ip_path, 0, flags, &ip_key);
- if (status != ERROR_SUCCESS) {
- winerror(status, message, MSGSIZE);
- // Note: 'message' already has a trailing \n
- debug(L"%s\\%s: %s", key_name, ip_path, message);
- continue;
- }
- data_size = sizeof(ip->executable) - 1;
- status = RegQueryValueEx(ip_key, NULL, NULL, &type,
- (LPBYTE) ip->executable, &data_size);
- RegCloseKey(ip_key);
- if (status != ERROR_SUCCESS) {
- winerror(status, message, MSGSIZE);
- debug(L"%s\\%s: %s\n", key_name, ip_path, message);
- continue;
- }
- if (type == REG_SZ) {
- data_size = data_size / sizeof(wchar_t) - 1; /* for NUL */
- if (ip->executable[data_size - 1] == L'\\')
- --data_size; /* reg value ended in a backslash */
- /* ip->executable is data_size long */
- for (checkp = location_checks; *checkp; ++checkp) {
- check = *checkp;
- _snwprintf_s(&ip->executable[data_size],
- MAX_PATH - data_size,
- MAX_PATH - data_size,
- L"%s%s", check, PYTHON_EXECUTABLE);
- attrs = GetFileAttributesW(ip->executable);
- if (attrs == INVALID_FILE_ATTRIBUTES) {
- winerror(GetLastError(), message, MSGSIZE);
- debug(L"locate_pythons_for_key: %s: %s",
- ip->executable, message);
- }
- else if (attrs & FILE_ATTRIBUTE_DIRECTORY) {
- debug(L"locate_pythons_for_key: '%s' is a \
-directory\n",
- ip->executable, attrs);
- }
- else if (find_existing_python(ip->executable)) {
- debug(L"locate_pythons_for_key: %s: already \
-found: %s\n", ip->executable);
- }
- else {
- /* check the executable type. */
- ok = GetBinaryTypeW(ip->executable, &attrs);
- if (!ok) {
- debug(L"Failure getting binary type: %s\n",
- ip->executable);
- }
- else {
- if (attrs == SCS_64BIT_BINARY)
- ip->bits = 64;
- else if (attrs == SCS_32BIT_BINARY)
- ip->bits = 32;
- else
- ip->bits = 0;
- if (ip->bits == 0) {
- debug(L"locate_pythons_for_key: %s: \
-invalid binary type: %X\n",
- ip->executable, attrs);
- }
- else {
- if (wcschr(ip->executable, L' ') != NULL) {
- /* has spaces, so quote */
- n = wcslen(ip->executable);
- memmove(&ip->executable[1],
- ip->executable, n * sizeof(wchar_t));
- ip->executable[0] = L'\"';
- ip->executable[n + 1] = L'\"';
- ip->executable[n + 2] = L'\0';
- }
- debug(L"locate_pythons_for_key: %s \
-is a %dbit executable\n",
- ip->executable, ip->bits);
- ++num_installed_pythons;
- pip = ip++;
- if (num_installed_pythons >=
- MAX_INSTALLED_PYTHONS)
- break;
- /* Copy over the attributes for the next */
- *ip = *pip;
- }
- }
- }
- }
- }
- }
- }
- RegCloseKey(core_root);
- }
-}
-
-static int
-compare_pythons(const void * p1, const void * p2)
-{
- INSTALLED_PYTHON * ip1 = (INSTALLED_PYTHON *) p1;
- INSTALLED_PYTHON * ip2 = (INSTALLED_PYTHON *) p2;
- /* note reverse sorting on version */
- int result = wcscmp(ip2->version, ip1->version);
-
- if (result == 0)
- result = ip2->bits - ip1->bits; /* 64 before 32 */
- return result;
-}
-
-static void
-locate_all_pythons()
-{
-#if defined(_M_X64)
- // If we are a 64bit process, first hit the 32bit keys.
- debug(L"locating Pythons in 32bit registry\n");
- locate_pythons_for_key(HKEY_CURRENT_USER, KEY_READ | KEY_WOW64_32KEY);
- locate_pythons_for_key(HKEY_LOCAL_MACHINE, KEY_READ | KEY_WOW64_32KEY);
-#else
- // If we are a 32bit process on a 64bit Windows, first hit the 64bit keys.
- BOOL f64 = FALSE;
- if (IsWow64Process(GetCurrentProcess(), &f64) && f64) {
- debug(L"locating Pythons in 64bit registry\n");
- locate_pythons_for_key(HKEY_CURRENT_USER, KEY_READ | KEY_WOW64_64KEY);
- locate_pythons_for_key(HKEY_LOCAL_MACHINE, KEY_READ | KEY_WOW64_64KEY);
- }
-#endif
- // now hit the "native" key for this process bittedness.
- debug(L"locating Pythons in native registry\n");
- locate_pythons_for_key(HKEY_CURRENT_USER, KEY_READ);
- locate_pythons_for_key(HKEY_LOCAL_MACHINE, KEY_READ);
- qsort(installed_pythons, num_installed_pythons, sizeof(INSTALLED_PYTHON),
- compare_pythons);
-}
-
-typedef struct {
- wchar_t * path;
- wchar_t * key;
- wchar_t * value;
-} REGISTRY_ENTRY;
-
-static REGISTRY_ENTRY registry_entries[] = {
- { L".py", NULL, L"Python.File" },
- { L".pyc", NULL, L"Python.CompiledFile" },
- { L".pyo", NULL, L"Python.CompiledFile" },
- { L".pyw", NULL, L"Python.NoConFile" },
-
- { L"Python.CompiledFile", NULL, L"Compiled Python File" },
- { L"Python.CompiledFile\\DefaultIcon", NULL, L"pyc.ico" },
- { L"Python.CompiledFile\\shell\\open", NULL, L"Open" },
- { L"Python.CompiledFile\\shell\\open\\command", NULL, L"python.exe" },
-
- { L"Python.File", NULL, L"Python File" },
- { L"Python.File\\DefaultIcon", NULL, L"py.ico" },
- { L"Python.File\\shell\\open", NULL, L"Open" },
- { L"Python.File\\shell\\open\\command", NULL, L"python.exe" },
-
- { L"Python.NoConFile", NULL, L"Python File (no console)" },
- { L"Python.NoConFile\\DefaultIcon", NULL, L"py.ico" },
- { L"Python.NoConFile\\shell\\open", NULL, L"Open" },
- { L"Python.NoConFile\\shell\\open\\command", NULL, L"pythonw.exe" },
-
- { NULL }
-};
-
-static BOOL
-do_association(INSTALLED_PYTHON * ip)
-{
- LONG rc;
- BOOL result = TRUE;
- REGISTRY_ENTRY * rp = registry_entries;
- wchar_t value[MAX_PATH];
- wchar_t root[MAX_PATH];
- wchar_t message[MSGSIZE];
- wchar_t * pvalue;
- HKEY hKey;
- DWORD len;
-
- wcsncpy_s(root, MAX_PATH, ip->executable, _TRUNCATE);
- pvalue = wcsrchr(root, '\\');
- if (pvalue)
- *pvalue = L'\0';
-
- for (; rp->path; ++rp) {
- if (wcsstr(rp->path, L"DefaultIcon")) {
- pvalue = value;
- _snwprintf_s(value, MAX_PATH, _TRUNCATE,
- L"%s\\DLLs\\%s", root, rp->value);
- }
- else if (wcsstr(rp->path, L"open\\command")) {
- pvalue = value;
- _snwprintf_s(value, MAX_PATH, _TRUNCATE,
- L"%s\\%s \"%%1\" %%*", root, rp->value);
- }
- else {
- pvalue = rp->value;
- }
- /* use rp->path, rp->key, pvalue */
- /* NOTE: size is in bytes */
- len = (DWORD) ((1 + wcslen(pvalue)) * sizeof(wchar_t));
- rc = RegOpenKeyEx(HKEY_CLASSES_ROOT, rp->path, 0, KEY_SET_VALUE, &hKey);
- if (rc == ERROR_SUCCESS) {
- rc = RegSetValueExW(hKey, rp->key, 0, REG_SZ, (LPBYTE) pvalue, len);
- RegCloseKey(hKey);
- }
- if (rc != ERROR_SUCCESS) {
- winerror(rc, message, MSGSIZE);
- MessageBoxW(NULL, message, L"Unable to set file associations", MB_OK | MB_ICONSTOP);
- result = FALSE;
- break;
- }
- }
- return result;
-}
-
-static BOOL
-associations_exist()
-{
- BOOL result = FALSE;
- REGISTRY_ENTRY * rp = registry_entries;
- wchar_t buffer[MSGSIZE];
- LONG csize = MSGSIZE * sizeof(wchar_t);
- LONG rc;
-
- /* Currently, if any is found, we assume they're all there. */
-
- for (; rp->path; ++rp) {
- LONG size = csize;
- rc = RegQueryValueW(HKEY_CLASSES_ROOT, rp->path, buffer, &size);
- if (rc == ERROR_SUCCESS) {
- result = TRUE;
- break;
- }
- }
- return result;
-}
-
-/* --------------------------------------------------------------------*/
-
-static BOOL CALLBACK
-find_by_title(HWND hwnd, LPARAM lParam)
-{
- wchar_t buffer[MSGSIZE];
- BOOL not_found = TRUE;
-
- wchar_t * p = (wchar_t *) GetWindowTextW(hwnd, buffer, MSGSIZE);
- if (wcsstr(buffer, L"Python Launcher") == buffer) {
- not_found = FALSE;
- *((HWND *) lParam) = hwnd;
- }
- return not_found;
-}
-
-static HWND
-find_installer_window()
-{
- HWND result = NULL;
- BOOL found = EnumWindows(find_by_title, (LPARAM) &result);
-
- return result;
-}
-
-static void
-centre_window_in_front(HWND hwnd)
-{
- HWND hwndParent;
- RECT rect, rectP;
- int width, height;
- int screenwidth, screenheight;
- int x, y;
-
- //make the window relative to its parent
-
- screenwidth = GetSystemMetrics(SM_CXSCREEN);
- screenheight = GetSystemMetrics(SM_CYSCREEN);
-
- hwndParent = GetParent(hwnd);
-
- GetWindowRect(hwnd, &rect);
- if (hwndParent) {
- GetWindowRect(hwndParent, &rectP);
- }
- else {
- rectP.left = rectP.top = 0;
- rectP.right = screenwidth;
- rectP.bottom = screenheight;
- }
-
- width = rect.right - rect.left;
- height = rect.bottom - rect.top;
-
- x = ((rectP.right-rectP.left) - width) / 2 + rectP.left;
- y = ((rectP.bottom-rectP.top) - height) / 2 + rectP.top;
-
-
- //make sure that the dialog box never moves outside of
- //the screen
-
- if (x < 0)
- x = 0;
-
- if (y < 0)
- y = 0;
-
- if (x + width > screenwidth)
- x = screenwidth - width;
- if (y + height > screenheight)
- y = screenheight - height;
-
- SetWindowPos(hwnd, HWND_TOPMOST, x, y, width, height, SWP_SHOWWINDOW);
-}
-
-static void
-init_list(HWND hList)
-{
- LVCOLUMNW column;
- LVITEMW item;
- int colno = 0;
- int width = 0;
- int row;
- size_t i;
- INSTALLED_PYTHON * ip;
- RECT r;
- LPARAM style;
-
- GetClientRect(hList, &r);
-
- style = SendMessage(hList, LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0);
- SendMessage(hList, LVM_SETEXTENDEDLISTVIEWSTYLE,
- 0, style | LVS_EX_FULLROWSELECT);
-
- /* First set up the columns */
- memset(&column, 0, sizeof(column));
- column.mask = LVCF_TEXT | LVCF_WIDTH | LVCF_SUBITEM;
- column.pszText = L"Version";
- column.cx = 60;
- width += column.cx;
- SendMessage(hList, LVM_INSERTCOLUMN, colno++,(LPARAM) &column);
-#if defined(_M_X64)
- column.pszText = L"Bits";
- column.cx = 40;
- column.iSubItem = colno;
- SendMessage(hList, LVM_INSERTCOLUMN, colno++,(LPARAM) &column);
- width += column.cx;
-#endif
- column.pszText = L"Path";
- column.cx = r.right - r.top - width;
- column.iSubItem = colno;
- SendMessage(hList, LVM_INSERTCOLUMN, colno++,(LPARAM) &column);
-
- /* Then insert the rows */
- memset(&item, 0, sizeof(item));
- item.mask = LVIF_TEXT;
- for (i = 0, ip = installed_pythons; i < num_installed_pythons; i++,ip++) {
- item.iItem = (int) i;
- item.iSubItem = 0;
- item.pszText = ip->version;
- colno = 0;
- row = (int) SendMessage(hList, LVM_INSERTITEM, 0, (LPARAM) &item);
-#if defined(_M_X64)
- item.iSubItem = ++colno;
- item.pszText = (ip->bits == 64) ? L"64": L"32";
- SendMessage(hList, LVM_SETITEM, row, (LPARAM) &item);
-#endif
- item.iSubItem = ++colno;
- item.pszText = ip->executable;
- SendMessage(hList, LVM_SETITEM, row, (LPARAM) &item);
- }
-}
-
-/* ----------------------------------------------------------------*/
-
-typedef int (__stdcall *MSGBOXWAPI)(IN HWND hWnd,
- IN LPCWSTR lpText, IN LPCWSTR lpCaption,
- IN UINT uType, IN WORD wLanguageId, IN DWORD dwMilliseconds);
-
-int MessageBoxTimeoutW(IN HWND hWnd, IN LPCWSTR lpText,
- IN LPCWSTR lpCaption, IN UINT uType,
- IN WORD wLanguageId, IN DWORD dwMilliseconds);
-
-#define MB_TIMEDOUT 32000
-
-int MessageBoxTimeoutW(HWND hWnd, LPCWSTR lpText,
- LPCWSTR lpCaption, UINT uType, WORD wLanguageId, DWORD dwMilliseconds)
-{
- static MSGBOXWAPI MsgBoxTOW = NULL;
-
- if (!MsgBoxTOW) {
- HMODULE hUser32 = GetModuleHandleW(L"user32.dll");
- if (hUser32)
- MsgBoxTOW = (MSGBOXWAPI)GetProcAddress(hUser32,
- "MessageBoxTimeoutW");
- else {
- //stuff happened, add code to handle it here
- //(possibly just call MessageBox())
- return 0;
- }
- }
-
- if (MsgBoxTOW)
- return MsgBoxTOW(hWnd, lpText, lpCaption, uType, wLanguageId,
- dwMilliseconds);
-
- return 0;
-}
-/* ----------------------------------------------------------------*/
-
-static INT_PTR CALLBACK
-DialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
-{
- HWND hList;
- HWND hChild;
- static int selected_index = -1;
- WORD low = LOWORD(wParam);
- wchar_t confirmation[MSGSIZE];
- BOOL result = FALSE;
-
- debug(L"DialogProc entry: 0x%02X\n", message);
- switch (message) {
- case WM_INITDIALOG:
- hList = GetDlgItem(hDlg, IDC_LIST1);
- init_list(hList);
- SetFocus(hList);
- result = TRUE;
- break;
- case WM_COMMAND:
- if((low == IDOK) || (low == IDCANCEL)) {
- HMODULE hUser32 = LoadLibraryW(L"user32.dll");
-
- if (low == IDCANCEL)
- wcsncpy_s(confirmation, MSGSIZE, L"No association was \
-performed.", _TRUNCATE);
- else {
- if (selected_index < 0) {
- /* should never happen */
- wcsncpy_s(confirmation, MSGSIZE, L"The Python version to \
-associate with couldn't be determined.", _TRUNCATE);
- }
- else {
- INSTALLED_PYTHON * ip = &installed_pythons[selected_index];
-
- /* Do the association and set the message. */
- do_association(ip);
- _snwprintf_s(confirmation, MSGSIZE, _TRUNCATE,
- L"Associated Python files with the Python %s \
-found at '%s'", ip->version, ip->executable);
- }
- }
-
- if (hUser32) {
- MessageBoxTimeoutW(hDlg,
- confirmation,
- L"Association Status",
- MB_OK | MB_SETFOREGROUND |
- MB_ICONINFORMATION,
- 0, 2000);
- FreeLibrary(hUser32);
- }
- PostQuitMessage(0);
- EndDialog(hDlg, 0);
- result = TRUE;
- }
- break;
- case WM_NOTIFY:
- if (low == IDC_LIST1) {
- NMLISTVIEW * p = (NMLISTVIEW *) lParam;
-
- if ((p->hdr.code == LVN_ITEMCHANGED) &&
- (p->uNewState & LVIS_SELECTED)) {
- hChild = GetDlgItem(hDlg, IDOK);
- selected_index = p->iItem;
- EnableWindow(hChild, selected_index >= 0);
- }
- result = TRUE;
- }
- break;
- case WM_DESTROY:
- PostQuitMessage(0);
- result = TRUE;
- break;
- case WM_CLOSE:
- DestroyWindow(hDlg);
- result = TRUE;
- break;
- }
- debug(L"DialogProc exit: %d\n", result);
- return result;
-}
-
-int WINAPI wWinMain(HINSTANCE hInstance,
- HINSTANCE hPrevInstance,
- LPWSTR lpCmdLine, int nShow)
-{
- MSG msg;
- HWND hDialog = 0;
- HICON hIcon;
- HWND hParent;
- int status;
- DWORD dw;
- INITCOMMONCONTROLSEX icx;
- wchar_t * wp;
-
- wp = get_env(L"PYASSOC_DEBUG");
- if ((wp != NULL) && (*wp != L'\0')) {
- fopen_s(&log_fp, "c:\\temp\\associator.log", "w");
- }
-
- if (!lpCmdLine) {
- debug(L"No command line specified.\n");
- return 0;
- }
- if (!wcsstr(lpCmdLine, L"nocheck") &&
- associations_exist()) /* Could have been restored by uninstall. */
- return 0;
-
- locate_all_pythons();
-
- if (num_installed_pythons == 0)
- return 0;
-
- debug(L"%d pythons found.\n", num_installed_pythons);
-
- /*
- * OK, now there's something to do.
- *
- * We need to find the installer window to be the parent of
- * our dialog, otherwise our dialog will be behind it.
- *
- * First, initialize common controls. If you don't - on
- * some machines it works fine, on others the dialog never
- * appears!
- */
-
- icx.dwSize = sizeof(icx);
- icx.dwICC = ICC_LISTVIEW_CLASSES;
- InitCommonControlsEx(&icx);
-
- hParent = find_installer_window();
- debug(L"installer window: %X\n", hParent);
- hDialog = CreateDialogW(hInstance, MAKEINTRESOURCE(DLG_MAIN), hParent,
- DialogProc);
- dw = GetLastError();
- debug(L"dialog created: %X: error: %X\n", hDialog, dw);
-
- if (!hDialog)
- {
- wchar_t buf [100];
- _snwprintf_s(buf, 100, _TRUNCATE, L"Error 0x%x", GetLastError());
- MessageBoxW(0, buf, L"CreateDialog", MB_ICONEXCLAMATION | MB_OK);
- return 1;
- }
-
- centre_window_in_front(hDialog);
- hIcon = LoadIcon( GetModuleHandle(NULL), MAKEINTRESOURCE(DLG_ICON));
- if( hIcon )
- {
- SendMessage(hDialog, WM_SETICON, ICON_BIG, (LPARAM) hIcon);
- SendMessage(hDialog, WM_SETICON, ICON_SMALL, (LPARAM) hIcon);
- DestroyIcon(hIcon);
- }
-
- while ((status = GetMessage (& msg, 0, 0, 0)) != 0)
- {
- if (status == -1)
- return -1;
- if (!IsDialogMessage(hDialog, & msg))
- {
- TranslateMessage( & msg );
- DispatchMessage( & msg );
- }
- }
-
- return (int) msg.wParam;
-}
diff --git a/PC/associator.h b/PC/associator.h
deleted file mode 100644
index a2c1cde55c..0000000000
--- a/PC/associator.h
+++ /dev/null
@@ -1,1480 +0,0 @@
-//{{NO_DEPENDENCIES}}
-// Microsoft Visual C++ generated include file.
-// Used by main.rc
-//
-#define SW_HIDE 0
-#define HIDE_WINDOW 0
-#define WM_NULL 0x0000
-#define WA_INACTIVE 0
-#define HTNOWHERE 0
-#define SMTO_NORMAL 0x0000
-#define ICON_SMALL 0
-#define SIZE_RESTORED 0
-#define BN_CLICKED 0
-#define BST_UNCHECKED 0x0000
-#define HDS_HORZ 0x0000
-#define TBSTYLE_BUTTON 0x0000
-#define TBS_HORZ 0x0000
-#define TBS_BOTTOM 0x0000
-#define TBS_RIGHT 0x0000
-#define LVS_ICON 0x0000
-#define LVS_ALIGNTOP 0x0000
-#define TCS_TABS 0x0000
-#define TCS_SINGLELINE 0x0000
-#define TCS_RIGHTJUSTIFY 0x0000
-#define DTS_SHORTDATEFORMAT 0x0000
-#define PGS_VERT 0x00000000
-#define LANG_NEUTRAL 0x00
-#define SUBLANG_NEUTRAL 0x00
-#define SORT_DEFAULT 0x0
-#define SORT_JAPANESE_XJIS 0x0
-#define SORT_CHINESE_BIG5 0x0
-#define SORT_CHINESE_PRCP 0x0
-#define SORT_KOREAN_KSC 0x0
-#define SORT_HUNGARIAN_DEFAULT 0x0
-#define SORT_GEORGIAN_TRADITIONAL 0x0
-#define _USE_DECLSPECS_FOR_SAL 0
-#define SW_SHOWNORMAL 1
-#define SW_NORMAL 1
-#define SHOW_OPENWINDOW 1
-#define SW_PARENTCLOSING 1
-#define VK_LBUTTON 0x01
-#define WM_CREATE 0x0001
-#define WA_ACTIVE 1
-#define PWR_OK 1
-#define PWR_SUSPENDREQUEST 1
-#define NFR_ANSI 1
-#define UIS_SET 1
-#define UISF_HIDEFOCUS 0x1
-#define XBUTTON1 0x0001
-#define WMSZ_LEFT 1
-#define HTCLIENT 1
-#define SMTO_BLOCK 0x0001
-#define MA_ACTIVATE 1
-#define ICON_BIG 1
-#define SIZE_MINIMIZED 1
-#define MK_LBUTTON 0x0001
-#define TME_HOVER 0x00000001
-#define CS_VREDRAW 0x0001
-#define CF_TEXT 1
-#define SCF_ISSECURE 0x00000001
-#define IDOK 1
-#define BN_PAINT 1
-#define BST_CHECKED 0x0001
-#define TBSTYLE_SEP 0x0001
-#define TTS_ALWAYSTIP 0x01
-#define TBS_AUTOTICKS 0x0001
-#define UDS_WRAP 0x0001
-#define PBS_SMOOTH 0x01
-#define LWS_TRANSPARENT 0x0001
-#define LVS_REPORT 0x0001
-#define TVS_HASBUTTONS 0x0001
-#define TCS_SCROLLOPPOSITE 0x0001
-#define ACS_CENTER 0x0001
-#define MCS_DAYSTATE 0x0001
-#define DTS_UPDOWN 0x0001
-#define PGS_HORZ 0x00000001
-#define NFS_EDIT 0x0001
-#define BCSIF_GLYPH 0x0001
-#define BCSS_NOSPLIT 0x0001
-#define LANG_ARABIC 0x01
-#define SUBLANG_DEFAULT 0x01
-#define SUBLANG_AFRIKAANS_SOUTH_AFRICA 0x01
-#define SUBLANG_ALBANIAN_ALBANIA 0x01
-#define SUBLANG_ALSATIAN_FRANCE 0x01
-#define SUBLANG_AMHARIC_ETHIOPIA 0x01
-#define SUBLANG_ARABIC_SAUDI_ARABIA 0x01
-#define SUBLANG_ARMENIAN_ARMENIA 0x01
-#define SUBLANG_ASSAMESE_INDIA 0x01
-#define SUBLANG_AZERI_LATIN 0x01
-#define SUBLANG_BASHKIR_RUSSIA 0x01
-#define SUBLANG_BASQUE_BASQUE 0x01
-#define SUBLANG_BELARUSIAN_BELARUS 0x01
-#define SUBLANG_BENGALI_INDIA 0x01
-#define SUBLANG_BRETON_FRANCE 0x01
-#define SUBLANG_BULGARIAN_BULGARIA 0x01
-#define SUBLANG_CATALAN_CATALAN 0x01
-#define SUBLANG_CHINESE_TRADITIONAL 0x01
-#define SUBLANG_CORSICAN_FRANCE 0x01
-#define SUBLANG_CZECH_CZECH_REPUBLIC 0x01
-#define SUBLANG_CROATIAN_CROATIA 0x01
-#define SUBLANG_DANISH_DENMARK 0x01
-#define SUBLANG_DARI_AFGHANISTAN 0x01
-#define SUBLANG_DIVEHI_MALDIVES 0x01
-#define SUBLANG_DUTCH 0x01
-#define SUBLANG_ENGLISH_US 0x01
-#define SUBLANG_ESTONIAN_ESTONIA 0x01
-#define SUBLANG_FAEROESE_FAROE_ISLANDS 0x01
-#define SUBLANG_FILIPINO_PHILIPPINES 0x01
-#define SUBLANG_FINNISH_FINLAND 0x01
-#define SUBLANG_FRENCH 0x01
-#define SUBLANG_FRISIAN_NETHERLANDS 0x01
-#define SUBLANG_GALICIAN_GALICIAN 0x01
-#define SUBLANG_GEORGIAN_GEORGIA 0x01
-#define SUBLANG_GERMAN 0x01
-#define SUBLANG_GREEK_GREECE 0x01
-#define SUBLANG_GREENLANDIC_GREENLAND 0x01
-#define SUBLANG_GUJARATI_INDIA 0x01
-#define SUBLANG_HAUSA_NIGERIA_LATIN 0x01
-#define SUBLANG_HEBREW_ISRAEL 0x01
-#define SUBLANG_HINDI_INDIA 0x01
-#define SUBLANG_HUNGARIAN_HUNGARY 0x01
-#define SUBLANG_ICELANDIC_ICELAND 0x01
-#define SUBLANG_IGBO_NIGERIA 0x01
-#define SUBLANG_INDONESIAN_INDONESIA 0x01
-#define SUBLANG_INUKTITUT_CANADA 0x01
-#define SUBLANG_ITALIAN 0x01
-#define SUBLANG_JAPANESE_JAPAN 0x01
-#define SUBLANG_KANNADA_INDIA 0x01
-#define SUBLANG_KAZAK_KAZAKHSTAN 0x01
-#define SUBLANG_KHMER_CAMBODIA 0x01
-#define SUBLANG_KICHE_GUATEMALA 0x01
-#define SUBLANG_KINYARWANDA_RWANDA 0x01
-#define SUBLANG_KONKANI_INDIA 0x01
-#define SUBLANG_KOREAN 0x01
-#define SUBLANG_KYRGYZ_KYRGYZSTAN 0x01
-#define SUBLANG_LAO_LAO 0x01
-#define SUBLANG_LATVIAN_LATVIA 0x01
-#define SUBLANG_LITHUANIAN 0x01
-#define SUBLANG_LUXEMBOURGISH_LUXEMBOURG 0x01
-#define SUBLANG_MACEDONIAN_MACEDONIA 0x01
-#define SUBLANG_MALAY_MALAYSIA 0x01
-#define SUBLANG_MALAYALAM_INDIA 0x01
-#define SUBLANG_MALTESE_MALTA 0x01
-#define SUBLANG_MAORI_NEW_ZEALAND 0x01
-#define SUBLANG_MAPUDUNGUN_CHILE 0x01
-#define SUBLANG_MARATHI_INDIA 0x01
-#define SUBLANG_MOHAWK_MOHAWK 0x01
-#define SUBLANG_MONGOLIAN_CYRILLIC_MONGOLIA 0x01
-#define SUBLANG_NEPALI_NEPAL 0x01
-#define SUBLANG_NORWEGIAN_BOKMAL 0x01
-#define SUBLANG_OCCITAN_FRANCE 0x01
-#define SUBLANG_ORIYA_INDIA 0x01
-#define SUBLANG_PASHTO_AFGHANISTAN 0x01
-#define SUBLANG_PERSIAN_IRAN 0x01
-#define SUBLANG_POLISH_POLAND 0x01
-#define SUBLANG_PORTUGUESE_BRAZILIAN 0x01
-#define SUBLANG_PUNJABI_INDIA 0x01
-#define SUBLANG_QUECHUA_BOLIVIA 0x01
-#define SUBLANG_ROMANIAN_ROMANIA 0x01
-#define SUBLANG_ROMANSH_SWITZERLAND 0x01
-#define SUBLANG_RUSSIAN_RUSSIA 0x01
-#define SUBLANG_SAMI_NORTHERN_NORWAY 0x01
-#define SUBLANG_SANSKRIT_INDIA 0x01
-#define SUBLANG_SERBIAN_CROATIA 0x01
-#define SUBLANG_SINDHI_INDIA 0x01
-#define SUBLANG_SINHALESE_SRI_LANKA 0x01
-#define SUBLANG_SOTHO_NORTHERN_SOUTH_AFRICA 0x01
-#define SUBLANG_SLOVAK_SLOVAKIA 0x01
-#define SUBLANG_SLOVENIAN_SLOVENIA 0x01
-#define SUBLANG_SPANISH 0x01
-#define SUBLANG_SWAHILI_KENYA 0x01
-#define SUBLANG_SWEDISH 0x01
-#define SUBLANG_SYRIAC_SYRIA 0x01
-#define SUBLANG_TAJIK_TAJIKISTAN 0x01
-#define SUBLANG_TAMIL_INDIA 0x01
-#define SUBLANG_TATAR_RUSSIA 0x01
-#define SUBLANG_TELUGU_INDIA 0x01
-#define SUBLANG_THAI_THAILAND 0x01
-#define SUBLANG_TIBETAN_PRC 0x01
-#define SUBLANG_TSWANA_SOUTH_AFRICA 0x01
-#define SUBLANG_TURKISH_TURKEY 0x01
-#define SUBLANG_TURKMEN_TURKMENISTAN 0x01
-#define SUBLANG_UIGHUR_PRC 0x01
-#define SUBLANG_UKRAINIAN_UKRAINE 0x01
-#define SUBLANG_UPPER_SORBIAN_GERMANY 0x01
-#define SUBLANG_URDU_PAKISTAN 0x01
-#define SUBLANG_UZBEK_LATIN 0x01
-#define SUBLANG_VIETNAMESE_VIETNAM 0x01
-#define SUBLANG_WELSH_UNITED_KINGDOM 0x01
-#define SUBLANG_WOLOF_SENEGAL 0x01
-#define SUBLANG_XHOSA_SOUTH_AFRICA 0x01
-#define SUBLANG_YAKUT_RUSSIA 0x01
-#define SUBLANG_YI_PRC 0x01
-#define SUBLANG_YORUBA_NIGERIA 0x01
-#define SUBLANG_ZULU_SOUTH_AFRICA 0x01
-#define SORT_INVARIANT_MATH 0x1
-#define SORT_JAPANESE_UNICODE 0x1
-#define SORT_CHINESE_UNICODE 0x1
-#define SORT_KOREAN_UNICODE 0x1
-#define SORT_GERMAN_PHONE_BOOK 0x1
-#define SORT_HUNGARIAN_TECHNICAL 0x1
-#define SORT_GEORGIAN_MODERN 0x1
-#define VS_VERSION_INFO 1
-#define VFFF_ISSHAREDFILE 0x0001
-#define VFF_CURNEDEST 0x0001
-#define VIFF_FORCEINSTALL 0x0001
-#define SW_SHOWMINIMIZED 2
-#define SHOW_ICONWINDOW 2
-#define SW_OTHERZOOM 2
-#define VK_RBUTTON 0x02
-#define WM_DESTROY 0x0002
-#define WA_CLICKACTIVE 2
-#define PWR_SUSPENDRESUME 2
-#define NFR_UNICODE 2
-#define UIS_CLEAR 2
-#define UISF_HIDEACCEL 0x2
-#define XBUTTON2 0x0002
-#define WMSZ_RIGHT 2
-#define HTCAPTION 2
-#define SMTO_ABORTIFHUNG 0x0002
-#define MA_ACTIVATEANDEAT 2
-#define ICON_SMALL2 2
-#define SIZE_MAXIMIZED 2
-#define MK_RBUTTON 0x0002
-#define TME_LEAVE 0x00000002
-#define CS_HREDRAW 0x0002
-#define CF_BITMAP 2
-#define IDCANCEL 2
-#define BN_HILITE 2
-#define BST_INDETERMINATE 0x0002
-#define HDS_BUTTONS 0x0002
-#define TBSTYLE_CHECK 0x0002
-#define TTS_NOPREFIX 0x02
-#define TBS_VERT 0x0002
-#define UDS_SETBUDDYINT 0x0002
-#define LWS_IGNORERETURN 0x0002
-#define LVS_SMALLICON 0x0002
-#define TVS_HASLINES 0x0002
-#define TVS_EX_MULTISELECT 0x0002
-#define TCS_BOTTOM 0x0002
-#define TCS_RIGHT 0x0002
-#define ACS_TRANSPARENT 0x0002
-#define MCS_MULTISELECT 0x0002
-#define DTS_SHOWNONE 0x0002
-#define PGS_AUTOSCROLL 0x00000002
-#define NFS_STATIC 0x0002
-#define BCSIF_IMAGE 0x0002
-#define BCSS_STRETCH 0x0002
-#define LANG_BULGARIAN 0x02
-#define SUBLANG_SYS_DEFAULT 0x02
-#define SUBLANG_ARABIC_IRAQ 0x02
-#define SUBLANG_AZERI_CYRILLIC 0x02
-#define SUBLANG_BENGALI_BANGLADESH 0x02
-#define SUBLANG_CHINESE_SIMPLIFIED 0x02
-#define SUBLANG_DUTCH_BELGIAN 0x02
-#define SUBLANG_ENGLISH_UK 0x02
-#define SUBLANG_FRENCH_BELGIAN 0x02
-#define SUBLANG_GERMAN_SWISS 0x02
-#define SUBLANG_INUKTITUT_CANADA_LATIN 0x02
-#define SUBLANG_IRISH_IRELAND 0x02
-#define SUBLANG_ITALIAN_SWISS 0x02
-#define SUBLANG_KASHMIRI_SASIA 0x02
-#define SUBLANG_KASHMIRI_INDIA 0x02
-#define SUBLANG_LOWER_SORBIAN_GERMANY 0x02
-#define SUBLANG_MALAY_BRUNEI_DARUSSALAM 0x02
-#define SUBLANG_MONGOLIAN_PRC 0x02
-#define SUBLANG_NEPALI_INDIA 0x02
-#define SUBLANG_NORWEGIAN_NYNORSK 0x02
-#define SUBLANG_PORTUGUESE 0x02
-#define SUBLANG_QUECHUA_ECUADOR 0x02
-#define SUBLANG_SAMI_NORTHERN_SWEDEN 0x02
-#define SUBLANG_SERBIAN_LATIN 0x02
-#define SUBLANG_SINDHI_PAKISTAN 0x02
-#define SUBLANG_SINDHI_AFGHANISTAN 0x02
-#define SUBLANG_SPANISH_MEXICAN 0x02
-#define SUBLANG_SWEDISH_FINLAND 0x02
-#define SUBLANG_TAMAZIGHT_ALGERIA_LATIN 0x02
-#define SUBLANG_TIGRIGNA_ERITREA 0x02
-#define SUBLANG_URDU_INDIA 0x02
-#define SUBLANG_UZBEK_CYRILLIC 0x02
-#define SORT_CHINESE_PRC 0x2
-#define VFF_FILEINUSE 0x0002
-#define VIFF_DONTDELETEOLD 0x0002
-#define SW_SHOWMAXIMIZED 3
-#define SW_MAXIMIZE 3
-#define SHOW_FULLSCREEN 3
-#define SW_PARENTOPENING 3
-#define VK_CANCEL 0x03
-#define WM_MOVE 0x0003
-#define PWR_CRITICALRESUME 3
-#define NF_QUERY 3
-#define UIS_INITIALIZE 3
-#define WMSZ_TOP 3
-#define HTSYSMENU 3
-#define MA_NOACTIVATE 3
-#define SIZE_MAXSHOW 3
-#define CF_METAFILEPICT 3
-#define IDABORT 3
-#define BN_UNHILITE 3
-#define LVS_LIST 0x0003
-#define LVS_TYPEMASK 0x0003
-#define LANG_CATALAN 0x03
-#define SUBLANG_CUSTOM_DEFAULT 0x03
-#define SUBLANG_ARABIC_EGYPT 0x03
-#define SUBLANG_CHINESE_HONGKONG 0x03
-#define SUBLANG_ENGLISH_AUS 0x03
-#define SUBLANG_FRENCH_CANADIAN 0x03
-#define SUBLANG_GERMAN_AUSTRIAN 0x03
-#define SUBLANG_QUECHUA_PERU 0x03
-#define SUBLANG_SAMI_NORTHERN_FINLAND 0x03
-#define SUBLANG_SERBIAN_CYRILLIC 0x03
-#define SUBLANG_SPANISH_MODERN 0x03
-#define SORT_CHINESE_BOPOMOFO 0x3
-#define SW_SHOWNOACTIVATE 4
-#define SHOW_OPENNOACTIVATE 4
-#define SW_OTHERUNZOOM 4
-#define VK_MBUTTON 0x04
-#define NF_REQUERY 4
-#define UISF_ACTIVE 0x4
-#define WMSZ_TOPLEFT 4
-#define HTGROWBOX 4
-#define MA_NOACTIVATEANDEAT 4
-#define SIZE_MAXHIDE 4
-#define MK_SHIFT 0x0004
-#define CF_SYLK 4
-#define IDRETRY 4
-#define BN_DISABLE 4
-#define BST_PUSHED 0x0004
-#define HDS_HOTTRACK 0x0004
-#define TBSTYLE_GROUP 0x0004
-#define TBS_TOP 0x0004
-#define TBS_LEFT 0x0004
-#define UDS_ALIGNRIGHT 0x0004
-#define PBS_VERTICAL 0x04
-#define LWS_NOPREFIX 0x0004
-#define LVS_SINGLESEL 0x0004
-#define TVS_LINESATROOT 0x0004
-#define TVS_EX_DOUBLEBUFFER 0x0004
-#define TCS_MULTISELECT 0x0004
-#define ACS_AUTOPLAY 0x0004
-#define MCS_WEEKNUMBERS 0x0004
-#define DTS_LONGDATEFORMAT 0x0004
-#define PGS_DRAGNDROP 0x00000004
-#define NFS_LISTCOMBO 0x0004
-#define BCSIF_STYLE 0x0004
-#define BCSS_ALIGNLEFT 0x0004
-#define LANG_CHINESE 0x04
-#define LANG_CHINESE_SIMPLIFIED 0x04
-#define SUBLANG_CUSTOM_UNSPECIFIED 0x04
-#define SUBLANG_ARABIC_LIBYA 0x04
-#define SUBLANG_CHINESE_SINGAPORE 0x04
-#define SUBLANG_CROATIAN_BOSNIA_HERZEGOVINA_LATIN 0x04
-#define SUBLANG_ENGLISH_CAN 0x04
-#define SUBLANG_FRENCH_SWISS 0x04
-#define SUBLANG_GERMAN_LUXEMBOURG 0x04
-#define SUBLANG_SAMI_LULE_NORWAY 0x04
-#define SUBLANG_SPANISH_GUATEMALA 0x04
-#define SORT_JAPANESE_RADICALSTROKE 0x4
-#define VFF_BUFFTOOSMALL 0x0004
-#define SW_SHOW 5
-#define VK_XBUTTON1 0x05
-#define WM_SIZE 0x0005
-#define WMSZ_TOPRIGHT 5
-#define HTMENU 5
-#define CF_DIF 5
-#define IDIGNORE 5
-#define BN_DOUBLECLICKED 5
-#define LANG_CZECH 0x05
-#define SUBLANG_UI_CUSTOM_DEFAULT 0x05
-#define SUBLANG_ARABIC_ALGERIA 0x05
-#define SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_LATIN 0x05
-#define SUBLANG_CHINESE_MACAU 0x05
-#define SUBLANG_ENGLISH_NZ 0x05
-#define SUBLANG_FRENCH_LUXEMBOURG 0x05
-#define SUBLANG_GERMAN_LIECHTENSTEIN 0x05
-#define SUBLANG_SAMI_LULE_SWEDEN 0x05
-#define SUBLANG_SPANISH_COSTA_RICA 0x05
-#define SW_MINIMIZE 6
-#define VK_XBUTTON2 0x06
-#define WM_ACTIVATE 0x0006
-#define WMSZ_BOTTOM 6
-#define HTHSCROLL 6
-#define CF_TIFF 6
-#define IDYES 6
-#define BN_SETFOCUS 6
-#define LANG_DANISH 0x06
-#define SUBLANG_ARABIC_MOROCCO 0x06
-#define SUBLANG_ENGLISH_EIRE 0x06
-#define SUBLANG_FRENCH_MONACO 0x06
-#define SUBLANG_SAMI_SOUTHERN_NORWAY 0x06
-#define SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_LATIN 0x06
-#define SUBLANG_SPANISH_PANAMA 0x06
-#define SW_SHOWMINNOACTIVE 7
-#define WM_SETFOCUS 0x0007
-#define WMSZ_BOTTOMLEFT 7
-#define HTVSCROLL 7
-#define CF_OEMTEXT 7
-#define IDNO 7
-#define BN_KILLFOCUS 7
-#define LANG_GERMAN 0x07
-#define SUBLANG_ARABIC_TUNISIA 0x07
-#define SUBLANG_ENGLISH_SOUTH_AFRICA 0x07
-#define SUBLANG_SAMI_SOUTHERN_SWEDEN 0x07
-#define SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_CYRILLIC 0x07
-#define SUBLANG_SPANISH_DOMINICAN_REPUBLIC 0x07
-#define SW_SHOWNA 8
-#define VK_BACK 0x08
-#define WM_KILLFOCUS 0x0008
-#define WMSZ_BOTTOMRIGHT 8
-#define HTMINBUTTON 8
-#define SMTO_NOTIMEOUTIFNOTHUNG 0x0008
-#define MK_CONTROL 0x0008
-#define CS_DBLCLKS 0x0008
-#define CF_DIB 8
-#define IDCLOSE 8
-#define BST_FOCUS 0x0008
-#define HDS_HIDDEN 0x0008
-#define TBSTYLE_DROPDOWN 0x0008
-#define TBS_BOTH 0x0008
-#define UDS_ALIGNLEFT 0x0008
-#define PBS_MARQUEE 0x08
-#define LWS_USEVISUALSTYLE 0x0008
-#define LVS_SHOWSELALWAYS 0x0008
-#define TVS_EDITLABELS 0x0008
-#define TVS_EX_NOINDENTSTATE 0x0008
-#define TCS_FLATBUTTONS 0x0008
-#define ACS_TIMER 0x0008
-#define MCS_NOTODAYCIRCLE 0x0008
-#define NFS_BUTTON 0x0008
-#define BCSIF_SIZE 0x0008
-#define BCSS_IMAGE 0x0008
-#define LANG_GREEK 0x08
-#define SUBLANG_ARABIC_OMAN 0x08
-#define SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_CYRILLIC 0x08
-#define SUBLANG_ENGLISH_JAMAICA 0x08
-#define SUBLANG_SAMI_SKOLT_FINLAND 0x08
-#define SUBLANG_SPANISH_VENEZUELA 0x08
-#define SW_RESTORE 9
-#define VK_TAB 0x09
-#define HTMAXBUTTON 9
-#define CF_PALETTE 9
-#define IDHELP 9
-#define DTS_TIMEFORMAT 0x0009
-#define LANG_ENGLISH 0x09
-#define SUBLANG_ARABIC_YEMEN 0x09
-#define SUBLANG_ENGLISH_CARIBBEAN 0x09
-#define SUBLANG_SAMI_INARI_FINLAND 0x09
-#define SUBLANG_SPANISH_COLOMBIA 0x09
-#define SW_SHOWDEFAULT 10
-#define WM_ENABLE 0x000A
-#define HTLEFT 10
-#define CF_PENDATA 10
-#define IDTRYAGAIN 10
-#define HELP_CONTEXTMENU 0x000a
-#define LANG_SPANISH 0x0a
-#define SUBLANG_ARABIC_SYRIA 0x0a
-#define SUBLANG_ENGLISH_BELIZE 0x0a
-#define SUBLANG_SPANISH_PERU 0x0a
-#define SW_FORCEMINIMIZE 11
-#define SW_MAX 11
-#define WM_SETREDRAW 0x000B
-#define HTRIGHT 11
-#define CF_RIFF 11
-#define IDCONTINUE 11
-#define HELP_FINDER 0x000b
-#define LANG_FINNISH 0x0b
-#define SUBLANG_ARABIC_JORDAN 0x0b
-#define SUBLANG_ENGLISH_TRINIDAD 0x0b
-#define SUBLANG_SPANISH_ARGENTINA 0x0b
-#define VK_CLEAR 0x0C
-#define WM_SETTEXT 0x000C
-#define HTTOP 12
-#define CF_WAVE 12
-#define HELP_WM_HELP 0x000c
-#define DTS_SHORTDATECENTURYFORMAT 0x000C
-#define LANG_FRENCH 0x0c
-#define SUBLANG_ARABIC_LEBANON 0x0c
-#define SUBLANG_ENGLISH_ZIMBABWE 0x0c
-#define SUBLANG_SPANISH_ECUADOR 0x0c
-#define VK_RETURN 0x0D
-#define WM_GETTEXT 0x000D
-#define HTTOPLEFT 13
-#define CF_UNICODETEXT 13
-#define HELP_SETPOPUP_POS 0x000d
-#define LANG_HEBREW 0x0d
-#define SUBLANG_ARABIC_KUWAIT 0x0d
-#define SUBLANG_ENGLISH_PHILIPPINES 0x0d
-#define SUBLANG_SPANISH_CHILE 0x0d
-#define WM_GETTEXTLENGTH 0x000E
-#define HTTOPRIGHT 14
-#define CF_ENHMETAFILE 14
-#define LANG_HUNGARIAN 0x0e
-#define SUBLANG_ARABIC_UAE 0x0e
-#define SUBLANG_SPANISH_URUGUAY 0x0e
-#define WM_PAINT 0x000F
-#define HTBOTTOM 15
-#define CF_HDROP 15
-#define LANG_ICELANDIC 0x0f
-#define SUBLANG_ARABIC_BAHRAIN 0x0f
-#define SUBLANG_SPANISH_PARAGUAY 0x0f
-#define VK_SHIFT 0x10
-#define WM_CLOSE 0x0010
-#define HTBOTTOMLEFT 16
-#define WVR_ALIGNTOP 0x0010
-#define MK_MBUTTON 0x0010
-#define TME_NONCLIENT 0x00000010
-#define CF_LOCALE 16
-#define HELP_TCARD_DATA 0x0010
-#define TBSTYLE_AUTOSIZE 0x0010
-#define TTS_NOANIMATE 0x10
-#define TBS_NOTICKS 0x0010
-#define UDS_AUTOBUDDY 0x0010
-#define PBS_SMOOTHREVERSE 0x10
-#define LWS_USECUSTOMTEXT 0x0010
-#define LVS_SORTASCENDING 0x0010
-#define TVS_DISABLEDRAGDROP 0x0010
-#define TVS_EX_RICHTOOLTIP 0x0010
-#define TCS_FORCEICONLEFT 0x0010
-#define MCS_NOTODAY 0x0010
-#define DTS_APPCANPARSE 0x0010
-#define NFS_ALL 0x0010
-#define LANG_ITALIAN 0x10
-#define SUBLANG_ARABIC_QATAR 0x10
-#define SUBLANG_ENGLISH_INDIA 0x10
-#define SUBLANG_SPANISH_BOLIVIA 0x10
-#define VK_CONTROL 0x11
-#define WM_QUERYENDSESSION 0x0011
-#define HTBOTTOMRIGHT 17
-#define CF_DIBV5 17
-#define HELP_TCARD_OTHER_CALLER 0x0011
-#define LANG_JAPANESE 0x11
-#define SUBLANG_ENGLISH_MALAYSIA 0x11
-#define SUBLANG_SPANISH_EL_SALVADOR 0x11
-#define VK_MENU 0x12
-#define WM_QUIT 0x0012
-#define HTBORDER 18
-#define CF_MAX 18
-#define LANG_KOREAN 0x12
-#define SUBLANG_ENGLISH_SINGAPORE 0x12
-#define SUBLANG_SPANISH_HONDURAS 0x12
-#define VK_PAUSE 0x13
-#define WM_QUERYOPEN 0x0013
-#define HTOBJECT 19
-#define LANG_DUTCH 0x13
-#define SUBLANG_SPANISH_NICARAGUA 0x13
-#define VK_CAPITAL 0x14
-#define WM_ERASEBKGND 0x0014
-#define HTCLOSE 20
-#define LANG_NORWEGIAN 0x14
-#define SUBLANG_SPANISH_PUERTO_RICO 0x14
-#define VK_KANA 0x15
-#define VK_HANGEUL 0x15
-#define VK_HANGUL 0x15
-#define WM_SYSCOLORCHANGE 0x0015
-#define HTHELP 21
-#define LANG_POLISH 0x15
-#define SUBLANG_SPANISH_US 0x15
-#define WM_ENDSESSION 0x0016
-#define LANG_PORTUGUESE 0x16
-#define VK_JUNJA 0x17
-#define LANG_ROMANSH 0x17
-#define VK_FINAL 0x18
-#define WM_SHOWWINDOW 0x0018
-#define LANG_ROMANIAN 0x18
-#define VK_HANJA 0x19
-#define VK_KANJI 0x19
-#define LANG_RUSSIAN 0x19
-#define WM_WININICHANGE 0x001A
-#define LANG_BOSNIAN 0x1a
-#define LANG_CROATIAN 0x1a
-#define LANG_SERBIAN 0x1a
-#define VK_ESCAPE 0x1B
-#define WM_DEVMODECHANGE 0x001B
-#define LANG_SLOVAK 0x1b
-#define VK_CONVERT 0x1C
-#define WM_ACTIVATEAPP 0x001C
-#define LANG_ALBANIAN 0x1c
-#define VK_NONCONVERT 0x1D
-#define WM_FONTCHANGE 0x001D
-#define LANG_SWEDISH 0x1d
-#define VK_ACCEPT 0x1E
-#define WM_TIMECHANGE 0x001E
-#define LANG_THAI 0x1e
-#define VK_MODECHANGE 0x1F
-#define WM_CANCELMODE 0x001F
-#define LANG_TURKISH 0x1f
-#define VK_SPACE 0x20
-#define WM_SETCURSOR 0x0020
-#define SMTO_ERRORONEXIT 0x0020
-#define WVR_ALIGNLEFT 0x0020
-#define MK_XBUTTON1 0x0020
-#define CS_OWNDC 0x0020
-#define TBSTYLE_NOPREFIX 0x0020
-#define TTS_NOFADE 0x20
-#define TBS_ENABLESELRANGE 0x0020
-#define UDS_ARROWKEYS 0x0020
-#define LWS_RIGHT 0x0020
-#define LVS_SORTDESCENDING 0x0020
-#define TVS_SHOWSELALWAYS 0x0020
-#define TVS_EX_AUTOHSCROLL 0x0020
-#define TCS_FORCELABELLEFT 0x0020
-#define DTS_RIGHTALIGN 0x0020
-#define NFS_USEFONTASSOC 0x0020
-#define LANG_URDU 0x20
-#define VK_PRIOR 0x21
-#define WM_MOUSEACTIVATE 0x0021
-#define LANG_INDONESIAN 0x21
-#define VK_NEXT 0x22
-#define WM_CHILDACTIVATE 0x0022
-#define LANG_UKRAINIAN 0x22
-#define VK_END 0x23
-#define WM_QUEUESYNC 0x0023
-#define LANG_BELARUSIAN 0x23
-#define VK_HOME 0x24
-#define WM_GETMINMAXINFO 0x0024
-#define LANG_SLOVENIAN 0x24
-#define VK_LEFT 0x25
-#define LANG_ESTONIAN 0x25
-#define VK_UP 0x26
-#define WM_PAINTICON 0x0026
-#define LANG_LATVIAN 0x26
-#define VK_RIGHT 0x27
-#define WM_ICONERASEBKGND 0x0027
-#define LANG_LITHUANIAN 0x27
-#define VK_DOWN 0x28
-#define WM_NEXTDLGCTL 0x0028
-#define LANG_TAJIK 0x28
-#define VK_SELECT 0x29
-#define LANG_FARSI 0x29
-#define LANG_PERSIAN 0x29
-#define VK_PRINT 0x2A
-#define WM_SPOOLERSTATUS 0x002A
-#define LANG_VIETNAMESE 0x2a
-#define VK_EXECUTE 0x2B
-#define WM_DRAWITEM 0x002B
-#define LANG_ARMENIAN 0x2b
-#define VK_SNAPSHOT 0x2C
-#define WM_MEASUREITEM 0x002C
-#define LANG_AZERI 0x2c
-#define VK_INSERT 0x2D
-#define WM_DELETEITEM 0x002D
-#define LANG_BASQUE 0x2d
-#define VK_DELETE 0x2E
-#define WM_VKEYTOITEM 0x002E
-#define LANG_LOWER_SORBIAN 0x2e
-#define LANG_UPPER_SORBIAN 0x2e
-#define VK_HELP 0x2F
-#define WM_CHARTOITEM 0x002F
-#define LANG_MACEDONIAN 0x2f
-#define WM_SETFONT 0x0030
-#define WM_GETFONT 0x0031
-#define WM_SETHOTKEY 0x0032
-#define LANG_TSWANA 0x32
-#define WM_GETHOTKEY 0x0033
-#define LANG_XHOSA 0x34
-#define LANG_ZULU 0x35
-#define LANG_AFRIKAANS 0x36
-#define WM_QUERYDRAGICON 0x0037
-#define LANG_GEORGIAN 0x37
-#define LANG_FAEROESE 0x38
-#define WM_COMPAREITEM 0x0039
-#define LANG_HINDI 0x39
-#define LANG_MALTESE 0x3a
-#define LANG_SAMI 0x3b
-#define LANG_IRISH 0x3c
-#define WM_GETOBJECT 0x003D
-#define LANG_MALAY 0x3e
-#define LANG_KAZAK 0x3f
-#define WVR_ALIGNBOTTOM 0x0040
-#define MK_XBUTTON2 0x0040
-#define CS_CLASSDC 0x0040
-#define HDS_DRAGDROP 0x0040
-#define BTNS_SHOWTEXT 0x0040
-#define TTS_BALLOON 0x40
-#define TBS_FIXEDLENGTH 0x0040
-#define UDS_HORZ 0x0040
-#define LVS_SHAREIMAGELISTS 0x0040
-#define TVS_RTLREADING 0x0040
-#define TVS_EX_FADEINOUTEXPANDOS 0x0040
-#define TCS_HOTTRACK 0x0040
-#define MCS_NOTRAILINGDATES 0x0040
-#define LANG_KYRGYZ 0x40
-#define WM_COMPACTING 0x0041
-#define LANG_SWAHILI 0x41
-#define LANG_TURKMEN 0x42
-#define LANG_UZBEK 0x43
-#define WM_COMMNOTIFY 0x0044
-#define LANG_TATAR 0x44
-#define LANG_BENGALI 0x45
-#define WM_WINDOWPOSCHANGING 0x0046
-#define LANG_PUNJABI 0x46
-#define WM_WINDOWPOSCHANGED 0x0047
-#define LANG_GUJARATI 0x47
-#define WM_POWER 0x0048
-#define LANG_ORIYA 0x48
-#define LANG_TAMIL 0x49
-#define WM_COPYDATA 0x004A
-#define LANG_TELUGU 0x4a
-#define WM_CANCELJOURNAL 0x004B
-#define LANG_KANNADA 0x4b
-#define LANG_MALAYALAM 0x4c
-#define LANG_ASSAMESE 0x4d
-#define WM_NOTIFY 0x004E
-#define LANG_MARATHI 0x4e
-#define LANG_SANSKRIT 0x4f
-#define WM_INPUTLANGCHANGEREQUEST 0x0050
-#define LANG_MONGOLIAN 0x50
-#define WM_INPUTLANGCHANGE 0x0051
-#define LANG_TIBETAN 0x51
-#define WM_TCARD 0x0052
-#define LANG_WELSH 0x52
-#define WM_HELP 0x0053
-#define LANG_KHMER 0x53
-#define WM_USERCHANGED 0x0054
-#define LANG_LAO 0x54
-#define WM_NOTIFYFORMAT 0x0055
-#define LANG_GALICIAN 0x56
-#define LANG_KONKANI 0x57
-#define LANG_MANIPURI 0x58
-#define LANG_SINDHI 0x59
-#define LANG_SYRIAC 0x5a
-#define VK_LWIN 0x5B
-#define LANG_SINHALESE 0x5b
-#define VK_RWIN 0x5C
-#define VK_APPS 0x5D
-#define LANG_INUKTITUT 0x5d
-#define LANG_AMHARIC 0x5e
-#define VK_SLEEP 0x5F
-#define LANG_TAMAZIGHT 0x5f
-#define VK_NUMPAD0 0x60
-#define LANG_KASHMIRI 0x60
-#define VK_NUMPAD1 0x61
-#define LANG_NEPALI 0x61
-#define VK_NUMPAD2 0x62
-#define LANG_FRISIAN 0x62
-#define VK_NUMPAD3 0x63
-#define LANG_PASHTO 0x63
-#define VK_NUMPAD4 0x64
-#define LANG_FILIPINO 0x64
-#define VS_USER_DEFINED 100
-#define VK_NUMPAD5 0x65
-#define LANG_DIVEHI 0x65
-#define VK_NUMPAD6 0x66
-#define VK_NUMPAD7 0x67
-#define VK_NUMPAD8 0x68
-#define LANG_HAUSA 0x68
-#define VK_NUMPAD9 0x69
-#define VK_MULTIPLY 0x6A
-#define LANG_YORUBA 0x6a
-#define VK_ADD 0x6B
-#define LANG_QUECHUA 0x6b
-#define VK_SEPARATOR 0x6C
-#define LANG_SOTHO 0x6c
-#define VK_SUBTRACT 0x6D
-#define LANG_BASHKIR 0x6d
-#define VK_DECIMAL 0x6E
-#define LANG_LUXEMBOURGISH 0x6e
-#define VK_DIVIDE 0x6F
-#define LANG_GREENLANDIC 0x6f
-#define VK_F1 0x70
-#define LANG_IGBO 0x70
-#define VK_F2 0x71
-#define VK_F3 0x72
-#define VK_F4 0x73
-#define LANG_TIGRIGNA 0x73
-#define VK_F5 0x74
-#define VK_F6 0x75
-#define VK_F7 0x76
-#define VK_F8 0x77
-#define VK_F9 0x78
-#define WHEEL_DELTA 120
-#define LANG_YI 0x78
-#define VK_F10 0x79
-#define VK_F11 0x7A
-#define LANG_MAPUDUNGUN 0x7a
-#define VK_F12 0x7B
-#define WM_CONTEXTMENU 0x007B
-#define VK_F13 0x7C
-#define WM_STYLECHANGING 0x007C
-#define LANG_MOHAWK 0x7c
-#define VK_F14 0x7D
-#define WM_STYLECHANGED 0x007D
-#define VK_F15 0x7E
-#define WM_DISPLAYCHANGE 0x007E
-#define LANG_BRETON 0x7e
-#define VK_F16 0x7F
-#define WM_GETICON 0x007F
-#define LANG_INVARIANT 0x7f
-#define VK_F17 0x80
-#define WM_SETICON 0x0080
-#define WVR_ALIGNRIGHT 0x0080
-#define CS_PARENTDC 0x0080
-#define CF_OWNERDISPLAY 0x0080
-#define HDS_FULLDRAG 0x0080
-#define BTNS_WHOLEDROPDOWN 0x0080
-#define TTS_CLOSE 0x80
-#define TBS_NOTHUMB 0x0080
-#define UDS_NOTHOUSANDS 0x0080
-#define LVS_NOLABELWRAP 0x0080
-#define TVS_NOTOOLTIPS 0x0080
-#define TVS_EX_PARTIALCHECKBOXES 0x0080
-#define TCS_VERTICAL 0x0080
-#define MCS_SHORTDAYSOFWEEK 0x0080
-#define LANG_UIGHUR 0x80
-#define VK_F18 0x81
-#define WM_NCCREATE 0x0081
-#define CF_DSPTEXT 0x0081
-#define LANG_MAORI 0x81
-#define VK_F19 0x82
-#define WM_NCDESTROY 0x0082
-#define CF_DSPBITMAP 0x0082
-#define LANG_OCCITAN 0x82
-#define VK_F20 0x83
-#define WM_NCCALCSIZE 0x0083
-#define CF_DSPMETAFILEPICT 0x0083
-#define LANG_CORSICAN 0x83
-#define VK_F21 0x84
-#define WM_NCHITTEST 0x0084
-#define LANG_ALSATIAN 0x84
-#define VK_F22 0x85
-#define WM_NCPAINT 0x0085
-#define LANG_YAKUT 0x85
-#define VK_F23 0x86
-#define WM_NCACTIVATE 0x0086
-#define LANG_KICHE 0x86
-#define VK_F24 0x87
-#define WM_GETDLGCODE 0x0087
-#define LANG_KINYARWANDA 0x87
-#define WM_SYNCPAINT 0x0088
-#define LANG_WOLOF 0x88
-#define LANG_DARI 0x8c
-#define CF_DSPENHMETAFILE 0x008E
-#define VK_NUMLOCK 0x90
-#define VK_SCROLL 0x91
-#define VK_OEM_NEC_EQUAL 0x92
-#define VK_OEM_FJ_JISHO 0x92
-#define VK_OEM_FJ_MASSHOU 0x93
-#define VK_OEM_FJ_TOUROKU 0x94
-#define VK_OEM_FJ_LOYA 0x95
-#define VK_OEM_FJ_ROYA 0x96
-#define VK_LSHIFT 0xA0
-#define WM_NCMOUSEMOVE 0x00A0
-#define VK_RSHIFT 0xA1
-#define WM_NCLBUTTONDOWN 0x00A1
-#define VK_LCONTROL 0xA2
-#define WM_NCLBUTTONUP 0x00A2
-#define VK_RCONTROL 0xA3
-#define WM_NCLBUTTONDBLCLK 0x00A3
-#define VK_LMENU 0xA4
-#define WM_NCRBUTTONDOWN 0x00A4
-#define VK_RMENU 0xA5
-#define WM_NCRBUTTONUP 0x00A5
-#define VK_BROWSER_BACK 0xA6
-#define WM_NCRBUTTONDBLCLK 0x00A6
-#define VK_BROWSER_FORWARD 0xA7
-#define WM_NCMBUTTONDOWN 0x00A7
-#define VK_BROWSER_REFRESH 0xA8
-#define WM_NCMBUTTONUP 0x00A8
-#define VK_BROWSER_STOP 0xA9
-#define WM_NCMBUTTONDBLCLK 0x00A9
-#define VK_BROWSER_SEARCH 0xAA
-#define VK_BROWSER_FAVORITES 0xAB
-#define WM_NCXBUTTONDOWN 0x00AB
-#define VK_BROWSER_HOME 0xAC
-#define WM_NCXBUTTONUP 0x00AC
-#define VK_VOLUME_MUTE 0xAD
-#define WM_NCXBUTTONDBLCLK 0x00AD
-#define VK_VOLUME_DOWN 0xAE
-#define VK_VOLUME_UP 0xAF
-#define VK_MEDIA_NEXT_TRACK 0xB0
-#define EM_GETSEL 0x00B0
-#define VK_MEDIA_PREV_TRACK 0xB1
-#define EM_SETSEL 0x00B1
-#define VK_MEDIA_STOP 0xB2
-#define EM_GETRECT 0x00B2
-#define VK_MEDIA_PLAY_PAUSE 0xB3
-#define EM_SETRECT 0x00B3
-#define VK_LAUNCH_MAIL 0xB4
-#define EM_SETRECTNP 0x00B4
-#define VK_LAUNCH_MEDIA_SELECT 0xB5
-#define EM_SCROLL 0x00B5
-#define VK_LAUNCH_APP1 0xB6
-#define EM_LINESCROLL 0x00B6
-#define VK_LAUNCH_APP2 0xB7
-#define EM_SCROLLCARET 0x00B7
-#define EM_GETMODIFY 0x00B8
-#define EM_SETMODIFY 0x00B9
-#define VK_OEM_1 0xBA
-#define EM_GETLINECOUNT 0x00BA
-#define VK_OEM_PLUS 0xBB
-#define EM_LINEINDEX 0x00BB
-#define VK_OEM_COMMA 0xBC
-#define EM_SETHANDLE 0x00BC
-#define VK_OEM_MINUS 0xBD
-#define EM_GETHANDLE 0x00BD
-#define VK_OEM_PERIOD 0xBE
-#define EM_GETTHUMB 0x00BE
-#define VK_OEM_2 0xBF
-#define VK_OEM_3 0xC0
-#define EM_LINELENGTH 0x00C1
-#define EM_REPLACESEL 0x00C2
-#define EM_GETLINE 0x00C4
-#define EM_LIMITTEXT 0x00C5
-#define EM_CANUNDO 0x00C6
-#define EM_UNDO 0x00C7
-#define EM_FMTLINES 0x00C8
-#define DLG_MAIN 200
-#define EM_LINEFROMCHAR 0x00C9
-#define EM_SETTABSTOPS 0x00CB
-#define EM_SETPASSWORDCHAR 0x00CC
-#define EM_EMPTYUNDOBUFFER 0x00CD
-#define EM_GETFIRSTVISIBLELINE 0x00CE
-#define EM_SETREADONLY 0x00CF
-#define EM_SETWORDBREAKPROC 0x00D0
-#define EM_GETWORDBREAKPROC 0x00D1
-#define EM_GETPASSWORDCHAR 0x00D2
-#define EM_SETMARGINS 0x00D3
-#define EM_GETMARGINS 0x00D4
-#define EM_GETLIMITTEXT 0x00D5
-#define EM_POSFROMCHAR 0x00D6
-#define EM_CHARFROMPOS 0x00D7
-#define EM_SETIMESTATUS 0x00D8
-#define EM_GETIMESTATUS 0x00D9
-#define VK_OEM_4 0xDB
-#define VK_OEM_5 0xDC
-#define VK_OEM_6 0xDD
-#define VK_OEM_7 0xDE
-#define VK_OEM_8 0xDF
-#define VK_OEM_AX 0xE1
-#define VK_OEM_102 0xE2
-#define VK_ICO_HELP 0xE3
-#define VK_ICO_00 0xE4
-#define VK_PROCESSKEY 0xE5
-#define VK_ICO_CLEAR 0xE6
-#define VK_PACKET 0xE7
-#define VK_OEM_RESET 0xE9
-#define VK_OEM_JUMP 0xEA
-#define VK_OEM_PA1 0xEB
-#define VK_OEM_PA2 0xEC
-#define VK_OEM_PA3 0xED
-#define VK_OEM_WSCTRL 0xEE
-#define VK_OEM_CUSEL 0xEF
-#define VK_OEM_ATTN 0xF0
-#define BM_GETCHECK 0x00F0
-#define VK_OEM_FINISH 0xF1
-#define BM_SETCHECK 0x00F1
-#define VK_OEM_COPY 0xF2
-#define BM_GETSTATE 0x00F2
-#define VK_OEM_AUTO 0xF3
-#define BM_SETSTATE 0x00F3
-#define VK_OEM_ENLW 0xF4
-#define BM_SETSTYLE 0x00F4
-#define VK_OEM_BACKTAB 0xF5
-#define BM_CLICK 0x00F5
-#define VK_ATTN 0xF6
-#define BM_GETIMAGE 0x00F6
-#define VK_CRSEL 0xF7
-#define BM_SETIMAGE 0x00F7
-#define VK_EXSEL 0xF8
-#define BM_SETDONTCLICK 0x00F8
-#define VK_EREOF 0xF9
-#define VK_PLAY 0xFA
-#define VK_ZOOM 0xFB
-#define VK_NONAME 0xFC
-#define VK_PA1 0xFD
-#define VK_OEM_CLEAR 0xFE
-#define WM_INPUT_DEVICE_CHANGE 0x00FE
-#define SUBVERSION_MASK 0x000000FF
-#define WM_INPUT 0x00FF
-#define WM_KEYFIRST 0x0100
-#define WM_KEYDOWN 0x0100
-#define WVR_HREDRAW 0x0100
-#define HDS_FILTERBAR 0x0100
-#define TBSTYLE_TOOLTIPS 0x0100
-#define RBS_TOOLTIPS 0x00000100
-#define TTS_USEVISUALSTYLE 0x100
-#define SBARS_SIZEGRIP 0x0100
-#define TBS_TOOLTIPS 0x0100
-#define UDS_HOTTRACK 0x0100
-#define LVS_AUTOARRANGE 0x0100
-#define TVS_CHECKBOXES 0x0100
-#define TVS_EX_EXCLUSIONCHECKBOXES 0x0100
-#define TCS_BUTTONS 0x0100
-#define MCS_NOSELCHANGEONNAV 0x0100
-#define WM_KEYUP 0x0101
-#define WM_CHAR 0x0102
-#define WM_DEADCHAR 0x0103
-#define WM_SYSKEYDOWN 0x0104
-#define WM_SYSKEYUP 0x0105
-#define WM_SYSCHAR 0x0106
-#define WM_SYSDEADCHAR 0x0107
-#define WM_UNICHAR 0x0109
-#define WM_IME_STARTCOMPOSITION 0x010D
-#define WM_IME_ENDCOMPOSITION 0x010E
-#define WM_IME_COMPOSITION 0x010F
-#define WM_IME_KEYLAST 0x010F
-#define WM_INITDIALOG 0x0110
-#define WM_COMMAND 0x0111
-#define WM_SYSCOMMAND 0x0112
-#define WM_TIMER 0x0113
-#define WM_HSCROLL 0x0114
-#define WM_VSCROLL 0x0115
-#define WM_INITMENU 0x0116
-#define WM_INITMENUPOPUP 0x0117
-#define WM_MENUSELECT 0x011F
-#define WM_MENUCHAR 0x0120
-#define WM_ENTERIDLE 0x0121
-#define WM_MENURBUTTONUP 0x0122
-#define WM_MENUDRAG 0x0123
-#define WM_MENUGETOBJECT 0x0124
-#define WM_UNINITMENUPOPUP 0x0125
-#define WM_MENUCOMMAND 0x0126
-#define WM_CHANGEUISTATE 0x0127
-#define WM_UPDATEUISTATE 0x0128
-#define WM_QUERYUISTATE 0x0129
-#define DLG_ICON 300
-#define WM_CTLCOLORMSGBOX 0x0132
-#define WM_CTLCOLOREDIT 0x0133
-#define WM_CTLCOLORLISTBOX 0x0134
-#define WM_CTLCOLORBTN 0x0135
-#define WM_CTLCOLORDLG 0x0136
-#define WM_CTLCOLORSCROLLBAR 0x0137
-#define WM_CTLCOLORSTATIC 0x0138
-#define MN_GETHMENU 0x01E1
-#define _WIN32_IE_IE20 0x0200
-#define WM_MOUSEFIRST 0x0200
-#define WM_MOUSEMOVE 0x0200
-#define WVR_VREDRAW 0x0200
-#define CS_NOCLOSE 0x0200
-#define CF_PRIVATEFIRST 0x0200
-#define HDS_FLAT 0x0200
-#define TBSTYLE_WRAPABLE 0x0200
-#define RBS_VARHEIGHT 0x00000200
-#define TBS_REVERSED 0x0200
-#define LVS_EDITLABELS 0x0200
-#define TVS_TRACKSELECT 0x0200
-#define TVS_EX_DIMMEDCHECKBOXES 0x0200
-#define TCS_MULTILINE 0x0200
-#define WM_LBUTTONDOWN 0x0201
-#define WM_LBUTTONUP 0x0202
-#define WM_LBUTTONDBLCLK 0x0203
-#define WM_RBUTTONDOWN 0x0204
-#define WM_RBUTTONUP 0x0205
-#define WM_RBUTTONDBLCLK 0x0206
-#define WM_MBUTTONDOWN 0x0207
-#define WM_MBUTTONUP 0x0208
-#define WM_MBUTTONDBLCLK 0x0209
-#define WM_MOUSEWHEEL 0x020A
-#define WM_XBUTTONDOWN 0x020B
-#define WM_XBUTTONUP 0x020C
-#define WM_XBUTTONDBLCLK 0x020D
-#define WM_MOUSEHWHEEL 0x020E
-#define WM_PARENTNOTIFY 0x0210
-#define WM_ENTERMENULOOP 0x0211
-#define WM_EXITMENULOOP 0x0212
-#define WM_NEXTMENU 0x0213
-#define WM_SIZING 0x0214
-#define WM_CAPTURECHANGED 0x0215
-#define WM_MOVING 0x0216
-#define WM_POWERBROADCAST 0x0218
-#define WM_DEVICECHANGE 0x0219
-#define WM_MDICREATE 0x0220
-#define WM_MDIDESTROY 0x0221
-#define WM_MDIACTIVATE 0x0222
-#define WM_MDIRESTORE 0x0223
-#define WM_MDINEXT 0x0224
-#define WM_MDIMAXIMIZE 0x0225
-#define WM_MDITILE 0x0226
-#define WM_MDICASCADE 0x0227
-#define WM_MDIICONARRANGE 0x0228
-#define WM_MDIGETACTIVE 0x0229
-#define WM_MDISETMENU 0x0230
-#define WM_ENTERSIZEMOVE 0x0231
-#define WM_EXITSIZEMOVE 0x0232
-#define WM_DROPFILES 0x0233
-#define WM_MDIREFRESHMENU 0x0234
-#define WM_IME_SETCONTEXT 0x0281
-#define WM_IME_NOTIFY 0x0282
-#define WM_IME_CONTROL 0x0283
-#define WM_IME_COMPOSITIONFULL 0x0284
-#define WM_IME_SELECT 0x0285
-#define WM_IME_CHAR 0x0286
-#define WM_IME_REQUEST 0x0288
-#define WM_IME_KEYDOWN 0x0290
-#define WM_IME_KEYUP 0x0291
-#define WM_NCMOUSEHOVER 0x02A0
-#define WM_MOUSEHOVER 0x02A1
-#define WM_NCMOUSELEAVE 0x02A2
-#define WM_MOUSELEAVE 0x02A3
-#define WM_WTSSESSION_CHANGE 0x02B1
-#define WM_TABLET_FIRST 0x02c0
-#define WM_TABLET_LAST 0x02df
-#define CF_PRIVATELAST 0x02FF
-#define _WIN32_IE_IE30 0x0300
-#define WM_CUT 0x0300
-#define CF_GDIOBJFIRST 0x0300
-#define WM_COPY 0x0301
-#define _WIN32_IE_IE302 0x0302
-#define WM_PASTE 0x0302
-#define WM_CLEAR 0x0303
-#define WM_UNDO 0x0304
-#define WM_RENDERFORMAT 0x0305
-#define WM_RENDERALLFORMATS 0x0306
-#define WM_DESTROYCLIPBOARD 0x0307
-#define WM_DRAWCLIPBOARD 0x0308
-#define WM_PAINTCLIPBOARD 0x0309
-#define WM_VSCROLLCLIPBOARD 0x030A
-#define WM_SIZECLIPBOARD 0x030B
-#define WM_ASKCBFORMATNAME 0x030C
-#define WM_CHANGECBCHAIN 0x030D
-#define WM_HSCROLLCLIPBOARD 0x030E
-#define WM_QUERYNEWPALETTE 0x030F
-#define WM_PALETTEISCHANGING 0x0310
-#define WM_PALETTECHANGED 0x0311
-#define WM_HOTKEY 0x0312
-#define WM_PRINT 0x0317
-#define WM_PRINTCLIENT 0x0318
-#define WM_APPCOMMAND 0x0319
-#define WM_THEMECHANGED 0x031A
-#define WM_CLIPBOARDUPDATE 0x031D
-#define WM_DWMCOMPOSITIONCHANGED 0x031E
-#define WM_DWMNCRENDERINGCHANGED 0x031F
-#define WM_DWMCOLORIZATIONCOLORCHANGED 0x0320
-#define WM_DWMWINDOWMAXIMIZEDCHANGE 0x0321
-#define WM_GETTITLEBARINFOEX 0x033F
-#define WM_HANDHELDFIRST 0x0358
-#define WM_HANDHELDLAST 0x035F
-#define WM_AFXFIRST 0x0360
-#define WM_AFXLAST 0x037F
-#define WM_PENWINFIRST 0x0380
-#define WM_PENWINLAST 0x038F
-#define WM_DDE_FIRST 0x03E0
-#define IDC_STATUS 1000
-#define IDC_LIST1 1000
-#define IDC_LEFT 1001
-#define IDC_RIGHT 1002
-#define IDC_TOP 1003
-#define IDC_MIDDLE 1004
-#define IDC_BOTTOM 1005
-#define IDC_EDIT 1010
-#define IDC_CLEAR 1011
-#define CF_GDIOBJLAST 0x03FF
-#define _WIN32_WINNT_NT4 0x0400
-#define _WIN32_IE_IE40 0x0400
-#define WM_USER 0x0400
-#define WVR_VALIDRECTS 0x0400
-#define HDS_CHECKBOXES 0x0400
-#define TBSTYLE_ALTDRAG 0x0400
-#define RBS_BANDBORDERS 0x00000400
-#define TBS_DOWNISLEFT 0x0400
-#define LVS_OWNERDRAWFIXED 0x0400
-#define TVS_SINGLEEXPAND 0x0400
-#define TVS_EX_DRAWIMAGEASYNC 0x0400
-#define TCS_FIXEDWIDTH 0x0400
-#define ctlFirst 0x0400
-#define psh1 0x0400
-#define _WIN32_IE_IE401 0x0401
-#define psh2 0x0401
-#define psh3 0x0402
-#define psh4 0x0403
-#define psh5 0x0404
-#define psh6 0x0405
-#define psh7 0x0406
-#define psh8 0x0407
-#define psh9 0x0408
-#define psh10 0x0409
-#define psh11 0x040a
-#define psh12 0x040b
-#define psh13 0x040c
-#define psh14 0x040d
-#define psh15 0x040e
-#define psh16 0x040f
-#define _WIN32_WINDOWS 0x0410
-#define chx1 0x0410
-#define chx2 0x0411
-#define chx3 0x0412
-#define chx4 0x0413
-#define chx5 0x0414
-#define chx6 0x0415
-#define chx7 0x0416
-#define chx8 0x0417
-#define chx9 0x0418
-#define chx10 0x0419
-#define chx11 0x041a
-#define chx12 0x041b
-#define chx13 0x041c
-#define chx14 0x041d
-#define chx15 0x041e
-#define chx16 0x041f
-#define rad1 0x0420
-#define rad2 0x0421
-#define rad3 0x0422
-#define rad4 0x0423
-#define rad5 0x0424
-#define rad6 0x0425
-#define rad7 0x0426
-#define rad8 0x0427
-#define rad9 0x0428
-#define rad10 0x0429
-#define rad11 0x042a
-#define rad12 0x042b
-#define rad13 0x042c
-#define rad14 0x042d
-#define rad15 0x042e
-#define rad16 0x042f
-#define grp1 0x0430
-#define grp2 0x0431
-#define grp3 0x0432
-#define grp4 0x0433
-#define frm1 0x0434
-#define frm2 0x0435
-#define frm3 0x0436
-#define frm4 0x0437
-#define rct1 0x0438
-#define rct2 0x0439
-#define rct3 0x043a
-#define rct4 0x043b
-#define ico1 0x043c
-#define ico2 0x043d
-#define ico3 0x043e
-#define ico4 0x043f
-#define stc1 0x0440
-#define stc2 0x0441
-#define stc3 0x0442
-#define stc4 0x0443
-#define stc5 0x0444
-#define stc6 0x0445
-#define stc7 0x0446
-#define stc8 0x0447
-#define stc9 0x0448
-#define stc10 0x0449
-#define stc11 0x044a
-#define stc12 0x044b
-#define stc13 0x044c
-#define stc14 0x044d
-#define stc15 0x044e
-#define stc16 0x044f
-#define stc17 0x0450
-#define stc18 0x0451
-#define stc19 0x0452
-#define stc20 0x0453
-#define stc21 0x0454
-#define stc22 0x0455
-#define stc23 0x0456
-#define stc24 0x0457
-#define stc25 0x0458
-#define stc26 0x0459
-#define stc27 0x045a
-#define stc28 0x045b
-#define stc29 0x045c
-#define stc30 0x045d
-#define stc31 0x045e
-#define stc32 0x045f
-#define lst1 0x0460
-#define lst2 0x0461
-#define lst3 0x0462
-#define lst4 0x0463
-#define lst5 0x0464
-#define lst6 0x0465
-#define lst7 0x0466
-#define lst8 0x0467
-#define lst9 0x0468
-#define lst10 0x0469
-#define lst11 0x046a
-#define lst12 0x046b
-#define lst13 0x046c
-#define lst14 0x046d
-#define lst15 0x046e
-#define lst16 0x046f
-#define cmb1 0x0470
-#define cmb2 0x0471
-#define cmb3 0x0472
-#define cmb4 0x0473
-#define cmb5 0x0474
-#define cmb6 0x0475
-#define cmb7 0x0476
-#define cmb8 0x0477
-#define cmb9 0x0478
-#define cmb10 0x0479
-#define cmb11 0x047a
-#define cmb12 0x047b
-#define cmb13 0x047c
-#define cmb14 0x047d
-#define cmb15 0x047e
-#define cmb16 0x047f
-#define edt1 0x0480
-#define edt2 0x0481
-#define edt3 0x0482
-#define edt4 0x0483
-#define edt5 0x0484
-#define edt6 0x0485
-#define edt7 0x0486
-#define edt8 0x0487
-#define edt9 0x0488
-#define edt10 0x0489
-#define edt11 0x048a
-#define edt12 0x048b
-#define edt13 0x048c
-#define edt14 0x048d
-#define edt15 0x048e
-#define edt16 0x048f
-#define scr1 0x0490
-#define scr2 0x0491
-#define scr3 0x0492
-#define scr4 0x0493
-#define scr5 0x0494
-#define scr6 0x0495
-#define scr7 0x0496
-#define scr8 0x0497
-#define ctl1 0x04A0
-#define ctlLast 0x04ff
-#define _WIN32_WINNT_WIN2K 0x0500
-#define _WIN32_IE_IE50 0x0500
-#define _WIN32_WINNT_WINXP 0x0501
-#define _WIN32_IE_IE501 0x0501
-#define _WIN32_WINNT_WS03 0x0502
-#define _WIN32_IE_IE55 0x0550
-#define _WIN32_WINNT_LONGHORN 0x0600
-#define _WIN32_IE_IE60 0x0600
-#define FILEOPENORD 1536
-#define _WIN32_IE_IE60SP1 0x0601
-#define MULTIFILEOPENORD 1537
-#define _WIN32_IE_WS03 0x0602
-#define PRINTDLGORD 1538
-#define _WIN32_IE_IE60SP2 0x0603
-#define PRNSETUPDLGORD 1539
-#define FINDDLGORD 1540
-#define REPLACEDLGORD 1541
-#define FONTDLGORD 1542
-#define FORMATDLGORD31 1543
-#define FORMATDLGORD30 1544
-#define RUNDLGORD 1545
-#define PAGESETUPDLGORD 1546
-#define NEWFILEOPENORD 1547
-#define PRINTDLGEXORD 1549
-#define PAGESETUPDLGORDMOTIF 1550
-#define COLORMGMTDLGORD 1551
-#define NEWFILEOPENV2ORD 1552
-#define NEWFILEOPENV3ORD 1553
-#define _WIN32_IE_IE70 0x0700
-#define CS_SAVEBITS 0x0800
-#define HDS_NOSIZING 0x0800
-#define TBSTYLE_FLAT 0x0800
-#define RBS_FIXEDORDER 0x00000800
-#define SBARS_TOOLTIPS 0x0800
-#define SBT_TOOLTIPS 0x0800
-#define TBS_NOTIFYBEFOREMOVE 0x0800
-#define LVS_ALIGNLEFT 0x0800
-#define TVS_INFOTIP 0x0800
-#define TCS_RAGGEDRIGHT 0x0800
-#define LVS_ALIGNMASK 0x0c00
-#define CS_BYTEALIGNCLIENT 0x1000
-#define HDS_OVERFLOW 0x1000
-#define TBSTYLE_LIST 0x1000
-#define RBS_REGISTERDROP 0x00001000
-#define TBS_TRANSPARENTBKGND 0x1000
-#define LVS_OWNERDATA 0x1000
-#define TVS_FULLROWSELECT 0x1000
-#define TCS_FOCUSONBUTTONDOWN 0x1000
-#define CS_BYTEALIGNWINDOW 0x2000
-#define TBSTYLE_CUSTOMERASE 0x2000
-#define RBS_AUTOSIZE 0x00002000
-#define LVS_NOSCROLL 0x2000
-#define TVS_NOSCROLL 0x2000
-#define TCS_OWNERDRAWFIXED 0x2000
-#define CS_GLOBALCLASS 0x4000
-#define TBSTYLE_REGISTERDROP 0x4000
-#define RBS_VERTICALGRIPPER 0x00004000
-#define LVS_NOCOLUMNHEADER 0x4000
-#define TVS_NONEVENHEIGHT 0x4000
-#define TCS_TOOLTIPS 0x4000
-#define IDH_NO_HELP 28440
-#define IDH_MISSING_CONTEXT 28441
-#define IDH_GENERIC_HELP_BUTTON 28442
-#define IDH_OK 28443
-#define IDH_CANCEL 28444
-#define IDH_HELP 28445
-#define LANG_BOSNIAN_NEUTRAL 0x781a
-#define LANG_CHINESE_TRADITIONAL 0x7c04
-#define LANG_SERBIAN_NEUTRAL 0x7c1a
-#define IDTIMEOUT 32000
-#define OCR_NORMAL 32512
-#define OIC_SAMPLE 32512
-#define OCR_IBEAM 32513
-#define OIC_HAND 32513
-#define OCR_WAIT 32514
-#define OIC_QUES 32514
-#define OCR_CROSS 32515
-#define OIC_BANG 32515
-#define OCR_UP 32516
-#define OIC_NOTE 32516
-#define OIC_WINLOGO 32517
-#define OIC_SHIELD 32518
-#define OCR_SIZE 32640
-#define OCR_ICON 32641
-#define OCR_SIZENWSE 32642
-#define OCR_SIZENESW 32643
-#define OCR_SIZEWE 32644
-#define OCR_SIZENS 32645
-#define OCR_SIZEALL 32646
-#define OCR_ICOCUR 32647
-#define OCR_NO 32648
-#define OCR_HAND 32649
-#define OCR_APPSTARTING 32650
-#define OBM_LFARROWI 32734
-#define OBM_RGARROWI 32735
-#define OBM_DNARROWI 32736
-#define OBM_UPARROWI 32737
-#define OBM_COMBO 32738
-#define OBM_MNARROW 32739
-#define OBM_LFARROWD 32740
-#define OBM_RGARROWD 32741
-#define OBM_DNARROWD 32742
-#define OBM_UPARROWD 32743
-#define OBM_RESTORED 32744
-#define OBM_ZOOMD 32745
-#define OBM_REDUCED 32746
-#define OBM_RESTORE 32747
-#define OBM_ZOOM 32748
-#define OBM_REDUCE 32749
-#define OBM_LFARROW 32750
-#define OBM_RGARROW 32751
-#define OBM_DNARROW 32752
-#define OBM_UPARROW 32753
-#define OBM_CLOSE 32754
-#define OBM_OLD_RESTORE 32755
-#define OBM_OLD_ZOOM 32756
-#define OBM_OLD_REDUCE 32757
-#define OBM_BTNCORNERS 32758
-#define OBM_CHECKBOXES 32759
-#define OBM_CHECK 32760
-#define OBM_BTSIZE 32761
-#define OBM_OLD_LFARROW 32762
-#define OBM_OLD_RGARROW 32763
-#define OBM_OLD_DNARROW 32764
-#define OBM_OLD_UPARROW 32765
-#define OBM_SIZE 32766
-#define OBM_OLD_CLOSE 32767
-#define WM_APP 0x8000
-#define HELP_TCARD 0x8000
-#define TBSTYLE_TRANSPARENT 0x8000
-#define RBS_DBLCLKTOGGLE 0x00008000
-#define LVS_NOSORTHEADER 0x8000
-#define TVS_NOHSCROLL 0x8000
-#define TCS_FOCUSNEVER 0x8000
-#define SC_SIZE 0xF000
-#define SC_SEPARATOR 0xF00F
-#define SC_MOVE 0xF010
-#define SC_MINIMIZE 0xF020
-#define SC_MAXIMIZE 0xF030
-#define SC_NEXTWINDOW 0xF040
-#define SC_PREVWINDOW 0xF050
-#define SC_CLOSE 0xF060
-#define SC_VSCROLL 0xF070
-#define SC_HSCROLL 0xF080
-#define SC_MOUSEMENU 0xF090
-#define SC_KEYMENU 0xF100
-#define SC_ARRANGE 0xF110
-#define SC_RESTORE 0xF120
-#define SC_TASKLIST 0xF130
-#define SC_SCREENSAVE 0xF140
-#define SC_HOTKEY 0xF150
-#define SC_DEFAULT 0xF160
-#define SC_MONITORPOWER 0xF170
-#define SC_CONTEXTHELP 0xF180
-#define LVS_TYPESTYLEMASK 0xfc00
-#define SPVERSION_MASK 0x0000FF00
-#define UNICODE_NOCHAR 0xFFFF
-#define IDC_STATIC -1
-
-// Next default values for new objects
-//
-#ifdef APSTUDIO_INVOKED
-#ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NEXT_RESOURCE_VALUE 101
-#define _APS_NEXT_COMMAND_VALUE 40001
-#define _APS_NEXT_CONTROL_VALUE 1002
-#define _APS_NEXT_SYMED_VALUE 101
-#endif
-#endif
diff --git a/PC/associator.rc b/PC/associator.rc
deleted file mode 100644
index 374a3b8b2d..0000000000
--- a/PC/associator.rc
+++ /dev/null
@@ -1,97 +0,0 @@
-// Microsoft Visual C++ generated resource script.
-//
-#include "associator.h"
-#include "winuser.h"
-/////////////////////////////////////////////////////////////////////////////
-// English (U.K.) resources
-
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENG)
-#ifdef _WIN32
-LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_UK
-#pragma code_page(1252)
-#endif //_WIN32
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Icon
-//
-
-// Icon with lowest ID value placed first to ensure application icon
-// remains consistent on all systems.
-DLG_ICON ICON "launcher.ico"
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Dialog
-//
-
-DLG_MAIN DIALOGEX 20, 40, 236, 183
-// Make the dialog visible after positioning at centre
-STYLE DS_SETFONT | DS_3DLOOK | WS_MINIMIZEBOX | WS_CAPTION | WS_SYSMENU
-EXSTYLE WS_EX_NOPARENTNOTIFY
-CAPTION "Python File Associations Have Ceased To Be!"
-FONT 10, "Arial", 400, 0, 0x0
-BEGIN
- LTEXT "You've uninstalled the Python Launcher, so now there are no applications associated with Python files.",IDC_STATIC,7,7,225,18
- LTEXT "You may wish to associate Python files with one of the Python versions installed on your machine, listed below:",IDC_STATIC,7,27,225,18
- CONTROL "",IDC_LIST1,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,6,49,224,105
- PUSHBUTTON "&Associate with selected Python",IDOK,6,164,117,14,WS_DISABLED
- PUSHBUTTON "Do&n't associate Python files",IDCANCEL,128,164,102,14
-END
-
-
-#ifdef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// TEXTINCLUDE
-//
-
-1 TEXTINCLUDE
-BEGIN
- "resource.h\0"
-END
-
-2 TEXTINCLUDE
-BEGIN
- "\0"
-END
-
-3 TEXTINCLUDE
-BEGIN
- "\r\n"
- "\0"
-END
-
-#endif // APSTUDIO_INVOKED
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// DESIGNINFO
-//
-
-#ifdef APSTUDIO_INVOKED
-GUIDELINES DESIGNINFO
-BEGIN
- DLG_MAIN, DIALOG
- BEGIN
- RIGHTMARGIN, 238
- END
-END
-#endif // APSTUDIO_INVOKED
-
-#endif // English (U.K.) resources
-/////////////////////////////////////////////////////////////////////////////
-
-
-
-#ifndef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 3 resource.
-//
-
-
-/////////////////////////////////////////////////////////////////////////////
-#endif // not APSTUDIO_INVOKED
-