1.调用外部程序
void CSysControlSampleDlg::OnButtonExe() // 调用外部程序
{
STARTUPINFO si; // 定义启动信息变量
PROCESS_INFORMATION pi; // 定义进程信息变量
HANDLE hProcess,hThread; // 定义进程句柄和线程句柄
si.cb =sizeof(STARTUPINFO); // 为启动信息变量大小赋值
si.lpReserved = NULL; // 预留
si.lpDesktop=NULL; // 桌面句柄
si.lpTitle=NULL; // 进程标题,只对控制台程序有效
si.cbReserved2=0; // 预留
si.lpReserved2=NULL; // 预留
if (CreateProcess("C:\\WINDOWS\\NOTEPAD.EXE", NULL,
NULL, NULL, TRUE, 0, NULL,NULL, &si,&pi)) // 启动记事本
{
hProcess = pi.hProcess;
hThread = pi.hThread; // 保存进程和线程句柄
WriteLog("调用外部程序成功。\n进程Id = %d\n线程Id = %d\n",pi.dwProcessId,pi.dwThreadId); // 输出进程信息
}
else WriteLog("调用记事本失败。错误代码=%X",GetLastError()); // 输出错误代码
}
2.调用创建快捷方式向导
void CSysControlSampleDlg::OnButtonLinkWizard() // 调用创建快捷方式向导
{
WinExec("rundll32.exe appwiz.cpl,NewLinkHere C:\\", SW_SHOW);
}
3.启动控制面板
void CSysControlSampleDlg::OnButtonExeControlitem() // 访问启动控制面板中的各项
{
if (SUCCEEDED(CoInitialize(NULL))) // 初始化COM工作环境
{
IShellDispatch* pShellDispatch=NULL; // 定义接口指针
// 创建CLSID_Shell接口实例
if (SUCCEEDED(CoCreateInstance(CLSID_Shell, NULL, CLSCTX_INPROC_SERVER, IID_IDispatch, (void**)&pShellDispatch)))
{ // 如果成功,则
COleVariant OleVariant("sysdm.cpl"); // 初始化控制面板对应的cpl名
// 调用指定cpl名对应的对话框程序
HRESULT hResult = pShellDispatch->ControlPanelItem(OleVariant.bstrVal);
pShellDispatch->Release();
}
else WriteLog("创建CLSID_Shell实例失败"); // 如果创建实例失败,则显示错误信息
CoUninitialize(); // 清理COM工作环境
}
else WriteLog("初始化Shell失败"); // 初始化COM环境失败,则显示错误信息
}
4.控制光驱的弹开
void CSysControlSampleDlg::OnButtonOpenCdrom() // 控制光驱的弹开
{
MCI_OPEN_PARMS mciOpenParms;
mciOpenParms.lpstrDeviceType = "cdaudio";
if (!mciSendCommand(NULL, MCI_OPEN, MCI_OPEN_TYPE,
(DWORD)(LPVOID)&mciOpenParms))
mciSendCommand(mciOpenParms.wDeviceID, MCI_SET, MCI_SET_DOOR_OPEN, NULL);
}
5.控制光驱的关闭
void CSysControlSampleDlg::OnButtonCloseCdrom() // 控制光驱的关闭
{
mciSendCommand(mciGetDeviceID("cdaudio"), MCI_SET, MCI_SET_DOOR_CLOSED, NULL);
}
6.关机
ExitWindowsEx(EWX_POWEROFF,NULL); // 关机操作系统
7.重启
ExitWindowsEx(EWX_REBOOT,NULL); // 重启操作系统
8.注销
ExitWindowsEx(EWX_LOGOFF,NULL); // 注销操作系统
9.锁定计算机
void CSysControlSampleDlg::OnButtonLockSystem() // 锁定计算机
{
HINSTANCE hInstance = ::LoadLibrary("user32.dll"); // 装载user32.dll
LOCKFUN pFun = (LOCKFUN)::GetProcAddress(hInstance,"LockWorkStation");// 获取函数指针
pFun(); // 执行函数,锁定计算机
}
10.打开显示器
::SendMessage(GetSafeHwnd(),WM_SYSCOMMAND,SC_MONITORPOWER,-1);
11.关闭显示器
::SendMessage(GetSafeHwnd(),WM_SYSCOMMAND,SC_MONITORPOWER,2);
12.打开屏幕保护程序
::SendMessage(GetSafeHwnd(),WM_SYSCOMMAND,SC_SCREENSAVE,2);
13.启用屏幕保护程序
SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, TRUE, NULL, 0);
14.禁用屏幕保护程序
SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, FALSE, NULL, 0);
15.开启当前输入法
HIMC himc = ImmGetContext(m_editLog.m_hWnd);
ImmSetOpenStatus(himc, TRUE);
16.关闭当前输入法
HIMC himc = ImmGetContext(m_editLog.m_hWnd);
ImmSetOpenStatus(himc, FALSE);
17.程序发出提示音
MessageBeep(MB_ICONASTERISK);
18.列举系统中的可执行文件
void CSysControlSampleDlg::OnButtonCloseSearchfile() // 列举系统中的可执行文件
{
iFileCount = 0;
::SetCursor(LoadCursor(NULL, IDC_WAIT));
char szDrivers[MAX_PATH]={0};
CString szPath;
DWORD dwLen = GetLogicalDriveStrings(MAX_PATH, szDrivers);
for (int i = 0;i < (int)dwLen; i++)
{
if (((szDrivers[i] <='Z') && (szDrivers[i] >='A'))
|| ((szDrivers[i] <='z') && (szDrivers[i] >='a')))
{
szPath.Format("%c:", szDrivers[i]);
FindExe(szPath);
}
}
::SetCursor(LoadCursor(NULL, IDC_ARROW));
}
void CSysControlSampleDlg::FindExe(CString szPath)
{
CFileFind ff;
BOOL bContinue = ff.FindFile(szPath + "\\*");
while (bContinue)
{
if (iFileCount > 10) return;
bContinue = ff.FindNextFile();
if (ff.IsDirectory())
{
if (ff.GetFileName().Left(1) != ".")
{
CString szRecuPath;
szRecuPath.Format("%s\\%s", szPath, ff.GetFileName());
FindExe(szRecuPath);
continue;
}
}
if (ff.GetFileName().Right(3) == "exe")
{
iFileCount++;
WriteLog("%s%s", ff.GetFilePath(), ff.GetFileName());
}
}
}