如何锁定计算机、打开运行对话框、打开系统帮助、打开资源管理器
这个问题我想也许很多朋友遇到过,我最近用到了,有必要记录一下,以期与大家共勉。
由于系统里默认有一些组合键如:
WIN(CTRL和ALT中间的那个键)+R 运行
WIN+F 查找
WIN+D 显示桌面
WIN+E 资源管理器
WIN+U 辅助工具
WIN+L 切换用户
那么很自然的,我们想到了模拟系统按键,当然还有一些可以通过其他途径也能实现,这里也进行列举。
锁定计算机:
实现思路模拟系统按键:
void LockComputer()
{
//模拟按下Windows键+L键
keybd_event(0x5B, 0, 0, 0);
keybd_event((unsigned char)'L', 0, 0, 0);
keybd_event((unsigned char)'L', 0, 2, 0);
keybd_event(0x5B, 0, 2, 0);
}
打开运行对话框:
实现思路有两种:
(1) 模拟按下Windows键+R键
void ShowRunDlg() { //模拟按下Windows键+R键 keybd_event(0x5B, 0, 0, 0); keybd_event((unsigned char)'R', 0, 0, 0); keybd_event((unsigned char)'R', 0, 2, 0); keybd_event(0x5B, 0, 2, 0); }
(2) Shell32.dll里有一个未公开的API,无函数名,序号为61,可以显示定制的运行对话框,
字符集要设成Unicode,否则可能会是乱码。
/************************************************************************************** * 函数名称 : ShowMyRunDlg(...) * 功能描述 : 显示定制的运行对话框 * 入 参 : HWND hWndOwner, //所有者窗口句柄 HICON hIcon, //要显示的图标句柄 PTCHAR pszDirectory, //“浏览”按钮的目录,该目录下的文件可省略路径 PTCHAR pszTitle, //窗口标题的文字 PTCHAR pszDescription, //窗口上的文本描述 UINT nFlags //样式 * 出 参 : 无 * 返回值 : -1 失败 0 成功 * 作 者 : 一剑 * 创建日期 : 2012/07/31 * 处理说明 : 显示定制的运行对话框 *************************************************************************************/ BOOL ShowMyRunDlg(HWND hWndOwner, HICON hIcon, PTCHAR pszDirectory, PTCHAR pszTitle, PTCHAR pszDescription, UINT nFlags) { /* 声明未公开的API函数原型,函数名称可任意指定 */ typedef void (CALLBACK *lpfnRunDlg)(HWND, HICON, PTCHAR, PTCHAR, PTCHAR, UINT); HMODULE hModule = LoadLibrary(TEXT("Shell32.dll")); if(hModule != NULL) { lpfnRunDlg RunDlg = (lpfnRunDlg)GetProcAddress(hModule, (LPCSTR)MAKEINTRESOURCE(61)); RunDlg(hWndOwner, hIcon, pszDirectory, pszTitle, pszDescription, nFlags); FreeLibrary(hModule); return TRUE; } return FALSE; }
调用方法示例:
ShowMyRunDlg(hwnd, LoadIcon(hAppInstance, MAKEINTRESOURCE(IDI_MAIN_ICON)), TEXT("C:\\"), TEXT("窗口标题的文字"), TEXT("窗口上的文本描述"), WS_POPUPWINDOW|WS_VISIBLE|WS_CLIPSIBLINGS|WS_DLGFRAME|WS_OVERLAPPED| DS_3DLOOK|DS_FIXEDSYS|DS_SETFONT|DS_MODALFRAME|DS_NOIDLEMSG);
打开系统帮助和支持窗口:
void OpenSysHelp() { //模拟按下Windows键+VK_F1键 keybd_event(0x5B, 0, 0, 0); keybd_event(VK_F1, 0, 0, 0); keybd_event(VK_F1, 0, 2, 0); keybd_event(0x5B, 0, 2, 0); }
打开资源管理器窗口:
void OpenExplorerWnd() { //模拟按下Windows键+E键 keybd_event(0x5B, 0, 0, 0); keybd_event((unsigned char)'E', 0, 0, 0); keybd_event((unsigned char)'E', 0, 2, 0); keybd_event(0x5B, 0, 2, 0); }
打开查找窗口:
void OpenFindWnd() { //模拟按下Windows键+F键 keybd_event(0x5B, 0, 0, 0); keybd_event((unsigned char)'F', 0, 0, 0); keybd_event((unsigned char)'F', 0, 2, 0); keybd_event(0x5B, 0, 2, 0); }
打开辅助工具窗口:
void OpenToolWnd() { //模拟按下Windows键+U键 keybd_event(0x5B, 0, 0, 0); keybd_event((unsigned char)'U', 0, 0, 0); keybd_event((unsigned char)'U', 0, 2, 0); keybd_event(0x5B, 0, 2, 0); }
显示桌面:
void GotoDesktop() { //模拟按下Windows键+D键 keybd_event(0x5B, 0, 0, 0); keybd_event((unsigned char)'D', 0, 0, 0); keybd_event((unsigned char)'D', 0, 2, 0); keybd_event(0x5B, 0, 2, 0); }
附赠“躺尸剑法”口诀:
1、“落泥招大姐,马命风小小。”
2、“哥翁喊上来,是横不敢过。”
3、“闯前门越广,疑尸地上爽。举头亡命也,低头死故乡。”
4、“忽听喷惊风,连山若布逃。”
5、“白日一扇近,长活如海流。鱼穷千里谋,跟上一层楼。”
6、“两个黄梨拧脆了,一行白骆丧今天。”
抛砖引玉,高手莫笑。