scripter.c
资源名称:shell.rar [点击查看]
上传用户:xhy777
上传日期:2007-02-14
资源大小:24088k
文件大小:15k
源码类别:
系统编程
开发平台:
Visual C++
- /******************************************************************************
- **
- ** Module: RNAUI.DLL
- ** File: scripter.c
- ** Descriptions: Remote Network Access Scripting dialog
- ** Contains: Scripting tools dialog boxes
- **
- ** Copyright (c) 1992-1993, Microsoft Corporation, all rights reserved
- **
- ** History: Thu 19-Aug-1993 -by- Viroon Touranachun [viroont]
- ** Created
- **
- ** Tue 08-Nov-1994 -by- Viroon Touranachun [viroont]
- ** Moved from sessmgr.c
- **
- ******************************************************************************/
- #include "rnaui.h"
- #include "scripter.h"
- #include "rnahelp.h"
- //**************************************************************************
- // Macros
- //**************************************************************************
- #define ISMINIMIZED(cmd) (cmd==SW_SHOWMINNOACTIVE || cmd==SW_SHOWMINIMIZED)
- //**************************************************************************
- // Global Parameters
- //**************************************************************************
- #pragma data_seg(DATASEG_READONLY)
- char const g_szProfile[] = REGSTR_KEY_PROF;
- char const g_szScript[] = REGSTR_VAL_SCRIPT;
- char const g_szMode[] = REGSTR_VAL_MODE;
- char const g_szPlacement[]=REGSTR_VAL_TERM;
- char const cszHelpFile[] = "winhelp.hlp>proc4";
- #pragma data_seg()
- //****************************************************************************
- // BOOL CALLBACK _export ScriptAppletDlgProc (HWND, UINT, WPARAM, LPARAM)
- //
- // This function handles the modal connection info setting dialog box.
- //
- // History:
- // Fri 05-May-1995 08:58:47 -by- Viroon Touranachun [viroont]
- // Created.
- //****************************************************************************
- BOOL CALLBACK ScriptAppletDlgProc (HWND hwnd,
- UINT message,
- WPARAM wParam,
- LPARAM lParam)
- {
- PCONNENTDLG pConnEntDlg;
- switch (message)
- {
- case WM_INITDIALOG:
- pConnEntDlg = (PCONNENTDLG)(((LPPROPSHEETPAGE)lParam)->lParam);
- SetWindowLong(hwnd, DWL_USER, (LONG)pConnEntDlg);
- // Initilialize the script page
- //
- InitScriptDlg(hwnd);
- break;
- case WM_DESTROY:
- DeInitScriptDlg (hwnd);
- break;
- case WM_HELP:
- case WM_CONTEXTMENU:
- ContextHelp(gaScripter, message, wParam, lParam);
- break;
- case WM_NOTIFY:
- switch(((NMHDR FAR *)lParam)->code)
- {
- case PSN_KILLACTIVE:
- //
- // Update the selected SMM settings
- //
- SetWindowLong(hwnd, DWL_MSGRESULT,
- (LONG)(CheckScriptDlgData(hwnd) != ERROR_SUCCESS));
- return TRUE;
- case PSN_APPLY:
- //
- // The property sheet information is permanently applied
- //
- SaveScriptDlgData(hwnd);
- return FALSE;
- default:
- break;
- };
- break;
- case WM_COMMAND:
- // Determine the end-user action
- //
- switch (GET_WM_COMMAND_ID(wParam, lParam))
- {
- case IDC_SCRIPT_NAME:
- //
- // Adjust the dialog appearance
- //
- if (GET_WM_COMMAND_CMD(wParam, lParam)==EN_CHANGE)
- {
- BOOL bEnable = (0 < Edit_GetTextLength(GET_WM_COMMAND_HWND(wParam, lParam)));
- EnableWindow(GetDlgItem(hwnd, IDC_DEBUG), bEnable);
- EnableWindow(GetDlgItem(hwnd, IDC_EDIT), bEnable);
- };
- break;
- case IDC_EDIT:
- //
- // Edit script file
- //
- EditScriptFile(hwnd);
- break;
- case IDC_SCRIPT_BROWSE:
- //
- // Browse an existing file
- //
- BrowseScriptFile(hwnd);
- break;
- #ifdef SCRPT_HELP_ENABLED
- case IDC_SCRIPT_HELP:
- WinHelp(hwnd, cszHelpFile, HELP_CONTEXT, CREATE_SCRIPT_MAIN);
- break;
- #endif // SCRPT_HELP_ENABLED
- };
- break;
- default:
- break;
- }
- return FALSE;
- }
- //****************************************************************************
- // DWORD NEAR PASCAL InitScriptDlg (HWND hwnd)
- //
- // This function initializes the scripting page.
- //
- // History:
- // Tue 08-Nov-1994 09:14:13 -by- Viroon Touranachun [viroont]
- // Created.
- //****************************************************************************
- DWORD NEAR PASCAL InitScriptDlg (HWND hwnd)
- {
- PCONNENTDLG pConnEntDlg;
- WINDOWPLACEMENT wp;
- HKEY hkey, hkeyEntry;
- DWORD cbSize, dwType;
- UINT uMode;
- char szFileName[MAX_PATH];
- // Get the currently selected connection name
- //
- pConnEntDlg = (PCONNENTDLG)GetWindowLong(hwnd, DWL_USER);
- // Assume no assigned script
- //
- szFileName[0] = ' ';
- uMode = NORMAL_MODE;
- wp.showCmd = SW_SHOWMINNOACTIVE;
- // Look up the registry for the current script name
- //
- if (RegOpenKey(HKEY_CURRENT_USER, g_szProfile, &hkey) == ERROR_SUCCESS)
- {
- if (RegOpenKey(hkey, pConnEntDlg->pConnEntry->pszEntry, &hkeyEntry)
- == ERROR_SUCCESS)
- {
- cbSize = sizeof(szFileName);
- if (RegQueryValueEx(hkeyEntry, g_szScript, 0, &dwType, szFileName,
- &cbSize) != ERROR_SUCCESS)
- {
- szFileName[0] = ' ';
- };
- cbSize = sizeof(uMode);
- if (RegQueryValueEx(hkeyEntry, g_szMode, 0, &dwType, (LPBYTE)&uMode,
- &cbSize) != ERROR_SUCCESS)
- {
- uMode = NORMAL_MODE;
- };
- // Get the current window setting
- //
- cbSize = sizeof(wp);
- if (RegQueryValueEx(hkeyEntry, g_szPlacement, 0, &dwType, (LPBYTE)&wp,
- &cbSize) != ERROR_SUCCESS)
- {
- // It is not there, signify the default values
- //
- wp.showCmd= SW_SHOWMINNOACTIVE;
- };
- RegCloseKey(hkeyEntry);
- };
- RegCloseKey(hkey);
- };
- // Set the name to the script name box
- //
- Edit_SetText(GetDlgItem(hwnd, IDC_SCRIPT_NAME), szFileName);
- // Set the minimized options
- //
- CheckDlgButton(hwnd, IDC_MINIMIZED,
- ISMINIMIZED(wp.showCmd) ? BST_CHECKED : BST_UNCHECKED);
- // Set the test mode
- //
- CheckDlgButton(hwnd, IDC_DEBUG,
- uMode == TEST_MODE ? BST_CHECKED : BST_UNCHECKED);
- EnableWindow(GetDlgItem(hwnd, IDC_DEBUG),
- (szFileName[0] == ' ') ? FALSE : TRUE);
- // Enable/disable edit button
- EnableWindow(GetDlgItem(hwnd, IDC_EDIT), 0 != szFileName[0]);
- // Prepare to browse from the scripts directory
- //
- if (GetWindowsDirectory(szFileName, sizeof(szFileName)))
- {
- LPSTR lpsz = szFileName;
- while((*lpsz != '\') && (*lpsz != ' '))
- {
- lpsz = CharNext(lpsz);
- };
- if (*lpsz == '\')
- {
- // Try to use it as the current directory
- //
- if ((LoadString(ghInstance, IDS_INI_SCRIPT_DIR, lpsz,
- MAX_PATH - (lpsz - szFileName)) == 0) ||
- (!SetCurrentDirectory(szFileName)))
- {
- // Try the short name
- //
- if (LoadString(ghInstance, IDS_INI_SCRIPT_SHORTDIR, lpsz,
- MAX_PATH - (lpsz - szFileName)))
- {
- SetCurrentDirectory(szFileName);
- };
- };
- };
- };
- return ERROR_SUCCESS;
- }
- //****************************************************************************
- // DWORD NEAR PASCAL DeInitScriptDlg (HWND)
- //
- // This function initializes the advanced device options box.
- //
- // History:
- // Mon 01-Mar-1993 13:51:30 -by- Viroon Touranachun [viroont]
- // Created.
- //****************************************************************************
- DWORD NEAR PASCAL DeInitScriptDlg (HWND hwnd)
- {
- return ERROR_SUCCESS;
- }
- //****************************************************************************
- // DWORD NEAR PASCAL EditScriptFile (HWND)
- //
- // This function brings up the associated editor for the script.
- //
- // History:
- // Tue 07-Jun-1995 08:02:00 -by- Scott Hysom [scotth]
- // Created.
- //****************************************************************************
- DWORD NEAR PASCAL EditScriptFile(HWND hwnd)
- {
- HWND hCtrl;
- SHELLEXECUTEINFO sei;
- char szFileName[MAX_PATH];
- DWORD dwRet;
- hCtrl = GetDlgItem(hwnd, IDC_SCRIPT_NAME);
- Edit_GetText(hCtrl, szFileName, sizeof(szFileName));
- ZeroMemory(&sei, sizeof(sei));
- sei.cbSize = sizeof(sei);
- sei.fMask = SEE_MASK_FLAG_NO_UI | SEE_MASK_DOENVSUBST;
- sei.hwnd = hwnd;
- sei.lpVerb = "Open";
- sei.lpFile = szFileName;
- sei.nShow = SW_NORMAL;
- sei.hInstApp = ghInstance;
- dwRet = ERROR_SUCCESS; // assume success
- if (!ShellExecuteEx(&sei))
- {
- char szCommand[MAX_PATH];
- // We failed to open the file, default to Notepad
- lstrcpy(szCommand, "notepad");
- sei.lpFile = szCommand;
- sei.lpParameters = szFileName;
- sei.fMask &= ~SEE_MASK_FLAG_NO_UI; // show any errors this time
- if (!ShellExecuteEx(&sei))
- dwRet = GetLastError();
- };
- return dwRet;
- }
- //****************************************************************************
- // DWORD NEAR PASCAL BrowseScriptFile (HWND)
- //
- // This function adjusts the dialog layout.
- //
- // History:
- // Tue 08-Nov-1994 09:14:13 -by- Viroon Touranachun [viroont]
- // Created.
- //****************************************************************************
- DWORD NEAR PASCAL BrowseScriptFile(HWND hwnd)
- {
- HWND hCtrl;
- OPENFILENAME ofn;
- LPSTR pszFiles, szFileName, szFilter;
- DWORD dwRet;
- // Allocate filename buffer
- //
- if ((pszFiles = (LPSTR)LocalAlloc(LPTR, 2*MAX_PATH)) == NULL)
- return ERROR_OUTOFMEMORY;
- szFileName = pszFiles;
- szFilter = szFileName+MAX_PATH;
- // Start file browser dialog
- //
- LoadString(ghInstance, IDS_FILE_FILTER, szFilter, MAX_PATH);
- *szFileName = ' ';
- ofn.lStructSize = sizeof(ofn);
- ofn.hwndOwner = hwnd;
- ofn.hInstance = ghInstance;
- ofn.lpstrFilter = szFilter;
- ofn.lpstrCustomFilter = NULL;
- ofn.nMaxCustFilter = 0;
- ofn.nFilterIndex = 2;
- ofn.lpstrFile = szFileName;
- ofn.nMaxFile = MAX_PATH;
- ofn.lpstrFileTitle = NULL;
- ofn.nMaxFileTitle = 0;
- ofn.lpstrInitialDir = NULL;
- ofn.lpstrTitle = NULL;
- ofn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
- ofn.nFileOffset = 0;
- ofn.nFileExtension = 0;
- ofn.lpstrDefExt = NULL;
- ofn.lCustData = 0;
- ofn.lpfnHook = NULL;
- ofn.lpTemplateName = NULL;
- if (GetOpenFileName(&ofn))
- {
- // Set the filename to a new name
- //
- hCtrl = GetDlgItem(hwnd, IDC_SCRIPT_NAME);
- Edit_SetText(hCtrl, szFileName);
- Edit_SetSel(hCtrl, 0, -1);
- SetFocus(hCtrl);
- EnableWindow(GetDlgItem(hwnd, IDC_DEBUG),
- (*szFileName == ' ') ? FALSE : TRUE);
- EnableWindow(GetDlgItem(hwnd, IDC_EDIT), 0 != *szFileName);
- dwRet = ERROR_SUCCESS;
- }
- else
- {
- dwRet = ERROR_OPEN_FAILED;
- };
- LocalFree(pszFiles);
- return dwRet;
- }
- //****************************************************************************
- // DWORD NEAR PASCAL CheckScriptDlgData (HWND)
- //
- // This function checks the valid data..
- //
- // History:
- // Tue 08-Nov-1994 09:14:13 -by- Viroon Touranachun [viroont]
- // Created.
- //****************************************************************************
- DWORD NEAR PASCAL CheckScriptDlgData(HWND hwnd)
- {
- HWND hCtrl;
- OFSTRUCT of;
- DWORD dwRet = ERROR_SUCCESS;
- // Get the current script name
- //
- hCtrl = GetDlgItem(hwnd, IDC_SCRIPT_NAME);
- Edit_GetText(hCtrl, of.szPathName, sizeof(of.szPathName));
- // Check whether the file exist
- //
- if (of.szPathName[0] != ' ')
- {
- of.cBytes = sizeof(of);
- if (OpenFile(of.szPathName, &of, OF_EXIST) == HFILE_ERROR)
- {
- if (RuiUserMessage(hwnd,
- IDS_ERR_FILE_NOT_EXIST,
- MB_YESNO | MB_ICONEXCLAMATION) == IDNO)
- {
- Edit_SetSel(hCtrl, 0, -1);
- SetFocus(hCtrl);
- dwRet = ERROR_FILE_NOT_FOUND;
- };
- };
- };
- return dwRet;
- }
- //****************************************************************************
- // DWORD NEAR PASCAL SaveScriptDlgData (HWND)
- //
- // This function saves the data permanently.
- //
- // History:
- // Tue 08-Nov-1994 09:14:13 -by- Viroon Touranachun [viroont]
- // Created.
- //****************************************************************************
- DWORD NEAR PASCAL SaveScriptDlgData(HWND hwnd)
- {
- PCONNENTDLG pConnEntDlg;
- HWND hCtrl;
- WINDOWPLACEMENT wp;
- UINT uMode;
- HKEY hkey, hkeyEntry;
- DWORD dwRet;
- char szPathName[MAX_PATH];
- // Get the current script name
- //
- hCtrl = GetDlgItem(hwnd, IDC_SCRIPT_NAME);
- Edit_GetText(hCtrl, szPathName, sizeof(szPathName));
- // Get the connection entry
- //
- pConnEntDlg = (PCONNENTDLG)GetWindowLong(hwnd, DWL_USER);
- // Write the name to the registry key
- //
- if (RegCreateKey(HKEY_CURRENT_USER, g_szProfile, &hkey) == ERROR_SUCCESS)
- {
- if (RegCreateKey(hkey, pConnEntDlg->pConnEntry->pszEntry, &hkeyEntry)
- == ERROR_SUCCESS)
- {
- DWORD cbSize, dwType;
- // If the name exists, update it. Otherwise, remove it.
- //
- if (szPathName[0] != ' ')
- {
- RegSetValueEx(hkeyEntry, g_szScript, 0, REG_SZ, szPathName,
- lstrlen(szPathName)+1);
- }
- else
- {
- RegDeleteValue(hkeyEntry, g_szScript);
- };
- // Get the current window setting
- //
- cbSize = sizeof(wp);
- if (RegQueryValueEx(hkeyEntry, g_szPlacement, 0, &dwType, (LPBYTE)&wp,
- &cbSize) != ERROR_SUCCESS)
- {
- // The current setting is not there, use the default value
- //
- ZeroMemory(&wp, sizeof(wp));
- wp.showCmd = SW_SHOWMINNOACTIVE;
- };
- if (IsDlgButtonChecked(hwnd, IDC_MINIMIZED))
- {
- wp.showCmd = SW_SHOWMINNOACTIVE;
- }
- else
- {
- // If the user specifed not-minimized but it is minimized
- //
- if (ISMINIMIZED(wp.showCmd))
- {
- // Set to show normal
- //
- wp.showCmd = SW_SHOWNORMAL;
- };
- };
- RegSetValueEx(hkeyEntry, g_szPlacement, 0, REG_BINARY, (LPBYTE)&wp,
- sizeof(wp));
- // Set the debug mode
- //
- uMode = (IsWindowEnabled(GetDlgItem(hwnd, IDC_DEBUG)) &&
- IsDlgButtonChecked(hwnd, IDC_DEBUG)) ? TEST_MODE : NORMAL_MODE;
- RegSetValueEx(hkeyEntry, g_szMode, 0, REG_BINARY, (LPBYTE)&uMode,
- sizeof(uMode));
- RegCloseKey(hkeyEntry);
- dwRet = ERROR_SUCCESS;
- }
- else
- {
- dwRet = ERROR_CANNOT_OPEN_PHONEBOOK;
- };
- RegCloseKey(hkey);
- }
- else
- {
- dwRet = ERROR_CANNOT_OPEN_PHONEBOOK;
- };
- return dwRet;
- }
English
