系统相关功能开发(五)-系统工具
来源:互联网 发布:js继承面试题 编辑:程序博客网 时间:2024/06/01 09:19
1.为程序添加快捷方式
void CSysToolSampleDlg::OnButtonCreatelink()// 为程序添加快捷方式{if (!SUCCEEDED(CoInitialize(NULL)))// 初始化COM组件{WriteLog("初始化Shell失败");// 初始化失败显示信息return;// 返回}IShellLink *pisl;// 定义快捷方式接口变量if (SUCCEEDED(CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLinkA, (void**)&pisl))) {// 创建快捷方式实例IPersistFile* pIPF;// 定义文件接口变量CString szPath;// 定义文件名变量GetModuleFileName(GetModuleHandle(NULL), szPath.GetBuffer(MAX_PATH), MAX_PATH); // 获取运行路径pisl->SetPath(szPath);// 设置文件接口的路径为当前运行路径szPath.ReleaseBuffer();// 释放路径变量if (SUCCEEDED(pisl->QueryInterface(IID_IPersistFile, (void**)&pIPF))) {// 创建文件实例CString szLinkPath;// 定义创建的快捷方式的路径SHGetSpecialFolderPath(0, szLinkPath.GetBuffer(MAX_PATH), CSIDL_DESKTOPDIRECTORY, 0);// 获取桌面对应的路径szLinkPath.ReleaseBuffer();// 释放快捷方式路径变量szLinkPath += szPath.Mid(szPath.ReverseFind('\\'));// 设置快捷方式的文件名szLinkPath += ".lnk";// 设置快捷方式的扩展名WCHAR wpath[MAX_PATH] = { 0 };// 定义Unicode字符串MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, szLinkPath, -1, wpath, MAX_PATH);// 将快捷方式的完整文件名转换为UnicodepIPF->Save(wpath, FALSE);// 设置快捷方式对应的文件名pIPF->Release();// 释放文件接口WriteLog("创建快捷方式成功,快捷方式路径=%s", szLinkPath);// 显示创建的快捷方式信息}else WriteLog("创建文件接口IID_IPersistFile失败");// 显示错误信息pisl->Release();// 释放文件接口} else WriteLog("创建CLSID_ShellLink实例失败");// 显示错误信息CoUninitialize();// 释放COM组件工作环境}
2.显示系统正在运行的程序
void CSysToolSampleDlg::OnButtonGetproclist()// 显示系统正在运行的程序{HANDLE hPS=NULL;// 定义进程快照句柄 PROCESSENTRY32 pe32={0};// 定义进程结构变量 hPS = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);// 创建进程快照 if (hPS == (HANDLE)-1) {WriteLog("调用CreateToolhelp32Snapshot函数创建进程快照失败");// 显示错误信息return;// 返回} pe32.dwSize = sizeof(PROCESSENTRY32);// 为进程结构的大小分量赋值 if (Process32First(hPS, &pe32))// 检索快照中的第一个进程 { do {// 显示检索到得进程信息WriteLog("\n优先级=%d\t进程ID=%d\t线程数目=%d\t模块名称=%s",pe32.pcPriClassBase, pe32.th32ProcessID, pe32.cntThreads, pe32.szExeFile); } while (Process32Next(hPS, &pe32));// 检索快照中的下一个进程 } else WriteLog("调用Process32First函数枚举运行程序失败");// 显示错误信息 CloseHandle (hPS);// 关闭进程快照句柄}
3.如何获取毫秒级时间
void CSysToolSampleDlg::OnButtonGetmillsecond()// 如何获得毫秒级时间{DWORD t1 = timeGetTime();// 获取自系统启动到现在经过的毫秒数Sleep(10);// 程序休眠10毫秒DWORD t2 = timeGetTime();// 获取自系统启动到现在经过的毫秒数WriteLog("开始时间=%u", t1);// 输出开始时间WriteLog("结束时间=%u", t2);// 输出结束时间WriteLog("计时器10毫秒持续的时间=%u", (t2- t1));// 输出10毫秒经过的时间间隔}
4.注册和卸载组件
void CSysToolSampleDlg::OnButtonRegistcom()// 注册组件{CString szPath= "COMSample.dll";// 定义组件路径名称HINSTANCE hLib=LoadLibrary(szPath);// 装载组件if (hLib == NULL)// 如果装载失败,{WriteLog("装载%s组件文件失败!", szPath);// 输出错误信息return;// 并返回} FARPROC lpEntryPoint = GetProcAddress(hLib,_T("DllRegisterServer")); // 获取DllRegisterServer函数指针if (lpEntryPoint != NULL)// 如果入口函数不为NULL,则{// 调用函数注册组件if(FAILED((*lpEntryPoint)()))WriteLog("调用组件%s的DllRegisterServer函数失败!", szPath);// 输出错误信息else WriteLog("注册%s组件成功!", szPath);// 输出成功信息}else WriteLog("没有找到组件%s的入口函数DllRegisterServer,无法注册!", szPath);// 输出错误信息FreeLibrary(hLib);// 释放对组件的引用}
void CSysToolSampleDlg::OnButtonUnregistcom()// 卸载组件{CString szPath= "COMSample.dll";// 定义组件路径名称HINSTANCE hLib=LoadLibrary(szPath);// 装载组件if (hLib == NULL)// 如果装载失败,{WriteLog("装载%s组件文件失败!", szPath);// 输出错误信息return;// 并返回}FARPROC lpEntryPoint = GetProcAddress(hLib,_T("DllUnregisterServer"));// 获取DllUnregisterServer函数指针if (lpEntryPoint != NULL)// 如果入口函数不为NULL,则{// 调用函数卸载组件if(FAILED((*lpEntryPoint)()))WriteLog("调用组件%s的DllUnregisterServer失败!", szPath);// 输出错误信息else WriteLog("卸载%s组件成功!", szPath);// 输出成功信息}else WriteLog("没有找到组件%s的入口函数DllUnregisterServer,无法卸载!", szPath);// 输出错误信息FreeLibrary(hLib);// 释放对组件的引用}
5.清空回收站
void CSysToolSampleDlg::OnButtonClearbin()// 清空回收站{if( SHEmptyRecycleBin(this->m_hWnd, NULL, NULL) == S_OK)// 清空回收站WriteLog("清空回收站完成");// 输出成功信息else WriteLog("清空回收站失败");// 输出错误信息}
6.如何在程序中显示文件属性对话框
void CSysToolSampleDlg::OnButtonShowprodig()// 在程序中显示文件属性对话框{CString szPath;// 定义路径GetCurrentDirectory(MAX_PATH, szPath.GetBuffer(MAX_PATH));// 获取当前运行路径szPath.ReleaseBuffer();// 释放路径变量SHELLEXECUTEINFO seci;// 定义可执行信息ZeroMemory(&seci,sizeof(seci));// 初始化可行性信息变量seci.cbSize = sizeof(SHELLEXECUTEINFO);// 赋值可执行变量的大小seci.hwnd = this->m_hWnd;// 赋值窗体句柄seci.lpParameters = NULL;// 赋值参数为NULLseci.lpDirectory = szPath;// 赋值文件夹seci.nShow = 0;// 不显示文件seci.hInstApp = 0;// 赋值应用实例szPath += "\\ReadMe.txt";// 文件名seci.lpFile = szPath;// 赋值文件名seci.lpVerb = "properties";// 赋值调用版本为属性seci.fMask = SEE_MASK_NOCLOSEPROCESS|SEE_MASK_INVOKEIDLIST|SEE_MASK_FLAG_NO_UI; // 设置选项 ShellExecuteEx(&seci);// 调用文件属性对话框}
阅读全文
0 0
- 系统相关功能开发(五)-系统工具
- 系统相关功能开发(八)-消息
- 系统相关功能开发(九)-剪贴板
- 系统相关功能开发(三)-系统控制与调用
- 系统相关功能开发(七)-系统信息
- 系统相关功能开发(六)-桌面相关
- 系统相关功能开发(二)-磁盘操作
- 系统相关功能开发(一)-获取磁盘信息
- 系统相关功能开发(四)-应用程序操作
- 系统相关功能开发(十)-鼠标键盘
- 调用系统相关功能
- 相关驱动开发工具(系统自带测试驱动工具使用 学习学习)
- android开发 系统信息相关工具类 权限管理页面
- 浏览器相关功能系统调用
- 车载系统的相关功能
- 软件开发(五)-----系统开发
- 职教系统项目开发手册(五)
- AHOI智能评测系统开发(五)
- 数字金额转换为传统金额工具
- SpringBoot项目简单建立
- Eclipse进入在线下载组件时报Cannot open Eclipse Marketplace
- 重建二叉树
- NFS总结
- 系统相关功能开发(五)-系统工具
- windbg常用命令详解
- Android Studio TextView上下滚动轮播
- UML表述类与类的关系
- POJ1182 食物链 (带权并查集)
- RDLC 报表打印
- CNTK机器学习:平台搭建
- Selenium-基本概念
- nginx+openssl+https 实现双向认证所遇到的坑