//+--------------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1992 - 1993. // // File: windproc.c // // Contents: // // Classes: // // Functions: // // History: 7-14-94 RichardW Created // //---------------------------------------------------------------------------- #include "testgina.h" #include WCHAR szFilter[] = TEXT("DLLs (*.dll)\0*.dll\0\0"); DoLoadDll(void) { if (LoadGinaDll()) { WCHAR szCaption[MAX_PATH]; fTestGina |= GINA_DLL_KNOWN; SaveParameters(); wcscpy(szCaption, TEXT("TestGina - ")); wcscat(szCaption, szGinaDll); SetWindowText(hMainWindow, szCaption); GinaState = Winsta_PreLoad; UpdateStatusBar(); LoadGinaSpecificParameters(); UpdateSasMenu(); } UpdateMenuBar(); return(0); } int GetFile() { OPENFILENAME ofn; ofn.lStructSize = sizeof(OPENFILENAME); ofn.hwndOwner = hMainWindow; ofn.hInstance = hAppInstance; ofn.lpstrFilter = szFilter; ofn.lpstrCustomFilter = NULL; ofn.nMaxCustFilter = 0; ofn.nFilterIndex = 0; ofn.lpstrFile = szGinaDll; ofn.nMaxFile = MAX_PATH; ofn.lpstrFileTitle = NULL; ofn.nMaxFileTitle = 0; ofn.lpstrInitialDir = NULL; ofn.lpstrTitle = TEXT("Load A DLL"); ofn.Flags = OFN_FILEMUSTEXIST | OFN_NONETWORKBUTTON | OFN_NOTESTFILECREATE | OFN_PATHMUSTEXIST ; ofn.lpstrDefExt = TEXT("DLL"); if (GetOpenFileName(&ofn)) { DoLoadDll(); } return(0); } LRESULT MprDialogProc( HWND hDlg, UINT Message, WPARAM wParam, LPARAM lParam) { if (Message == WM_INITDIALOG) { SetDlgItemText(hDlg, IDD_VIEW_MPR_USERNAME, (GlobalMprInfo.pszUserName ? GlobalMprInfo.pszUserName : TEXT(""))); SetDlgItemText(hDlg, IDD_VIEW_MPR_DOMAIN, (GlobalMprInfo.pszDomain ? GlobalMprInfo.pszDomain : TEXT(""))); SetDlgItemText(hDlg, IDD_VIEW_MPR_PASSWORD, (GlobalMprInfo.pszPassword ? GlobalMprInfo.pszPassword : TEXT(""))); SetDlgItemText(hDlg, IDD_VIEW_MPR_OLD_PASSWORD, (GlobalMprInfo.pszOldPassword ? GlobalMprInfo.pszOldPassword : TEXT(""))); SetDlgItemText(hDlg, IDD_VIEW_MPR_PROVIDER, GlobalProviderName); EnableWindow( GetDlgItem( hDlg, IDD_VIEW_MPR_USERNAME ), FALSE ); EnableWindow( GetDlgItem( hDlg, IDD_VIEW_MPR_DOMAIN ), FALSE ); EnableWindow( GetDlgItem( hDlg, IDD_VIEW_MPR_PASSWORD ), FALSE ); EnableWindow( GetDlgItem( hDlg, IDD_VIEW_MPR_OLD_PASSWORD ), FALSE ); EnableWindow( GetDlgItem( hDlg, IDD_VIEW_MPR_PROVIDER ), FALSE ); return(TRUE); } if (Message == WM_COMMAND) { if (LOWORD(wParam) == IDOK) { EndDialog(hDlg, IDOK); return(TRUE); } } return(FALSE); } void DoViewMPR(void) { DialogBox( hAppInstance, MAKEINTRESOURCE(IDD_VIEW_MPR), hMainWindow, MprDialogProc ); } SasBoxProc( HWND hDlg, UINT Message, WPARAM wParam, LPARAM lParam) { USER_SAS Sas; switch (Message) { case WM_INITDIALOG: SetDlgItemText( hDlg, IDD_SAS_USERNAME, TEXT("User Defined") ); SetDlgItemText( hDlg, IDD_SAS_VALUE, TEXT("128") ); if (UserSases == MAX_USER_SASES) { EnableWindow( GetDlgItem(hDlg, IDD_SAS_KEEPAROUND), FALSE ); } EnableWindow( GetDlgItem( hDlg, IDD_SAS_REMOVE ), FALSE ); return( TRUE ); case WM_COMMAND: if (LOWORD(wParam) == IDCANCEL) { EndDialog( hDlg, IDCANCEL ); } if ((LOWORD(wParam) == IDOK) || (LOWORD(wParam) == IDD_SAS_REMOVE) ) { GetDlgItemText(hDlg, IDD_SAS_USERNAME, Sas.Name, 128); Sas.Value = GetDlgItemInt(hDlg, IDD_SAS_VALUE, NULL, FALSE ); if (Sas.Value <= WLX_SAS_TYPE_MAX_MSFT_VALUE) { MessageBox( hDlg, TEXT("Invalid SAS Value!"), TEXT("Error"), MB_OK | MB_ICONERROR); } else { if (IsDlgButtonChecked(hDlg, IDD_SAS_KEEPAROUND) == BST_CHECKED) { // // Ok, big update time: // UserDefSas[UserSases ++ ] = Sas; SaveGinaSpecificParameters(); UpdateSasMenu(); } EndDialog( hDlg, Sas.Value ); } } return( TRUE ); } return( FALSE ); } ToggleDebugItem(DWORD MenuId, DWORD FlagId) { DWORD fuFlags; if (TEST_FLAG(GinaBreakFlags, FlagId)) { FLAG_OFF(GinaBreakFlags, FlagId); fuFlags = MF_UNCHECKED; } else { FLAG_ON(GinaBreakFlags, FlagId); fuFlags = MF_CHECKED; } fuFlags |= MF_BYCOMMAND; CheckMenuItem(hDebugMenu, MenuId, fuFlags); DrawMenuBar(hMainWindow); return(0); } void ShowDialogUnits(HWND hWnd) { CHAR Buff[256]; LONG l; LONG DlgX; LONG DlgY; l = GetDialogBaseUnits(); DlgX = LOWORD(l); DlgY = HIWORD(l); sprintf(Buff, "BaseUnits are\nX = %d\nY = %d", DlgX, DlgY); MessageBoxA( hWnd, Buff, "Hello!", MB_OK); } VOID DoSendSS( VOID ) { } VOID DoSendLogoff( VOID ) { } LRESULT DoCommand( HWND hWnd, UINT Message, WPARAM wParam, LPARAM lParam) { DWORD res; switch (wParam) { case IDM_DLL_EXIT: PostQuitMessage(0); return(0); case IDM_DLL_OPEN: GetFile(); return(0); case IDM_DLL_LOAD_LAST: DoLoadDll(); return(0); case IDM_WHACK_NEGOTIATE: TestNegotiate(); return(0); case IDM_WHACK_INITIALIZE: TestInitialize(); return(0); case IDM_WHACK_DISPLAY: TestDisplaySASNotice(); return(0); case IDM_WHACK_LOGGEDOUT: UpdateGinaState(UPDATE_SAS_BYPASS); TestLoggedOutSAS(WLX_SAS_TYPE_CTRL_ALT_DEL); return(0); case IDM_WHACK_STARTSHELL: TestActivateUserShell(); return(0); case IDM_WHACK_LOGGEDON: UpdateGinaState(UPDATE_SAS_RECEIVED); TestLoggedOnSAS(WLX_SAS_TYPE_CTRL_ALT_DEL); return(0); case IDM_WHACK_DISPLAYLOCKED: TestDisplayLockedNotice(); return(0); case IDM_WHACK_LOCKED: UpdateGinaState(UPDATE_SAS_RECEIVED); TestWkstaLockedSAS(WLX_SAS_TYPE_CTRL_ALT_DEL); return(0); case IDM_SAS_CAD: PingSAS(WLX_SAS_TYPE_CTRL_ALT_DEL); return(0); case IDM_SAS_TIMEOUT: PingSAS(WLX_SAS_TYPE_TIMEOUT); return(0); case IDM_SAS_SCRNSVR: PingSAS(WLX_SAS_TYPE_SCRNSVR_TIMEOUT); return(0); case IDM_SAS_SC_INSERT: PingSAS(WLX_SAS_TYPE_SC_INSERT ); return(0); case IDM_SAS_SC_REMOVE: PingSAS( WLX_SAS_TYPE_SC_REMOVE ); return(0); case IDM_SAS_USERDEF1: PingSAS(UserDefSas[0].Value); return(0); case IDM_SAS_USERDEF2: PingSAS(UserDefSas[1].Value); return(0); case IDM_SAS_USERDEF3: PingSAS(UserDefSas[2].Value); return(0); case IDM_SAS_USERDEF4: PingSAS(UserDefSas[3].Value); return(0); case IDM_SAS_USERDEF: res = DialogBox( hAppInstance, MAKEINTRESOURCE(IDD_USERDEF_SAS), hMainWindow, SasBoxProc ); if (res != IDCANCEL) { PingSAS( res ); } return( 0 ); case IDM_OPTIONS_SSNOTIFY: DoSendSS(); return( 0 ); case IDM_OPTIONS_LOGOFF: DoSendLogoff(); return( 0 ); case IDM_OPTIONS_VIEW_MPR: DoViewMPR(); return(0); case IDM_HELP_ABOUT: ShellAbout(hWnd, TEXT("TestGina"), TEXT("Graphical Logon Tester"), hIcon); return(0); case IDM_DEBUG_BREAK_NOW: if (AmIBeingDebugged()) { DebugBreak(); } return(0); case IDM_DEBUG_NEGOTIATE: ToggleDebugItem(IDM_DEBUG_NEGOTIATE, BREAK_NEGOTIATE); return(0); case IDM_DEBUG_INITIALIZE: ToggleDebugItem(IDM_DEBUG_INITIALIZE, BREAK_INITIALIZE); return(0); case IDM_DEBUG_DISPLAYSAS: ToggleDebugItem(IDM_DEBUG_DISPLAYSAS, BREAK_DISPLAY); return(0); case IDM_DEBUG_LOGGEDOUT: ToggleDebugItem(IDM_DEBUG_LOGGEDOUT, BREAK_LOGGEDOUT); return(0); case IDM_DEBUG_ACTIVATE: ToggleDebugItem(IDM_DEBUG_ACTIVATE, BREAK_ACTIVATE); return(0); case IDM_DEBUG_LOGGEDON: ToggleDebugItem(IDM_DEBUG_LOGGEDON, BREAK_LOGGEDON); return(0); case IDM_DEBUG_DISPLAYLOCKED: ToggleDebugItem(IDM_DEBUG_DISPLAYLOCKED, BREAK_DISPLAYLOCKED); return(0); case IDM_DEBUG_LOCKED: ToggleDebugItem(IDM_DEBUG_LOCKED, BREAK_WKSTALOCKED); return(0); case IDM_DEBUG_LOGOFF: ToggleDebugItem(IDM_DEBUG_LOGOFF, BREAK_LOGOFF); return(0); case IDM_DEBUG_SHUTDOWN: ToggleDebugItem(IDM_DEBUG_SHUTDOWN, BREAK_SHUTDOWN); return(0); } return 0; } LRESULT CreateMainWindow( HWND hWnd, WPARAM wParam, LPARAM lParam ) { hStatusWindow = CreateStatusWindow( WS_CHILD | WS_BORDER | WS_VISIBLE | SBARS_SIZEGRIP, TEXT("Initializing"), hWnd, 10 ); if (hStatusWindow == NULL) { return( FALSE ); } UpdateStatusBar(); return( TRUE ); } LRESULT CALLBACK WndProc( HWND hWnd, UINT Message, WPARAM wParam, LPARAM lParam) { RECT rect; switch (Message) { case WM_CREATE: return( CreateMainWindow( hWnd, wParam, lParam ) ); case WM_CLOSE: PostQuitMessage(0); return(0); case WM_SIZE: case WM_MOVE: if ((Message == WM_SIZE) && (wParam != SIZE_RESTORED)) { break; } GetWindowRect(hWnd, &rect); PosX = rect.left; PosY = rect.top; SizeX = rect.right - rect.left; SizeY = rect.bottom - rect.top; SaveParameters(); SendMessage( hStatusWindow, Message, wParam, lParam ); UpdateStatusBar(); return(0); case WM_HOTKEY: if (wParam == 0) { if (TEST_FLAG(fTestGina, GINA_USE_CAD)) { PingSAS(WLX_SAS_TYPE_CTRL_ALT_DEL); } } OutputDebugStringA("Got a hotkey!\n"); return(0); case WM_COMMAND: return DoCommand(hWnd, Message, wParam, lParam); } return(DefWindowProc(hWnd, Message, wParam, lParam)); }