Beispiel #1
0
void OllyPython_RunScript(char *script)
{
    char userscript[MAX_PATH];
    char slashpath[MAX_PATH+1];
    char statement[MAX_PATH+13];
    int validfile;
    char *scriptpath;
    int i;

    userscript[0] = '\0';

    if (script)
    {
        scriptpath = script;
    }
    else
    {
        scriptpath = userscript;

        validfile = Browsefilename("title", scriptpath, ".py", 1);

        if (!validfile)
        {
            return;
        }
    }

    for (i=0; scriptpath[i]; i++)
    {
        if (scriptpath[i] == '\\')
        {
            slashpath[i] = '/';
        }
        else
        {
            slashpath[i] = scriptpath[i];
        }
    }

    slashpath[i] = '\0';

    snprintf(statement, sizeof(statement), "runscript(\"%s\")", slashpath);
    PyRun_SimpleString(statement);
    
    if (PyErr_Occurred())
    {
        PyErr_Print();
    }
}
Beispiel #2
0
ulong CCmdLog::store(void)
{
	wchar path[MAXPATH] = {0}; int irslt = 0;
	::wcsncpy_s(path, _countof(path), text("logger.log"), 10);
	if ( (irslt = Browsefilename(
		text("Command Bar Logger File"), path, nullptr, nullptr, 
		text("*.log"), m_Table.hparent, BRO_SAVE
	)) == 0 ) return 0;

	HGLOBAL hMem = CopyTab(); if (hMem == nullptr) return 0;
	wchar *buffer = reinterpret_cast<wchar*>(GlobalLock(hMem));
	if (buffer == nullptr) return 0;
	const std::locale utf8 = std::locale(
		std::locale(), new std::codecvt_utf8<wchar>()
	);
	std::wfstream file(path, std::fstream::trunc|std::fstream::out);
	file.imbue(utf8); file << buffer << std::endl; file.close();
	GlobalUnlock(hMem); GlobalFree(hMem); 
	return 0;
}
Beispiel #3
0
LRESULT CALLBACK configwnd_msgproc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
{
	HWND wnd;
	RECT rect;
	FILE* file;
	TCHAR buffer[TEXTLEN], errbuf[ERRBUFLEN];
	mask_t* msk;
	mask_t msk_tmp;
	int counter, index, height, count, result;
	switch (msg)
	{
		case WM_ACTIVATE:
			SetFocus(g_hwndMaskList);
			break;

		case WM_COMMAND:
			switch (LOWORD(wparam))
			{
				case ID_COMMENTS:
					if (HIWORD(wparam) == 1)
					{
						CheckDlgButton(hwnd, ID_COMMENTS, IsDlgButtonChecked(hwnd, ID_COMMENTS) ^ BST_CHECKED);
					}
					break;

				case ID_LABELS:
					if (HIWORD(wparam) == 1)
					{
						CheckDlgButton(hwnd, ID_LABELS, IsDlgButtonChecked(hwnd, ID_LABELS) ^ BST_CHECKED);
					}
					break;

				case ID_USEMASKS:
					if (HIWORD(wparam) == 1)
					{
						CheckDlgButton(hwnd, ID_USEMASKS, IsDlgButtonChecked(hwnd, ID_USEMASKS) ^ BST_CHECKED);
					}
					break;

				case ID_DEMANGLE:
					if (HIWORD(wparam) == 1)
					{
						CheckDlgButton(hwnd, ID_DEMANGLE, IsDlgButtonChecked(hwnd, ID_DEMANGLE) ^ BST_CHECKED);
					}
					break;

				case ID_SKIP:
					CheckDlgButton(hwnd, ID_SKIP, BST_CHECKED);
					CheckDlgButton(hwnd, ID_OVERWRITE, BST_UNCHECKED);
					break;

				case ID_OVERWRITE:
					CheckDlgButton(hwnd, ID_SKIP, BST_UNCHECKED);
					CheckDlgButton(hwnd, ID_OVERWRITE, BST_CHECKED);
					break;

				case ID_MODULE:
					CheckDlgButton(hwnd, ID_MODULE, BST_CHECKED);
					CheckDlgButton(hwnd, ID_DEBUGGEE, BST_UNCHECKED);
					break;

				case ID_DEBUGGEE:
					CheckDlgButton(hwnd, ID_DEBUGGEE, BST_CHECKED);
					CheckDlgButton(hwnd, ID_MODULE, BST_UNCHECKED);
					break;

				case ID_ASKTOIMPORT:
					CheckDlgButton(hwnd, ID_ASKTOIMPORT, BST_CHECKED);
					CheckDlgButton(hwnd, ID_IMPORTALWAYS, BST_UNCHECKED);
					CheckDlgButton(hwnd, ID_DONOTHING, BST_UNCHECKED);
					break;

				case ID_IMPORTALWAYS:
					CheckDlgButton(hwnd, ID_ASKTOIMPORT, BST_UNCHECKED);
					CheckDlgButton(hwnd, ID_IMPORTALWAYS, BST_CHECKED);
					CheckDlgButton(hwnd, ID_DONOTHING, BST_UNCHECKED);
					break;

				case ID_DONOTHING:
					CheckDlgButton(hwnd, ID_ASKTOIMPORT, BST_UNCHECKED);
					CheckDlgButton(hwnd, ID_IMPORTALWAYS, BST_UNCHECKED);
					CheckDlgButton(hwnd, ID_DONOTHING, BST_CHECKED);
					break;

				case ID_CANCEL:
					SendMessage(hwnd, WM_CLOSE, 0, 0);
					break;

				case ID_APPLY:
					if (IsDlgButtonChecked(hwnd, ID_COMMENTS) == BST_CHECKED)
					{
						g_Config->comments = TRUE;
					}
					else
					{
						g_Config->comments = FALSE;
					}
					if (IsDlgButtonChecked(hwnd, ID_LABELS) == BST_CHECKED)
					{
						g_Config->labels = TRUE;
					}
					else
					{
						g_Config->labels = FALSE;
					}
					if (IsDlgButtonChecked(hwnd, ID_SKIP) == BST_CHECKED)
					{
						g_Config->collisionchecks = TRUE;
					}
					else
					{
						g_Config->collisionchecks = FALSE;
					}
					if (IsDlgButtonChecked(hwnd, ID_DEBUGGEE) == BST_CHECKED)
					{
						g_Config->applytodebuggee = TRUE;
					}
					else
					{
						g_Config->applytodebuggee = FALSE;
					}
					if (IsDlgButtonChecked(hwnd, ID_ASKTOIMPORT) == BST_CHECKED)
					{
						g_Config->aimport = AUTOIMPORT_ASK;
					}
					if (IsDlgButtonChecked(hwnd, ID_IMPORTALWAYS) == BST_CHECKED)
					{
						g_Config->aimport = AUTOIMPORT_ALWAYS;
					}
					if (IsDlgButtonChecked(hwnd, ID_DONOTHING) == BST_CHECKED)
					{
						g_Config->aimport = AUTOIMPORT_DISABLED;
					}
					if (IsDlgButtonChecked(hwnd, ID_USEMASKS) == BST_CHECKED)
					{
						g_Config->usemasks = TRUE;
					}
					else
					{
						g_Config->usemasks = FALSE;
					}
					if (IsDlgButtonChecked(hwnd, ID_DEMANGLE) == BST_CHECKED)
					{
						g_Config->demangle = TRUE;
					}
					else
					{
						g_Config->demangle = FALSE;
					}
					list_freemasks(g_Config->masks);
					g_Config->masks = list_create();
					count = SendMessage(g_hwndMaskList, LB_GETCOUNT, 0, 0);
					for (counter = 0; counter < count; counter++)
					{
						SendMessage(g_hwndMaskList, LB_GETTEXT, counter, (LPARAM)buffer);
						list_addmask(g_Config->masks, buffer);
					}
					config_create(config_locate(buffer), g_Config);
					SendMessage(hwnd, WM_CLOSE, 0, 0);
					break;

				case ID_DELETE:
					index = SendMessage(g_hwndMaskList, LB_GETCURSEL, 0, 0);
					SendMessage(g_hwndMaskList, LB_DELETESTRING, index, 0);
					if (SendMessage(g_hwndMaskList, LB_SETCURSEL, index, 0) == LB_ERR)
					{
						SendMessage(g_hwndMaskList, LB_SETCURSEL, index - 1, 0);
					}
					break;

				case ID_INCREASE:
					index = SendMessage(g_hwndMaskList, LB_GETCURSEL, 0, 0);
					if (index > 0)
					{
						SendMessage(g_hwndMaskList, LB_GETTEXT, index, (LPARAM)buffer);
						SendMessage(g_hwndMaskList, LB_INSERTSTRING, index - 1, (LPARAM)buffer);
						SendMessage(g_hwndMaskList, LB_DELETESTRING, index + 1, 0);
						SendMessage(g_hwndMaskList, LB_SETCURSEL, index - 1, 0);
					}
					break;

				case ID_MAXINCREASE:
					index = SendMessage(g_hwndMaskList, LB_GETCURSEL, 0, 0);
					if (index > 0)
					{
						SendMessage(g_hwndMaskList, LB_GETTEXT, index, (LPARAM)buffer);
						SendMessage(g_hwndMaskList, LB_INSERTSTRING, 0, (LPARAM)buffer);
						SendMessage(g_hwndMaskList, LB_DELETESTRING, index + 1, 0);
						SendMessage(g_hwndMaskList, LB_SETCURSEL, 0, 0);
					}
					break;

				case ID_DECREASE:
					index = SendMessage(g_hwndMaskList, LB_GETCURSEL, 0, 0);
					if (index != LB_ERR && index < SendMessage(g_hwndMaskList, LB_GETCOUNT, 0, 0) - 1)
					{
						SendMessage(g_hwndMaskList, LB_GETTEXT, index, (LPARAM)buffer);
						SendMessage(g_hwndMaskList, LB_INSERTSTRING, index + 2, (LPARAM)buffer);
						SendMessage(g_hwndMaskList, LB_DELETESTRING, index, 0);
						SendMessage(g_hwndMaskList, LB_SETCURSEL, index + 1, 0);
					}
					break;

				case ID_MAXDECREASE:
					index = SendMessage(g_hwndMaskList, LB_GETCURSEL, 0, 0);
					count = SendMessage(g_hwndMaskList, LB_GETCOUNT, 0, 0);
					if (index != LB_ERR && index < count - 1)
					{
						SendMessage(g_hwndMaskList, LB_GETTEXT, index, (LPARAM)buffer);
						SendMessage(g_hwndMaskList, LB_SETCURSEL, SendMessage(g_hwndMaskList, LB_ADDSTRING, 0, (LPARAM)buffer), 0);
						SendMessage(g_hwndMaskList, LB_DELETESTRING, index, 0);
					}
					break;

				case ID_SAVE:
					count = SendMessage(g_hwndMaskList, LB_GETCOUNT, 0, 0);
					if (count > 0)
					{
						EnableWindow(hwnd, FALSE);
						buffer[0] = '\0';
						if (Browsefilename("Save mask list to:", buffer, ".TXT|*.*", 0x80))
						{
							file = fopen(buffer, "w");
							if (file)
							{
								for (counter = 0; counter < count; counter++)
								{
									SendMessage(g_hwndMaskList, LB_GETTEXT, counter, (LPARAM)buffer);
									strcat(buffer, "\n");
									fputs(buffer, file);
								}
								fclose(file);
							}
							else
							{
								MessageBox(hwnd, "Failed to open the file for writing", 0, MB_ICONERROR);
							}
						}
						EnableWindow(hwnd, TRUE);
						SetFocus(g_hwndMaskList);
					}
					break;

				case ID_LOAD:
					EnableWindow(hwnd, FALSE);
					buffer[0] = '\0';
					if (Browsefilename("Load mask list from:", buffer, ".TXT|*.*", 0))
					{
						file = fopen(buffer, "r");
						if (file)
						{
							while (SendMessage(g_hwndMaskList, LB_DELETESTRING, 0, 0) != LB_ERR)
							{}
							while (fgets(buffer, TEXTLEN, file))
							{
								strtok(buffer, "\n");
								if (!mask_compile(&msk_tmp, buffer))
								{
									SendMessage(g_hwndMaskList, LB_ADDSTRING, 0, (LPARAM)buffer);
									pcre_free(msk_tmp.regex);
									if (msk_tmp.extra)
									{
										pcre_free(msk_tmp.extra);
									}
								}
							}
							SendMessage(g_hwndMaskList, LB_SETCURSEL, 0, 0);
							fclose(file);
						}
						else
						{
							MessageBox(hwnd, "Failed to open the file", 0, MB_ICONERROR);
						}
					}
					EnableWindow(hwnd, TRUE);
					SetFocus(g_hwndMaskList);
					break;

				case ID_ADD:
					EnableWindow(hwnd, FALSE);
					buffer[0] = '\0';
					result = TRUE;
					while (result)
					{
						result = Gettextxy("Add new mask:", buffer, 0, INPUTWND_TYPE, Plugingetvalue(VAL_WINDOWFONT),
							GetSystemMetrics(SM_CXSCREEN) / 2, GetSystemMetrics(SM_CYSCREEN) / 2);
						if (result > 0)
						{
							if (result = mask_compile(&msk_tmp, buffer))
							{
								strcpy(errbuf, buffer);
								strcat(errbuf, "\n\n");
								mask_error(&msk_tmp, strrchr(errbuf, '\n') + 1);
								MessageBox(hwnd, errbuf, "Mask syntax error", MB_ICONERROR);
							}
							else
							{
								SendMessage(g_hwndMaskList, LB_SETCURSEL, SendMessage(g_hwndMaskList, LB_ADDSTRING, 0, (LPARAM)buffer), 0);
								pcre_free(msk_tmp.regex);
								if (msk_tmp.extra)
								{
									pcre_free(msk_tmp.extra);
								}
							}
						}
						else
						{
							break;
						}
					}
					EnableWindow(hwnd, TRUE);
					SetFocus(g_hwndMaskList);
					break;

				case ID_INSERT:
					EnableWindow(hwnd, FALSE);
					buffer[0] = '\0';
					result = TRUE;
					while (result)
					{
						result = Gettextxy("Insert new mask:", buffer, 0, INPUTWND_TYPE, Plugingetvalue(VAL_WINDOWFONT),
							GetSystemMetrics(SM_CXSCREEN) / 2, GetSystemMetrics(SM_CYSCREEN) / 2);
						if (result > 0)
						{
							if (result = mask_compile(&msk_tmp, buffer))
							{
								strcpy(errbuf, buffer);
								strcat(errbuf, "\n\n");
								mask_error(&msk_tmp, strrchr(errbuf, '\n') + 1);
								MessageBox(hwnd, errbuf, "Mask syntax error", MB_ICONERROR);
							}
							else
							{
								SendMessage(g_hwndMaskList, LB_SETCURSEL, SendMessage(g_hwndMaskList, LB_INSERTSTRING,
									SendMessage(g_hwndMaskList, LB_GETCURSEL, 0, 0), (LPARAM)buffer), 0);
								pcre_free(msk_tmp.regex);
								if (msk_tmp.extra)
								{
									pcre_free(msk_tmp.extra);
								}
							}
						}
						else
						{
							break;
						}
					}
					EnableWindow(hwnd, TRUE);
					SetFocus(g_hwndMaskList);
					break;

				case ID_EDIT:
					index = SendMessage(g_hwndMaskList, LB_GETCURSEL, 0, 0);
					if (index != LB_ERR)
					{
						EnableWindow(hwnd, FALSE);
						SendMessage(g_hwndMaskList, LB_GETTEXT, index, (LPARAM)buffer);
						result = TRUE;
						while (result)
						{
							result = Gettextxy("Edit mask:", buffer, 0, INPUTWND_TYPE, Plugingetvalue(VAL_WINDOWFONT),
							GetSystemMetrics(SM_CXSCREEN) / 2, GetSystemMetrics(SM_CYSCREEN) / 2);
							if (result > 0)
							{
								if (result = mask_compile(&msk_tmp, buffer))
								{
									strcpy(errbuf, buffer);
									strcat(errbuf, "\n\n");
									mask_error(&msk_tmp, strrchr(errbuf, '\n') + 1);
									MessageBox(hwnd, errbuf, "Mask syntax error", MB_ICONERROR);
								}
								else
								{
									SendMessage(g_hwndMaskList, LB_DELETESTRING, index, 0);
									SendMessage(g_hwndMaskList, LB_SETCURSEL, SendMessage(g_hwndMaskList, LB_INSERTSTRING, (WPARAM)index, (LPARAM)buffer), 0);
									pcre_free(msk_tmp.regex);
									if (msk_tmp.extra)
									{
										pcre_free(msk_tmp.extra);
									}
								}
							}
							else
							{
								break;
							}
						}
						EnableWindow(hwnd, TRUE);
						SetFocus(g_hwndMaskList);
					}
					break;
			}
			break;

		case WM_CREATE:
			EnableWindow(g_hwndOlly, FALSE);
			GetClientRect(hwnd, &rect);
			height = rect.bottom;
			GetWindowRect(hwnd, &rect);
			height = rect.bottom - rect.top - height + OPTWND_WINDOW_HEIGHT;
			SetWindowPos(hwnd, NULL, 0, 0, rect.right - rect.left, height, SWP_NOMOVE | SWP_NOZORDER);

			wnd = CreateWindowEx(0, "Button", "Import objects:", 0x50020007, 4, 0, 128, 64, hwnd, (HMENU)ID_IMPORT, g_hInstance, NULL);
			SendMessage(wnd, WM_SETFONT, (WPARAM)g_hFont, TRUE);
			wnd = CreateWindowEx(0, "Button", "&Comments", 0x50010003, 12, 16, 112, 20, hwnd, (HMENU)ID_COMMENTS, g_hInstance, NULL);
			SendMessage(wnd, WM_SETFONT, (WPARAM)g_hFont, TRUE);
			wnd = CreateWindowEx(0, "Button", "&Labels", 0x50010003, 12, 36, 112, 20, hwnd, (HMENU)ID_LABELS, g_hInstance, NULL);
			SendMessage(wnd, WM_SETFONT, (WPARAM)g_hFont, TRUE);

			wnd = CreateWindowEx(0, "Button", "Collisions:", 0x50020007, 4, 68, 128, 64, hwnd, (HMENU)ID_COLLISIONS, g_hInstance, NULL);
			SendMessage(wnd, WM_SETFONT, (WPARAM)g_hFont, TRUE);
			wnd = CreateWindowEx(0, "Button", "&Skip if collision", 0x50010009, 12, 86, 116, 16, hwnd, (HMENU)ID_SKIP, g_hInstance, NULL);
			SendMessage(wnd, WM_SETFONT, (WPARAM)g_hFont, TRUE);
			wnd = CreateWindowEx(0, "Button", "&Overwrite", 0x50000009, 12, 106, 116, 16, hwnd, (HMENU)ID_OVERWRITE, g_hInstance, NULL);
			SendMessage(wnd, WM_SETFONT, (WPARAM)g_hFont, TRUE);

			wnd = CreateWindowEx(0, "Button", "Apply names to:", 0x50020007, 4, 136, 128, 64, hwnd, (HMENU)ID_APPLYTO, g_hInstance, NULL);
			SendMessage(wnd, WM_SETFONT, (WPARAM)g_hFont, TRUE);
			wnd = CreateWindowEx(0, "Button", "&Viewed module", 0x50010009, 12, 154, 116, 16, hwnd, (HMENU)ID_MODULE, g_hInstance, NULL);
			SendMessage(wnd, WM_SETFONT, (WPARAM)g_hFont, TRUE);
			wnd = CreateWindowEx(0, "Button", "&Debuggee", 0x50010009, 12, 174, 116, 16, hwnd, (HMENU)ID_DEBUGGEE, g_hInstance, NULL);
			SendMessage(wnd, WM_SETFONT, (WPARAM)g_hFont, TRUE);

			wnd = CreateWindowEx(0, "Button", "If map file found:", 0x50020007, 4, 204, 128, 80, hwnd, (HMENU)ID_AUTOIMPORT, g_hInstance, NULL);
			SendMessage(wnd, WM_SETFONT, (WPARAM)g_hFont, TRUE);
			wnd = CreateWindowEx(0, "Button", "&Ask to import", 0x50000009, 12, 222, 116, 16, hwnd, (HMENU)ID_ASKTOIMPORT, g_hInstance, NULL);
			SendMessage(wnd, WM_SETFONT, (WPARAM)g_hFont, TRUE);
			wnd = CreateWindowEx(0, "Button", "&Import always", 0x50000009, 12, 242, 116, 16, hwnd, (HMENU)ID_IMPORTALWAYS, g_hInstance, NULL);
			SendMessage(wnd, WM_SETFONT, (WPARAM)g_hFont, TRUE);
			wnd = CreateWindowEx(0, "Button", "Do &nothing", 0x50000009, 12, 262, 116, 16, hwnd, (HMENU)ID_DONOTHING, g_hInstance, NULL);
			SendMessage(wnd, WM_SETFONT, (WPARAM)g_hFont, TRUE);

			wnd = CreateWindowEx(0, "Button", "Filter:", 0x50020007, 136, 0, 208, 284, hwnd, (HMENU)ID_FILTER, g_hInstance, NULL);
			SendMessage(wnd, WM_SETFONT, (WPARAM)g_hFont, TRUE);
			g_hwndMaskList = CreateWindowEx(0x200, "ListBox", "", WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL, 144, 16, 192, 230, hwnd, (HMENU)ID_MASKS, g_hInstance, NULL);
			SendMessage(g_hwndMaskList, WM_SETFONT, (WPARAM)g_hFont, TRUE);
			SetWindowLongPtr(g_hwndMaskList, GWLP_USERDATA, SetWindowLongPtr(g_hwndMaskList, GWLP_WNDPROC, (LONG)listbox_msgproc));
			SetFocus(g_hwndMaskList);

			wnd = CreateWindowEx(0, "Button", "Use &masks", 0x50010003, 144, 242, 116, 16, hwnd, (HMENU)ID_USEMASKS, g_hInstance, NULL);
			SendMessage(wnd, WM_SETFONT, (WPARAM)g_hFont, TRUE);
			wnd = CreateWindowEx(0, "Button", "D&emangle names", 0x50010003, 144, 262, 116, 16, hwnd, (HMENU)ID_DEMANGLE, g_hInstance, NULL);
			SendMessage(wnd, WM_SETFONT, (WPARAM)g_hFont, TRUE);

			wnd = CreateWindowEx(0, "Button", "Apply", 0x50012F00, 204, 288, 68, 20, hwnd, (HMENU)ID_APPLY, g_hInstance, NULL);
			SendMessage(wnd, WM_SETFONT, (WPARAM)g_hFont, TRUE);
			wnd = CreateWindowEx(0, "Button", "Cancel", 0x50012F00, 276, 288, 68, 20, hwnd, (HMENU)ID_CANCEL, g_hInstance, NULL);
			SendMessage(wnd, WM_SETFONT, (WPARAM)g_hFont, TRUE);

			if (g_Config->comments)
			{
				CheckDlgButton(hwnd, ID_COMMENTS, BST_CHECKED);
			}
			else
			{
				CheckDlgButton(hwnd, ID_COMMENTS, BST_UNCHECKED);
			}
			if (g_Config->labels)
			{
				CheckDlgButton(hwnd, ID_LABELS, BST_CHECKED);
			}
			else
			{
				CheckDlgButton(hwnd, ID_LABELS, BST_UNCHECKED);
			}
			if (g_Config->collisionchecks)
			{
				CheckDlgButton(hwnd, ID_SKIP, BST_CHECKED);
				CheckDlgButton(hwnd, ID_OVERWRITE, BST_UNCHECKED);
			}
			else
			{
				CheckDlgButton(hwnd, ID_SKIP, BST_UNCHECKED);
				CheckDlgButton(hwnd, ID_OVERWRITE, BST_CHECKED);
			}
			if (g_Config->applytodebuggee)
			{
				CheckDlgButton(hwnd, ID_DEBUGGEE, BST_CHECKED);
				CheckDlgButton(hwnd, ID_MODULE, BST_UNCHECKED);
			}
			else
			{
				CheckDlgButton(hwnd, ID_DEBUGGEE, BST_UNCHECKED);
				CheckDlgButton(hwnd, ID_MODULE, BST_CHECKED);
			}
			if (g_Config->aimport == AUTOIMPORT_ASK)
			{
				CheckDlgButton(hwnd, ID_ASKTOIMPORT, BST_CHECKED);
				CheckDlgButton(hwnd, ID_IMPORTALWAYS, BST_UNCHECKED);
				CheckDlgButton(hwnd, ID_DONOTHING, BST_UNCHECKED);
			}
			else if (g_Config->aimport == AUTOIMPORT_ALWAYS)
			{
				CheckDlgButton(hwnd, ID_IMPORTALWAYS, BST_CHECKED);
				CheckDlgButton(hwnd, ID_ASKTOIMPORT, BST_UNCHECKED);
				CheckDlgButton(hwnd, ID_DONOTHING, BST_UNCHECKED);
			}
			else
			{
				CheckDlgButton(hwnd, ID_DONOTHING, BST_CHECKED);
				CheckDlgButton(hwnd, ID_ASKTOIMPORT, BST_UNCHECKED);
				CheckDlgButton(hwnd, ID_IMPORTALWAYS, BST_UNCHECKED);
			}
			if (g_Config->usemasks)
			{
				CheckDlgButton(hwnd, ID_USEMASKS, BST_CHECKED);
			}
			else
			{
				CheckDlgButton(hwnd, ID_USEMASKS, BST_UNCHECKED);
			}
			if (g_Config->demangle)
			{
				CheckDlgButton(hwnd, ID_DEMANGLE, BST_CHECKED);
			}
			else
			{
				CheckDlgButton(hwnd, ID_DEMANGLE, BST_UNCHECKED);
			}
			msk = (mask_t*)g_Config->masks->first;
			while (msk)
			{
				SendMessage(g_hwndMaskList, LB_ADDSTRING, 0, (LPARAM)msk->buffer);
				msk = msk->next;
			}
			SendMessage(g_hwndMaskList, LB_SETCURSEL, 0, 0);
			break;

		case WM_CLOSE:
			EnableWindow(g_hwndOlly, TRUE);
			SetFocus(g_hwndOlly);
			DestroyWindow(hwnd);
			break;

		case WM_DESTROY:
			PostQuitMessage(0);
			break;

		default:
			return DefWindowProc(hwnd, msg, wparam, lparam);
	}
	return FALSE;
}