本文目录一览:
vc++高手进,自动伸缩窗口
在《黑客防线》抄来的,希望能解决你的问题 新建一个基于对话框的MFC程序,命名为 *** HideWnd,在对话框属性的styles页把border改为Resizing,你也可同时把Entended styles 的 tool window 钩上,对于这点我在程序了动态修改了。在 *** HideWndDlg.h头文件添加以下成员函数:protected:
//修正移动时窗口的大小
void FixMoving(UINT fwSide, LPRECT pRect);
//从收缩状态显示窗口
void DoShow();
//从显示状态收缩窗口
void DoHide();
//重载函数,只是为了方便调用,实际调用CWnd的SetWindowPos(…)
BOOL SetWindowPos(const CWnd* pWndInsertAfter,LPCRECT pCRect, UINT nFlags = SWP_SHOWWINDOW);继续添加成员变量:private::BOOL m_isSizeChanged;//窗口大小是否改变了
BOOL m_isSetTimer;//是否设置了检测鼠标的Timer
INTm_oldWndHeight;//旧的窗口宽度INTm_taskBarHeight;//任务栏高度INTm_edgeHeight;//边缘高度
INTm_edgeWidth;//边缘宽度
INTm_hideMode;//隐藏模式
BOOL m_hsFinished;//隐藏或显示过程是否完成
BOOL m_hiding;//该参数只有在!m_hsFinished才有效
//真:正在隐藏,假:正在显示增加消息响应,需要注意的是有些消息你只有把右下角的 Filter for message设置为window才能看到。WM_ NCHITTEST
WM_MOVING
WM_CREATE
WM_TIMER然后来到对应的cpp文件,在头部定义一些宏://收缩模式#define HM_NONE0//不收缩
#define HM_TOP1//向上收缩
#define HM_BOTTOM2//向下收缩
#define HM_LEFT3//向左收缩
#define HM_RIGHT4//向右收缩
#define CM_ELAPSE200 //检测鼠标是否离开窗口的时间间隔
#define HS_ELAPSE5//伸缩过程每步的时间间隔
#define HS_STEPS10//伸缩过程分成多少步完成
#define INTERVAL20//触发粘附时鼠标与屏幕边界的最小间隔,单位为象素
#define INFALTE10//触发收缩时鼠标与窗口边界的最小间隔,单位为象素然后在构造函数初始化成员变量:m_isSizeChanged = FALSE;
m_isSetTimer = FALSE;m_hsFinished = TRUE;
m_hiding = FALSE;m_oldWndHeight = MINCY;
m_taskBarHeight = 30;
m_edgeHeight = 0;
m_edgeWidth=0;
m_hideMode = HM_NONE;完成了一些初始的工作,那么就开始进入关键的函数实现了。首先是在OnCreate做些窗口的初始化和获得一些系统信息。
【代码一】int C *** HideWndDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialog::OnCreate(lpCreateStruct) == -1)
return -1; // TODO: Add your specialized creation code here//获得任务栏高度
CWnd* p;
p = this-FindWindow("Shell_TrayWnd",NULL);
if(p != NULL)
{
CRect tRect;
p-GetWindowRect(tRect);
m_taskBarHeight = tRect.Height();
}//修改风格使得他不在任务栏显示
ModifyStyleEx(WS_EX_APPWINDOW, WS_EX_TOOLWINDOW);
//去掉关闭按键(如果想画3个按键的话)
//ModifyStyle(WS_SY *** ENU,NULL);//获得边缘高度和宽度
m_edgeHeight = GetSystemMetrics( *** _CYEDGE);
m_edgeWidth = GetSystemMetrics( *** _CXFRAME);return 0;
}接着如何知道鼠标进入或移出窗口呢?在前面我已经证明了WM_MOUSEMOVE和WM_MOUSELEAVE不符合我们的要求,于是我用了WM_ NCHITTEST这个消息,你可以看到我在这个消息响应函数中用了两个SetTimer,一个用于检测鼠标是否离开,一个用于伸缩过程,不管你喜欢不喜欢,要达到第7点和第11点,这个是必须的,考虑的效率问题,在不需要的时候关闭这些Timer就好了。
【代码二】UINT C *** HideWndDlg::OnNcHitTest(CPoint point)
{
// TODO: Add your message handler code here and/or call default
CString str;
str.Format("Mouse (%d,%d)",point.x,point.y);
GetDlgItem(IDC_CURSOR)-SetWindowText(str);
if(m_hideMode != HM_NONE !m_isSetTimer
//防止鼠标超出屏幕右边时向右边收缩造成闪烁
point.x GetSystemMetrics( *** _CXSCREEN) + INFALTE)
{ //鼠标进入时,如果是从收缩状态到显示状态则开启Timer
SetTimer(1,CM_ELAPSE,NULL);
m_isSetTimer = TRUE; m_hsFinished = FALSE;
m_hiding = FALSE;
SetTimer(2,HS_ELAPSE,NULL); //开启显示过程
}
return CDialog::OnNcHitTest(point);
}然后在OnTimer中
【代码三】void C *** HideWndDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
if(nIDEvent == 1 )
{
POINT curPos;
GetCursorPos(curPos); CString str;
str.Format("Timer On(%d,%d)",curPos.x,curPos.y);
GetDlgItem(IDC_TIMER)-SetWindowText(str);CRect tRect;
//获取此时窗口大小
GetWindowRect(tRect);
//膨胀tRect,以达到鼠标离开窗口边沿一定距离才触发事件
tRect.InflateRect(INFALTE,INFALTE); if(!tRect.PtInRect(curPos)) //如果鼠标离开了这个区域
{
KillTimer(1); //关闭检测鼠标Timer
m_isSetTimer = FALSE;
GetDlgItem(IDC_TIMER)-SetWindowText("Timer Off");m_hsFinished = FALSE;
m_hiding = TRUE;
SetTimer(2,HS_ELAPSE,NULL); //开启收缩过程
}
}if(nIDEvent == 2)
{
if(m_hsFinished) //如果收缩或显示过程完毕则关闭Timer
KillTimer(2);
else
m_hiding ? DoHide() : DoShow();
}
CDialog::OnTimer(nIDEvent);
}暂时不管OnTimer中的DoHide(); DoShow();
如何用VC++编写盗号木马
老一套的 *** 服务端和客户端,服务端连接客户端,或者服务端打开监听端口客户端连接,这用到其他方面的知识,比如TCP/IP协议和套接字之类的,你首先要搞懂它们是怎么通信的,基本都用到SOCK函数,bind()绑定,listen()监听,accept()连接,send()发生,recv()接受等等。。。。。。首先你要让客户端和服务端连接起来,然后客户端就可以向服务端发送命令了,比如键盘记录,捕获桌面,查找文件,关机重启等很多坏事,具体用三言两语很难说得透,有本书叫(黑客编程vc专辑2009),是黑客防线出的, *** 很多人叫卖。里面很多例子应该你都适用,感觉你还是编程新手,你还是学学基础吧,先把 *** 协议搞懂,再就是再WINDOWS或者其他平台编程的机制,多认识些函数的使用 *** 那样你就容易上过手了,还是那句话:很多事情不是一早一夕的。
黑客防线 2009 黑客编程vc专辑
这本书真的不太好找,当初我也找了很久。
光盘没有,只有书籍,我上传到了我的csdn里面(这个论坛资料很多的)。你去注册一个下载吧。共8部分,最后一部分收了5分,我的劳苦费~~~你注册就会给你分的。
就是这个。