dialogs shuffle around when progmgr is the default shell, shutdown dialog refuses to work (boo!)
This commit is contained in:
Binary file not shown.
@@ -40,7 +40,10 @@ int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLi
|
||||
{
|
||||
MSG msg = { 0 };
|
||||
HANDLE hAccel;
|
||||
HMENU hMenu;
|
||||
HMENU hSystemMenu;
|
||||
WNDCLASS wc = { 0 };
|
||||
WCHAR szBuffer[256];
|
||||
WCHAR szClass[16];
|
||||
WCHAR szUsername[UNLEN + 1] = L"";
|
||||
DWORD dwUsernameLen = UNLEN;
|
||||
@@ -49,13 +52,12 @@ int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLi
|
||||
hAppInstance = hInstance;
|
||||
|
||||
// Create Important Strings
|
||||
LoadString(hAppInstance, IDS_APPTITLE, szAppTitle, CharSizeOf(szAppTitle));
|
||||
LoadString(hAppInstance, IDS_PMCLASS, szClass, CharSizeOf(szClass));
|
||||
LoadString(hAppInstance, IDS_WEBSITE, szWebsite, CharSizeOf(szWebsite));
|
||||
LoadString(hAppInstance, IDS_APPTITLE, szAppTitle, ARRAYSIZE(szAppTitle));
|
||||
LoadString(hAppInstance, IDS_PMCLASS, szClass, ARRAYSIZE(szClass));
|
||||
LoadString(hAppInstance, IDS_WEBSITE, szWebsite, ARRAYSIZE(szWebsite));
|
||||
|
||||
// And add Task Manager...
|
||||
// LoadString(hAppInstance, IDS_TASKMGR, szBuffer, CharSizeOf(szBuffer));
|
||||
// InsertMenu(hSystemMenu, 6, MF_BYPOSITION | MF_STRING, IDM_TASKMGR, szBuffer);
|
||||
//
|
||||
|
||||
// Register the Frame Window
|
||||
wc.lpfnWndProc = WndProc;
|
||||
@@ -78,7 +80,7 @@ int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLi
|
||||
return FALSE;
|
||||
|
||||
bIsDefaultShell = IsProgMgrDefaultShell();
|
||||
|
||||
|
||||
GetUserNameEx(NameSamCompatible, szUsername, &dwUsernameLen);
|
||||
// OutputDebugString(szUsername);
|
||||
|
||||
@@ -92,7 +94,24 @@ int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLi
|
||||
160, 80, 640, 480, 0, 0, hAppInstance, NULL))
|
||||
return 2;
|
||||
|
||||
//hSystemMenu = GetSystemMenu(hwndProgman, FALSE);
|
||||
// Load the menus...
|
||||
hMenu = GetMenu(hWndProgMgr);
|
||||
hSystemMenu = GetSystemMenu(hWndProgMgr, FALSE);
|
||||
|
||||
if (bIsDefaultShell) {
|
||||
// Do all the fun stuff since we're the default shell
|
||||
DeleteMenu(hSystemMenu, SC_CLOSE, MF_BYCOMMAND);
|
||||
|
||||
LoadString(hAppInstance, IDS_SHUTDOWN, szBuffer, ARRAYSIZE(szBuffer));
|
||||
InsertMenu(hSystemMenu, 6, MF_BYPOSITION | MF_STRING, IDM_SHUTDOWN, szBuffer);
|
||||
ModifyMenu(hMenu, IDM_FILE_EXIT, MF_BYCOMMAND | MF_STRING, IDM_SHUTDOWN, szBuffer);
|
||||
|
||||
LoadString(hAppInstance, IDS_RUN, szBuffer, ARRAYSIZE(szBuffer));
|
||||
InsertMenu(hSystemMenu, 6, MF_BYPOSITION | MF_STRING, IDM_FILE_RUN, szBuffer);
|
||||
|
||||
LoadString(hAppInstance, IDS_TASKMGR, szBuffer, ARRAYSIZE(szBuffer));
|
||||
InsertMenu(hSystemMenu, 6, MF_BYPOSITION | MF_STRING, IDM_TASKMGR, szBuffer);
|
||||
}
|
||||
|
||||
while (GetMessage(&msg, NULL, 0, 0) > 0)
|
||||
{
|
||||
|
||||
@@ -20,7 +20,6 @@ processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
|
||||
|
||||
/* Macros and Defines */
|
||||
#define GET_WM_COMMAND_ID(wParam, lParam) LOWORD(wParam)
|
||||
#define CharSizeOf(x) (sizeof(x) / sizeof(*x))
|
||||
// RunFileDlg flags
|
||||
#define RFF_NOBROWSE 0x0001 // Removes the browse button
|
||||
#define RFF_NODEFAULT 0x0002 // No default item selected
|
||||
@@ -46,7 +45,7 @@ extern WCHAR szWebsite[64];
|
||||
/* Function Prototypes */
|
||||
// SHELLINT.C
|
||||
BOOL RunFile(HWND hWndOwner, HICON hIcon, LPWSTR lpszDir, LPWSTR lpszTitle, LPWSTR lpszDesc, DWORD dwFlags);
|
||||
BOOL ShutdownDlg(HWND hWndOwner);
|
||||
BOOL ExitWindowsDialog(HWND hWndOwner);
|
||||
// WNDPROC.C
|
||||
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
|
||||
LRESULT CALLBACK CmdProc(HWND hWnd, WPARAM wParam, LPARAM lParam);
|
||||
Binary file not shown.
@@ -35,25 +35,25 @@ BOOL RunFile(HWND hWndOwner,
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* * * *\
|
||||
ShutdownDlg -
|
||||
ExitWindowsDialog -
|
||||
Produces a Shutdown dialog window.
|
||||
RETURNS -
|
||||
True if successful, false if unsuccessful.
|
||||
\* * * */
|
||||
BOOL ShutdownDlg(HWND hWndOwner)
|
||||
BOOL ExitWindowsDialog(HWND hWndOwner)
|
||||
{
|
||||
HMODULE hLib = LoadLibrary(L"shell32.dll");
|
||||
|
||||
if (hLib) {
|
||||
FARPROC fLib = GetProcAddress(hLib, MAKEINTRESOURCEA(60));
|
||||
FARPROC fLib = GetProcAddress(hLib, (LPCSTR)60);
|
||||
if (fLib(hWndOwner))
|
||||
FreeLibrary(hLib);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -53,12 +53,15 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
|
||||
case WM_SYSCOMMAND:
|
||||
{
|
||||
// if (wParam == IDM_TASKMGR) {
|
||||
//ShellExecute(hwndProgMgr, &TEXT("OPEN\0"), &TEXT("TASKMGR.EXE\0"), NULL, NULL, SW_NORMAL);
|
||||
// break;
|
||||
// }
|
||||
//break;
|
||||
if (wParam == IDM_FILE_SHUTDOWN) {
|
||||
if (wParam == IDM_SHUTDOWN) {
|
||||
CmdProc(hWnd, wParam, lParam);
|
||||
break;
|
||||
}
|
||||
if (wParam == IDM_TASKMGR) {
|
||||
ShellExecute(hWndProgMgr, L"open", L"TASKMGR.EXE", NULL, NULL, SW_NORMAL);
|
||||
break;
|
||||
}
|
||||
if (wParam == IDM_FILE_EXIT) {
|
||||
CmdProc(hWnd, wParam, lParam);
|
||||
break;
|
||||
}
|
||||
@@ -98,12 +101,16 @@ LRESULT CALLBACK CmdProc(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
switch (GET_WM_COMMAND_ID(wParam, lParam)) {
|
||||
|
||||
case IDM_SHUTDOWN:
|
||||
ExitWindowsDialog(hWnd);
|
||||
break;
|
||||
|
||||
case IDM_FILE_RUN:
|
||||
RunFile(hWnd, NULL, NULL, NULL, NULL, RFF_CALCDIRECTORY);
|
||||
break;
|
||||
|
||||
case IDM_FILE_SHUTDOWN:
|
||||
ShutdownDlg(hWnd);
|
||||
case IDM_FILE_EXIT:
|
||||
PostQuitMessage(0);
|
||||
break;
|
||||
|
||||
case IDM_HELP_INDEX:
|
||||
@@ -113,9 +120,8 @@ LRESULT CALLBACK CmdProc(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
||||
case IDM_HELP_ABOUT:
|
||||
{
|
||||
WCHAR szTitle[40];
|
||||
// OutputDebugString(L"ABOUT BALLS!");
|
||||
|
||||
LoadString(hAppInstance, IDS_APPTITLE, szTitle, CharSizeOf(szTitle));
|
||||
LoadString(hAppInstance, IDS_APPTITLE, szTitle, ARRAYSIZE(szTitle));
|
||||
ShellAbout(hWndProgMgr, szTitle, NULL, hProgMgrIcon);
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user