Управление компом в Windows(CD, Off, Reset)
Модератор: Andy
Как можна в винде: Встывить, вытащить CD, выключить и перезагрузить комп, ну и за одно измерить размер папки.
Знаю что перезагрузить/выключить комп можно вызвав rundll с какими-то параметрами:
формат такой rundll32.exe <модуль> <параметр>:
формат такой rundll32.exe <модуль> <параметр>:
Внимание! При использовании модулей shell32.dll, diskcopy.dll, rnaui.dll, msprint2.dll вводите параметры модуля с учетом регистра.
user,disableoemlayer - вызвать сбой в системе
krnl386.exe,exitkernel - завершить работу Windows без любых сообщений и вопросов
mouse,disable - отключить мышь
user,setcursorpos - установить курсор мыши в верхний левый угол экрана
user,setdoubleclicktime n - установить скорость n двойного щелчка мышью
user,swapmousebutton - поменять местами функции кнопок мыши
user,setcaretblinktime n - установить частоту n мигания курсора
keyboard,disable - отключить клавиатуру
user,wnetconnectdialog - вызвать окно "Подключение сетевого диска"
user,wnetdisconnectdialog - вызвать окно "Отключение сетевого диска"
rnaui.dll,RnaDial <провайдер> - вызвать окно "Установка связи" с указанным провайдером
rnaui.dll,RnaWizard - вызвать окно "Удаленный доступ к сети"
rnaui.dll,RnaWizard /1 - вызвать окно "Новое соединение"
user,repaintscreen - обновить содержимое текущего окна
shell,shellexecute - открыть корневую папку загрузочного диска
user,tilechildwindows - выстроить окна сверху вниз
user,cascadechildwindows - выстроить окна каскадом
shell32,OpenAs_RunDLL - вызвать окно "Открыть с помощью..."
shell32,SHFormatDrive - вызвать окно "Форматирование: Диск 3,5 (А"
diskcopy,DiskCopyRunDll - вызвать окно "Копирование диска" (имеются ввиду дискеты)
shell32,ShellAboutA - вызвать окно "О программе"
sysdm.cpl,InstallDevice_Rundll - вызвать окно "Установка оборудования" для не-Plug&Play устройств
msprint2.dll,RUNDLL_PrintTestPage - напечатать на принтере пробную страницу
Следующие команды используются
для вызова апплетов Панели управления
shell32,Control_RunDLL - вызвать окно Панели управления
shell32,Control_RunDLL desk.cpl - вызвать окно "Свойства экрана"
shell32,Control_RunDLL main.cpl @0 - вызвать окно "Свойства: Мышь"
shell32,Control_RunDLL main.cpl @1 - вызвать окно "Свойства: Клавиатура"
shell32,Control_RunDLL main.cpl @2 - вызвать окно "Принтеры"
shell32,Control_RunDLL main.cpl @3 - вызвать окно "FONTS"
shell32,Control_RunDLL appwiz.cpl - вызвать окно "Свойства: Установка и удаление программ"
shell32,Control_RunDLL inet.cpl @0 - вызвать окно "Свойства: Интернет"
shell32,Control_RunDLL inet.cpl @1 - вызвать окно "Разрешение многопользовательских настроек"
shell32,Control_RunDLL intl.cpl - вызвать окно "Свойства: Язык и стандарты"
shell32,Control_RunDLL joy.cpl - вызвать окно "Игровые устройства"
shell32,Control_RunDLL mmsys.cpl @0 - вызвать окно "Свойства: Мультимедиа"
shell32,Control_RunDLL mmsys.cpl @1 - вызвать окно "Свойства: Звук"
shell32,Control_RunDLL modem.cpl - вызвать окно "Свойства: Модемы"
shell32,Control_RunDLL odbccp32.cpl - вызвать окно "Администратор источников данных ODBC"
shell32,Control_RunDLL password.cpl - вызвать окно "Свойства: Пароли"
shell32,Control_RunDLL powercfg.cpl - вызвать окно "Свойства: Управление электропитанием"
shell32,Control_RunDLL sticpl.cpl - вызвать окно "Свойства: Сканеры и камеры"
shell32,Control_RunDLL sysdm.cpl @0 - вызвать окно "Свойства: Система"
shell32,Control_RunDLL sysdm.cpl @1 - вызвать окно "Установка оборудования"
shell32,Control_RunDLL telephon.cpl - вызвать окно "Параметры набора номера"
shell32,Control_RunDLL themes.cpl - вызвать окно "Темы рабочего стола"
shell32,Control_RunDLL timedate.cpl - вызвать окно "Свойства: Дата и время"
Следующие команды используются для завершения работы Windows:
%WinDir%\System\runonce.exe -q или
rundll32.exe shell32.dll,SHExitWindowsEx <n>, где может принимать следующие значения:
0 (LOGOFF) - Закрытие всех запущенных приложений, отключение компьютера от сети и подготовка к открытию сеанса другого пользователя.
1 (SHUTDOWN) - Сохранение всех измененных параметров Windows, запись всех несохраненных данных из памяти на жесткий диск и подготовка компьютера к выключению.
2 (REBOOT) - Сохранение всех измененных параметров Windows, запись всех несохраненных данных из памяти на жесткий диск и перезапуск компьютера.
4 (FORCE) - Закрытие всех запущенных приложений без записи несохраненных данных на диск.
8 (POWEROFF) - Сохранение всех измененных параметров Windows, запись всех несохраненных данных из памяти на жесткий диск и выключение компьютера.
Примечание : Команда "runonce.exe –q" перезагружает компьютер после 15 секундной задержки. Данная команда, в отличие от команды
rundll32.exe shell32.dll,SHExitWindowsEx
не может быть использована в разделе "RunOnce" системного реестра Windows.
И пусть удача повернется к тебе нужным местом 

Открытие cdrom(C++)
Код: Выделить всё
HANDLE fhnd;
DWORD BitMask,bm,i,gdt,res, dwBytesReturned;
char ch='A';
LPTSTR szVolumeFormat = TEXT("\\\\.\\%c:");
LPTSTR szRootFormat = TEXT("%c:\\");
TCHAR szVolumeName[8];
TCHAR szRootName[5];
//Получаем битовую маску устройств.
BitMask=GetLogicalDrives();
//В цикле, проверяем наличие установленных устройств
for(i=0;i<=31;i++){
bm=(BitMask>>i)&1;
if(bm) {
wsprintf(szRootName, szRootFormat, ch);
//Если 1, то проверяем тип устройства.
gdt=GetDriveType(szRootName);
wsprintf(szVolumeName, szVolumeFormat, ch);
if(gdt==5) {
//если это CD, то открывает устройство.
fhnd = CreateFile(szVolumeName, GENERIC_READ, FILE_SHARE_WRITE | FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
//Передаём комманду открыть (так же можно передать комманду закрыть)
DeviceIoControl(fhnd, IOCTL_STORAGE_EJECT_MEDIA, NULL, 0, NULL, 0, &dwBytesReturned, NULL);
//Закрываем дескриптор устройства устройства.
CloseHandle(fhnd);
}
}
//Увеличиваем переменную для получения буквы устройства.
ch++;
}
И пусть удача повернется к тебе нужным местом 

чтобы закрыть команда вроде такая IOCTL_STORAGE_LOAD_MEDIA
И пусть удача повернется к тебе нужным местом 

еще можно так, но это только если сидюк один:
Код: Выделить всё
// Открыть
mciSendString('Set cdaudio door open wait', 0, 0, handle);
// Закрыть
mciSendString('Set cdaudio door closed wait', 0, 0, handle);
И пусть удача повернется к тебе нужным местом 

Можно примерчик, на MSDNе понять ничего немогу
Вроде разобрался чего куда, exe - получается, но прога не работает, а ошибку выдает
При запуске Wind выдает ошибку: "z.exe - обнаружена ошибка. Приложение будет закрыто. Приносим извинения за неудобства."
Что нетак?
.586
.model flat, stdcall
inсludе ..\tasm\win32.inc
extrn mciSendString:PROC
.data
hInst dd 0
szOpen db 'open cdaudio',0
.code
start:
call GetModuleHandleA, 0
mov hInst, eax
call mciSendString, offset szOpen, 0, 0, hInst
call ExitProcess,0
end start
При запуске Wind выдает ошибку: "z.exe - обнаружена ошибка. Приложение будет закрыто. Приносим извинения за неудобства."
Что нетак?
.586
.model flat, stdcall
inсludе ..\tasm\win32.inc
extrn mciSendString:PROC
.data
hInst dd 0
szOpen db 'open cdaudio',0
.code
start:
call GetModuleHandleA, 0
mov hInst, eax
call mciSendString, offset szOpen, 0, 0, hInst
call ExitProcess,0
end start
szOpen db "Set cdaudio door open wait",0
Программы, использующие MCI, посылают драйверам команды с помощью функций mciSendString и mciSendCommand из стандартной библиотеки Mmsystem.dll (папка Windows\System). Первая из них посылает команду в виде текстовой строки, а вторая – в виде стандартных констант и структур данных, которые предварительно нужно заполнить. Ввиду большей простоты рассмотрим только первый способ.
Прототип функции mciSendString на языке С имеет вид:
DWORD mciSendString(LPSTR lpstrComand,
LPSTR lpstrReturnString,
UINT wReturnLength,
HWND hwndCallback)
Первый параметр обязателен – это сама командная строка. Остальные необязательны. Они определяют буфер, куда посылается ответ, его длину и окно для посылки сообщения (notify) программе от устройства. Сама функция при успешном выполнении команды возвращает 0, а в случае ошибки – отрицательное значение. Это значение можно передать в качестве первого параметра функции mciGetErrorString (из той же библиотеки Mmsystem.dll) – функция возвратит текстовое описание ошибки:
UINT mciGetErrorString(DWORD dwError,
LPSTR lpstrBuffer,
UINT wLength)
И пусть удача повернется к тебе нужным местом 

mci была введена еще в win 3.11 так что это полная лажа ))
Если хочешь - можешь почитать о mci тут gighack.narod.ru/mci.htm
Если хочешь - можешь почитать о mci тут gighack.narod.ru/mci.htm
И пусть удача повернется к тебе нужным местом 
