#include <windows.h>
#include <aygshell.h>
#pragma comment(lib, "aygshell.lib")

int w03Flag=0;

BOOL DlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	switch(uMsg)
	{
		case WM_INITDIALOG:
				SetTimer(hDlg, 1, 500, NULL);
				break;
		case WM_TIMER:
			HWND hConfirmWnd;
			hConfirmWnd = FindWindowW(L"Dialog",L"ダイヤル確認　");

			if (hConfirmWnd == GetForegroundWindow())
			{
				if (w03Flag)
				{
					keybd_event(VK_LEFT, 0, 0, 0); // down
					keybd_event(VK_LEFT, 0, KEYEVENTF_KEYUP, 0); // up
				}
				keybd_event(VK_RETURN, 0, 0, 0); // down
				keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0); // up
			}
			break;
		case WM_APP:
			DestroyWindow(hDlg);
			break;
		case WM_DESTROY:
			PostQuitMessage(0);
	}
	return FALSE;
}

int WINAPI WinMain(	HINSTANCE hInstance,
					HINSTANCE hPrevInstance,
					LPTSTR    lpCmdLine,
					int       nCmdShow)
{
	HWND hDlg=FindWindowW(L"Dialog",L"NoConfirmDial Window");

	// 二重起動したら終了
	if(hDlg)
	{
		MessageBox(NULL, L"NoConfirmDialを常駐解除しました。", L"NoConfirmDial", MB_OK);
		PostMessage(hDlg,WM_APP,0,0);
	}
	else
	{
		typedef struct{
			DLGTEMPLATE dt;
			short other[5];
		} NULLDLG;
		const NULLDLG dlg={WS_VISIBLE|WS_POPUP,WS_EX_TOPMOST|WS_EX_NOACTIVATE|WS_EX_TOOLWINDOW};

		// メインダイアログ生成
		hDlg=CreateDialogIndirectParam(hInstance,
				(LPCDLGTEMPLATE)&dlg,
				FindWindow(L"DesktopExplorerWindow", L"Desktop"),
				DlgProc,
				LPARAM(lpCmdLine));
		SetWindowTextW(hDlg,L"NoConfirmDial Window");

		if (wcsstr(lpCmdLine, L"-w03") != NULL)
			w03Flag = 1;

		MSG msg;
		while(GetMessage(&msg,NULL,0,0))
			DispatchMessage(&msg);
	}
	return 0;
}


