Навигация XServer.ru
Языки программирования и разработки:
ActiveX,
Assembler,
Asp,
Basic,
C & C++,
Pascal,
CGI,
HTML,
DHTML,
SSI,
CSS,
XML,
VRML,
JavaScript,
Perl,
PHP,
VBScript,
Разное.
Среды программирования:
Borland Delphi,
Borland C++ Builder,
Microsoft Visual C++,
Microsoft Visual Basic.
Базы данных:
Access,
dBase,
Btrieve,
Case,
Cavo,
ERwin,
FoxPro,
Informix,
InterBase,
MySQL,
Oracle,
PostgreSQL,
Язык SQL,
SQL Server,
Базы данных для web.
Графика:
3DMax,
Adobe PhotoShop,
Corel Draw,
Flash,
X-Press,
Другие программы,
Графика и дизайн: общие темы.
Операционные системы:
FreeBSD,
Linux,
MS-DOS,
Netware,
OS/2,
Unix,
Windows 9x,
Windows NT,
Windows 2000.
Компьютеры:
Аудио,
Видео,
Контроллеры,
Модемы,
Накопители,
Периферия,
Процессоры.
Связь:
Сотовая связь,
АТС,
Пейджеры,
Телефоны,
Факсы,
Радиостанции.
Cети:
Windows,
Cisco,
Internet,
Разное.
Сервер:
Apache,
IIS,
Разное.
Протоколы передачи данных:
TCP/IP,
HTTP,
SMTP,
POP,
ICQ,
FTP,
Socks,
UDP,
WAP,
Разное.
Разное
Безопастность
|
|
Как изменить размер шрифта в Windows NT и перезагрузить её.
|
Компилятор: Visual C++ 6
Иногда необходимо, программным путём сделать некоторые действия в
операционной системе, которые обычные пользователи делают чуть ли не
ежедневно.
Итак, прольём немного света на недокументированные возможности.
Изменение больших шрифтов на маленькие и обратно в Windows NT делается
при помощи функции SetupChangeFontSize в SysSetup.dll: DWORD WINAPI SetupChangeFontSize( HANDLE HWindow,
LPCWSTR lpszFontSize)
Возвращаемые значения следующие: ERROR_SUCCESS ( Value == 0 ) Операция завершена успешно.
ERROR_CANCELLED ( Value == 1223 ) Операция была прервана пользователем.
#include "windows.h"
///////////////////////////////////////////////////////////////
/// Arnon Mathias 13-Mar-2002
///////////////////////////////////////////////////////////////
DWORD _MyExitWindows(UINT ExitFlags)
{
/// Из документации MSDN по функции ExitWindowsEx
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
DWORD dwRetVal;
/// Получаем маркер (token) для этого процесса.
if (!OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
{
::MessageBox (NULL,"Open Process Token","Exit Windows",MB_OK);
return (GetLastError());
}
/// Получаем LUID для привелегии выключения (shutdown).
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,
&tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1; // устанавливаем привелегию "один"
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
/// Получаем привелегию выключения (shutdown) для этого процесса.
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,
(PTOKEN_PRIVILEGES)NULL, 0);
/// Не получилось проверить возвращённое значение AdjustTokenPrivileges.
if ( (dwRetVal = GetLastError()) != ERROR_SUCCESS)
{
::MessageBox (NULL,"AdjustTokenPrivileges","Exit Windows",MB_OK);
return dwRetVal;
}
/// Выключаем или перезагружаем в соответствие с ExitFlags
::MessageBox ( NULL,
"Restarting Windows",
"System settings has changed",
MB_OK);
if (!ExitWindowsEx(ExitFlags, 0))
{
::MessageBox (NULL,
"Error While trying to exit",
"Exit Windows",
MB_OK);
return (GetLastError());
}
return ERROR_SUCCESS;
}
DWORD MyRestartWindows()
{
return _MyExitWindows(EWX_LOGOFF|EWX_REBOOT);
}
DWORD _MyChangeFontSize(unsigned short* lpszFontSize)
{
// строка размера шрифта должна быть в формате unicode
HMODULE hModule;
hModule = LoadLibrary("syssetup.dll");
if (hModule == NULL)
{
return (GetLastError());
}
typedef DWORD (WINAPI* MYPROC) (HANDLE,LPWSTR);
MYPROC ProcAdd;
ProcAdd = (MYPROC) GetProcAddress(hModule,
"SetupChangeFontSize");
if (ProcAdd == NULL)
{
return (GetLastError());
}
//////////////////////////////////////////////////////////////////
/// Изменение размера шрифта:
/// SetupChangeFontSize имеет на входе два параметра:
/// Дескриптор (Handle) вызывающего окна (я использую NULL)
/// строка размера шрифта в формате unicode:
/// L"120" для больших (Large) шрифтов
/// L"96" для маленьких (Small) шрифтов
/// SetupChangeFontSize вернёт 0 если операция прошла успешно.
DWORD dwRetVal;
dwRetVal = (ProcAdd) (NULL,lpszFontSize);
if (dwRetVal != ERROR_SUCCESS)
{
return dwRetVal;
}
////////////////////////////////////////////////////////////////
if ( !(FreeLibrary(hModule)) )
{
return (GetLastError());
}
return ERROR_SUCCESS;
}
void Change2LargeFonts()
{
DWORD dwRetVal = _MyChangeFontSize(L"120");
if (dwRetVal == ERROR_SUCCESS)
{
MyRestartWindows();
}
}
void Change2SmallFonts()
{
DWORD dwRetVal = _MyChangeFontSize(L"96");
if (dwRetVal == ERROR_SUCCESS)
{
MyRestartWindows();
}
}
int main(int argc, char* argv[])
{
// Change2LargeFonts();
Change2SmallFonts();
return 0;
}
Литература по Windows NT
|
Штора на Avito: курсы по дизайну штор. ; Центр вызов эвакуатора. Делают авто эвакуатор.
|
|