Меню
Категории
Используем функцию system(). Для выполнения системных задач.
15 апреля, 2008 Задачки

Задача была поставлена подругой, как лабораторная работа. Не думаю что на 1 курсе они знали что такое WinAPI поэтому реализовал все функции через функцию system(). Скомпилированный проект прилагается.

Программа должна содержать 10 кнопок – путей, при нажатии на которые будут выполняться соответствующие им функции.

  1. cmd – открывает командную строку;
  2. regedit – открывает регистр;
  3. msconfig – откр. автозагрузку;
  4. Мышь – откр. настройки мыши (панель управления ? Мышь);
  5. Установка и удаление программ – откр. установку и удаление программ;
  6. Система – панель управления, система;
  7. Службы администрирования – панель управления, администрирование,службы;
  8. Свойства папки – панель управ. ? свойства папки;
  9. Откр/закр CD-ROM;
  10. Калькулятор.

Компилил на C++ Бильдере 6. От Борланда. Лучше проверь прогу на винде, где она нужна или где её проверять будут.

#pragma hdrstop
#include <vcl.h>
#include <stdlib.h>
#include <windows.h>
#include <mmsystem.h>
#include «Unit1.h»

#pragma package(smart_init)
#pragma resource «*.dfm»
TForm1 *Form1;

__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{

}

void CD_OpenCloseDrive(BOOL bOpenDrive, TCHAR cDrive)
{
MCI_OPEN_PARMS op;
MCI_STATUS_PARMS st; //Функция для открывашки сидюков. с инета скачал
DWORD flags;
TCHAR szDriveName[4];
strcpy(szDriveName, «X:»);
::ZeroMemory(&op, sizeof(MCI_OPEN_PARMS));
op.lpstrDeviceType = (LPCSTR) MCI_DEVTYPE_CD_AUDIO;
if(cDrive > 1)
{
szDriveName[0] = cDrive;
op.lpstrElementName = szDriveName;
flags = MCI_OPEN_TYPE | MCI_OPEN_TYPE_ID | MCI_OPEN_ELEMENT | MCI_OPEN_SHAREABLE;
}
else flags = MCI_OPEN_TYPE | MCI_OPEN_TYPE_ID | MCI_OPEN_SHAREABLE;
if (!mciSendCommand(0,MCI_OPEN,flags,(unsigned long)&op))
{
st.dwItem = MCI_STATUS_READY;
if(bOpenDrive)
mciSendCommand(op.wDeviceID, MCI_SET,MCI_SET_DOOR_OPEN,0);
else
mciSendCommand(op.wDeviceID, MCI_SET,MCI_SET_DOOR_CLOSED,0);
mciSendCommand(op.wDeviceID, MCI_CLOSE,MCI_WAIT,0);
}
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
system(«cmd»);
}
void __fastcall TForm1::Button2Click(TObject *Sender)
{
system(«regedit»);
}
void __fastcall TForm1::Button3Click(TObject *Sender)
{
WinExec («C:\\WINDOWS\\SYSTEM\\msconfig.exe», SW_SHOW); //Для разных масдаев
WinExec («C:\\WINDOWS\\msconfig.exe», SW_SHOW); //Для 98/Me
WinExec («C:\\WINDOWS\\SYSTEM32\\msconfig.exe», SW_SHOW); //Для вин XP/2000
//Вобщем. какая-нить , да заработает.
//system(«sysedit»); //Можно поюзать и еще это, полезная фишка
}
void __fastcall TForm1::Button9Click(TObject *Sender)
{
system(«calc»);
}
void __fastcall TForm1::Button6Click(TObject *Sender)
{
system(«sysdm.cpl»);
}
void __fastcall TForm1::Button5Click(TObject *Sender)
{
system(«appwiz.cpl»);
}
void __fastcall TForm1::Button4Click(TObject *Sender)
{
system(«main.cpl»);
}
void __fastcall TForm1::Button10Click(TObject *Sender)
{
CD_OpenCloseDrive(true, *Edit1->Text.c_str());
//При закрывании сидюка прога может подвисать. на 1-5 секунд
}
void __fastcall TForm1::Button11Click(TObject *Sender)
{
CD_OpenCloseDrive(false, *Edit1->Text.c_str());
}
void __fastcall TForm1::Button7Click(TObject *Sender)
{
system(«compmgmt.msc»);
}

Скомпилированный проект.

Добавить комментарий




*