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 };
|
MSG msg = { 0 };
|
||||||
HANDLE hAccel;
|
HANDLE hAccel;
|
||||||
|
HMENU hMenu;
|
||||||
|
HMENU hSystemMenu;
|
||||||
WNDCLASS wc = { 0 };
|
WNDCLASS wc = { 0 };
|
||||||
|
WCHAR szBuffer[256];
|
||||||
WCHAR szClass[16];
|
WCHAR szClass[16];
|
||||||
WCHAR szUsername[UNLEN + 1] = L"";
|
WCHAR szUsername[UNLEN + 1] = L"";
|
||||||
DWORD dwUsernameLen = UNLEN;
|
DWORD dwUsernameLen = UNLEN;
|
||||||
@@ -49,13 +52,12 @@ int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLi
|
|||||||
hAppInstance = hInstance;
|
hAppInstance = hInstance;
|
||||||
|
|
||||||
// Create Important Strings
|
// Create Important Strings
|
||||||
LoadString(hAppInstance, IDS_APPTITLE, szAppTitle, CharSizeOf(szAppTitle));
|
LoadString(hAppInstance, IDS_APPTITLE, szAppTitle, ARRAYSIZE(szAppTitle));
|
||||||
LoadString(hAppInstance, IDS_PMCLASS, szClass, CharSizeOf(szClass));
|
LoadString(hAppInstance, IDS_PMCLASS, szClass, ARRAYSIZE(szClass));
|
||||||
LoadString(hAppInstance, IDS_WEBSITE, szWebsite, CharSizeOf(szWebsite));
|
LoadString(hAppInstance, IDS_WEBSITE, szWebsite, ARRAYSIZE(szWebsite));
|
||||||
|
|
||||||
// And add Task Manager...
|
// 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
|
// Register the Frame Window
|
||||||
wc.lpfnWndProc = WndProc;
|
wc.lpfnWndProc = WndProc;
|
||||||
@@ -92,7 +94,24 @@ int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLi
|
|||||||
160, 80, 640, 480, 0, 0, hAppInstance, NULL))
|
160, 80, 640, 480, 0, 0, hAppInstance, NULL))
|
||||||
return 2;
|
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)
|
while (GetMessage(&msg, NULL, 0, 0) > 0)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -20,7 +20,6 @@ processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
|
|||||||
|
|
||||||
/* Macros and Defines */
|
/* Macros and Defines */
|
||||||
#define GET_WM_COMMAND_ID(wParam, lParam) LOWORD(wParam)
|
#define GET_WM_COMMAND_ID(wParam, lParam) LOWORD(wParam)
|
||||||
#define CharSizeOf(x) (sizeof(x) / sizeof(*x))
|
|
||||||
// RunFileDlg flags
|
// RunFileDlg flags
|
||||||
#define RFF_NOBROWSE 0x0001 // Removes the browse button
|
#define RFF_NOBROWSE 0x0001 // Removes the browse button
|
||||||
#define RFF_NODEFAULT 0x0002 // No default item selected
|
#define RFF_NODEFAULT 0x0002 // No default item selected
|
||||||
@@ -46,7 +45,7 @@ extern WCHAR szWebsite[64];
|
|||||||
/* Function Prototypes */
|
/* Function Prototypes */
|
||||||
// SHELLINT.C
|
// SHELLINT.C
|
||||||
BOOL RunFile(HWND hWndOwner, HICON hIcon, LPWSTR lpszDir, LPWSTR lpszTitle, LPWSTR lpszDesc, DWORD dwFlags);
|
BOOL RunFile(HWND hWndOwner, HICON hIcon, LPWSTR lpszDir, LPWSTR lpszTitle, LPWSTR lpszDesc, DWORD dwFlags);
|
||||||
BOOL ShutdownDlg(HWND hWndOwner);
|
BOOL ExitWindowsDialog(HWND hWndOwner);
|
||||||
// WNDPROC.C
|
// WNDPROC.C
|
||||||
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
|
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
|
||||||
LRESULT CALLBACK CmdProc(HWND hWnd, 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 TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* * * *\
|
/* * * *\
|
||||||
ShutdownDlg -
|
ExitWindowsDialog -
|
||||||
Produces a Shutdown dialog window.
|
Produces a Shutdown dialog window.
|
||||||
RETURNS -
|
RETURNS -
|
||||||
True if successful, false if unsuccessful.
|
True if successful, false if unsuccessful.
|
||||||
\* * * */
|
\* * * */
|
||||||
BOOL ShutdownDlg(HWND hWndOwner)
|
BOOL ExitWindowsDialog(HWND hWndOwner)
|
||||||
{
|
{
|
||||||
HMODULE hLib = LoadLibrary(L"shell32.dll");
|
HMODULE hLib = LoadLibrary(L"shell32.dll");
|
||||||
|
|
||||||
if (hLib) {
|
if (hLib) {
|
||||||
FARPROC fLib = GetProcAddress(hLib, MAKEINTRESOURCEA(60));
|
FARPROC fLib = GetProcAddress(hLib, (LPCSTR)60);
|
||||||
if (fLib(hWndOwner))
|
if (fLib(hWndOwner))
|
||||||
FreeLibrary(hLib);
|
FreeLibrary(hLib);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -53,12 +53,15 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
|||||||
|
|
||||||
case WM_SYSCOMMAND:
|
case WM_SYSCOMMAND:
|
||||||
{
|
{
|
||||||
// if (wParam == IDM_TASKMGR) {
|
if (wParam == IDM_SHUTDOWN) {
|
||||||
//ShellExecute(hwndProgMgr, &TEXT("OPEN\0"), &TEXT("TASKMGR.EXE\0"), NULL, NULL, SW_NORMAL);
|
CmdProc(hWnd, wParam, lParam);
|
||||||
// break;
|
break;
|
||||||
// }
|
}
|
||||||
//break;
|
if (wParam == IDM_TASKMGR) {
|
||||||
if (wParam == IDM_FILE_SHUTDOWN) {
|
ShellExecute(hWndProgMgr, L"open", L"TASKMGR.EXE", NULL, NULL, SW_NORMAL);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (wParam == IDM_FILE_EXIT) {
|
||||||
CmdProc(hWnd, wParam, lParam);
|
CmdProc(hWnd, wParam, lParam);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -98,12 +101,16 @@ LRESULT CALLBACK CmdProc(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
|||||||
{
|
{
|
||||||
switch (GET_WM_COMMAND_ID(wParam, lParam)) {
|
switch (GET_WM_COMMAND_ID(wParam, lParam)) {
|
||||||
|
|
||||||
|
case IDM_SHUTDOWN:
|
||||||
|
ExitWindowsDialog(hWnd);
|
||||||
|
break;
|
||||||
|
|
||||||
case IDM_FILE_RUN:
|
case IDM_FILE_RUN:
|
||||||
RunFile(hWnd, NULL, NULL, NULL, NULL, RFF_CALCDIRECTORY);
|
RunFile(hWnd, NULL, NULL, NULL, NULL, RFF_CALCDIRECTORY);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IDM_FILE_SHUTDOWN:
|
case IDM_FILE_EXIT:
|
||||||
ShutdownDlg(hWnd);
|
PostQuitMessage(0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IDM_HELP_INDEX:
|
case IDM_HELP_INDEX:
|
||||||
@@ -113,9 +120,8 @@ LRESULT CALLBACK CmdProc(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
|||||||
case IDM_HELP_ABOUT:
|
case IDM_HELP_ABOUT:
|
||||||
{
|
{
|
||||||
WCHAR szTitle[40];
|
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);
|
ShellAbout(hWndProgMgr, szTitle, NULL, hProgMgrIcon);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user