【C语言】【windows】---隐藏桌面和任务栏
erbi_lucifer吧
全部回复
仅看楼主
level 10
堕erbi 楼主

一楼度娘……[抖胸]



2012年03月18日 04点03分 1
level 10
堕erbi 楼主

程序名称:隐藏桌面和任务栏
编译器:vs2010(其它也可以……)
程序大小:41K
文件包括:隐藏桌面和任务栏.exe,skinh.she,SkinH.dll,msvcr100.dll
程序界面:

2012年03月18日 05点03分 2
level 10
堕erbi 楼主
2012年03月18日 05点03分 4
level 10
堕erbi 楼主

很简单的小程序,O(∩_∩)O哈哈~。
主要就是:FindWindow和ShowWindow
还有最后的结束全部窗体的选项,话说我使用结束全部窗体,操作系统貌似将其当做关机处理了……
[拍砖]
2012年03月18日 05点03分 5
level 10
堕erbi 楼主

函数原型:
  HWND FindWindow   (
  LPCSTR lpClassName,
 LPCSTR lpWindowName
  );
参数一是窗体类名,参数二是窗体标题。
总的来说是找到指定类名和窗体标题的窗体句柄。
但参数二是NULL时,那就只要符合参数一的所有窗体句柄都可以得到

2012年03月18日 05点03分 6
level 10
堕erbi 楼主

 函数原型:
BOOL ShowWindow(
HWND hWnd,
int nCmdShow
);
用来改变窗体显示状态的函数。
参数一是窗体句柄。
参数二是显示样式。
在这里我们只用到:SW_SHOW (显示) 和SW_HIDE (隐藏)

2012年03月18日 05点03分 7
level 10
堕erbi 楼主

还有就是“结束全部窗口”的选项。需要EnumWindows函数进行窗体枚举,在对每一个窗体发送退出消息。
[揉脸]
函数原型
  BOOL EnumWindows(WNDENUMPROC lpEnumFunc,LPARAM lParam);
  参数:
  lpEnumFunc:指向一个应用程序定义的回调函数指针,即回调函数的函数名。
  lPararm:指定一个传递给回调函数的应用程序定义值(即参数)。
  回调函数原型   BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM lParam);

2012年03月18日 05点03分 8
level 10
堕erbi 楼主

开始代码吧……[鲁拉]
2012年03月18日 05点03分 9
level 10
堕erbi 楼主
/************************************************************************************************************
万年不变主函数
/************************************************************************************************************
int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
SkinH_Attach();//加载当前目录下名为“skinh.she”皮肤
DialogBox(hInstance, MAKEINTRESOURCE(IDDIALOG), NULL, DialogProc);
return 0;
}
2012年03月18日 05点03分 10
level 10
堕erbi 楼主
/************************************************************************************************************
头文件
[打酱油]
/************************************************************************************************************
#include <tchar.h>
#include <Windows.h>
#include "resource.h"
#pragma comment(lib,"SkinH.lib")
extern "C" __dec
lsp
ec(dllimport) int __stdcall SkinH_Attach();

2012年03月18日 05点03分 11
level 10
堕erbi 楼主
/************************************************************************************************************
枚举窗体的回调函数
[傻笑]
/************************************************************************************************************
BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM IParam)//回调函数
{
::PostMessage(hwnd,WM_CLOSE,0,0);//结束窗口
return (true);//返回FALSE时EnumWindows结束,返回true就继续枚举
}

2012年03月18日 05点03分 12
level 10
堕erbi 楼主

/************************************************************************************************************
自定义一个函数,根据传入的参数不同选择不同操作
[臭美]
/************************************************************************************************************
BOOL THEHIDE(HWND hwnd,int i)
{
HWND disk,mask;
disk=FindWindow((LPCWSTR)_T("ProgMan"),NULL);//桌面
mask=FindWindow((LPCWSTR)_T("Shell_TrayWnd"),NULL);//任务栏
if(i==0){
ShowWindow(mask,SW_HIDE);//隐藏任务栏
ShowWindow(disk,SW_HIDE);//隐藏桌面
return TRUE;
}
else if(i==1)
{
ShowWindow(disk,SW_HIDE);//隐藏桌面
return TRUE;
}
else if(i==2)
{
ShowWindow(mask,SW_HIDE);//隐藏任务栏
return TRUE;
}
else if(i==3)
{
EnumWindows(EnumWindowsProc,0);
return TRUE;
}
return FALSE;
}

2012年03月18日 05点03分 13
level 10
堕erbi 楼主

/************************************************************************************************************
消息处理函数
[臭美]
/************************************************************************************************************
INT_PTR CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch(uMsg)
{
case WM_INITDIALOG :
{
//初始化combobox,话说这些可以用一个自定义函数来放,就不用让消息处理函数那么长了……
HWND CONBOBHWND = GetDlgItem(hwndDlg,IDC_COMBO);
SendMessage(CONBOBHWND,CB_INSERTSTRING,0,(LPARAM)_T("隐藏桌面和任务栏"));
SendMessage(CONBOBHWND,CB_INSERTSTRING,1,(LPARAM)_T("隐藏桌面"));
SendMessage(CONBOBHWND,CB_INSERTSTRING,2,(LPARAM)_T("隐藏任务栏"));
SendMessage(CONBOBHWND,CB_INSERTSTRING,3,(LPARAM)_T("结束全部窗口"));
}
break;
2012年03月18日 05点03分 14
level 10
堕erbi 楼主

case WM_COMMAND :
{
switch (wParam)
{
case IDOK :
{
BOOL BOOLzxing;
TCHAR SThide[20]={0};
GetDlgItemText(hwndDlg, IDC_COMBO, SThide, 20);
//根据选择的不同传入不同参数。
if(_tcscmp(SThide,_T("隐藏桌面和任务栏"))==0) BOOLzxing=THEHIDE(hwndDlg,0);
else if (_tcscmp(SThide,_T("隐藏桌面"))==0) BOOLzxing=THEHIDE(hwndDlg,1);
else if (_tcscmp(SThide,_T("隐藏任务栏"))==0) BOOLzxing=THEHIDE(hwndDlg,2);
else if (_tcscmp(SThide,_T("结束全部窗口"))==0) BOOLzxing=THEHIDE(hwndDlg,3);
if(BOOLzxing=FALSE)MessageBox(hwndDlg, _T("error!"), _T("提示"),MB_OKCANCEL);
}
break;
case IDCANCEL:
{
EndDialog(hwndDlg, IDCANCEL);
}
break;
2012年03月18日 05点03分 15
level 10
堕erbi 楼主

case IDC_XS:
{
HWND disk,mask;
disk=FindWindow((LPCWSTR)_T("ProgMan"),NULL);
mask=FindWindow((LPCWSTR)_T("Shell_TrayWnd"),NULL);
ShowWindow(mask,SW_SHOW);//显示
ShowWindow(disk,SW_SHOW);//显示
}
break;
case IDC_ABOUT:
{
MessageBox(hwndDlg,_T("试手的实验程序O(∩_∩)O哈哈~ \n公司:Erbi-lucifer \n作者:【Erbi-lucifer:光影】 \n时间:2012年1月17日18:02:21"),_T("光影软件"),MB_OK);
}
break;
default:break;
}
}
default:break;
}
return 0;
}
2012年03月18日 05点03分 16
level 10
堕erbi 楼主
[打酱油]以上完成……
2012年03月18日 05点03分 17
1