大家好,又见面了,我是你们的朋友全栈君。
在Windows中,句柄是一个系统内部数据结构的引用。例如当你操作一个窗口,或说是一个Delphi窗体时,系统会给你一个该窗口的句柄,系统会通知你:你正在操作142号窗口,就此你的应用程序就能要求系统对142号窗口进行操作——移动窗口、改变窗口大小、把窗口极小化为图标等。实际上许多 Windows API函数把句柄作为它的第一个参数,如GDI(图形设备接口)句柄、菜单句柄、实例句柄、位图句柄等,不仅仅局限于窗口函数。换句话说,句柄是一种内部代码,通过它能引用受系统控制的特殊元素,如窗口、位图、图标、内存块、光标、字体、菜单等。
-
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
-
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
-
Private Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hwnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
-
Private Const WS_EX_LAYERED = &H80000
-
Private Const GWL_EXSTYLE = (-20)
-
Private Const LWA_ALPHA = &H2
-
Private Sub Form_Activate()
-
On Error Resume Next
-
For i = 0 To 150 Step 2.5
-
SetLayeredWindowAttributes Me.hwnd, 0, i, LWA_ALPHA
-
DoEvents
-
Next i
-
End Sub
-
Private Sub Form_load()
-
Dim rtn As Long
-
rtn = GetWindowLong(Me.hwnd, GWL_EXSTYLE)
-
rtn = rtn Or WS_EX_LAYERED
-
SetWindowLong Me.hwnd, GWL_EXSTYLE, rtn
-
SetLayeredWindowAttributes Me.hwnd, 0, 0, LWA_ALPHA
-
End Sub
-
//获取窗口标题
-
[DllImport("user32", SetLastError = true)]
-
public static extern int GetWindowText(
-
IntPtr hWnd,//窗口句柄
-
StringBuilder lpString,//标题
-
int nMaxCount //最大值
-
);
-
//获取类的名字
-
[DllImport("user32.dll")]
-
private static extern int GetClassName(
-
IntPtr hWnd,//句柄
-
StringBuilder lpString, //类名
-
int nMaxCount //最大值
-
);
-
//根据坐标获取窗口句柄
-
[DllImport("user32")]
-
private static extern IntPtr WindowFromPoint(
-
Point Point //坐标
-
);
-
private void timer1_Tick(object sender, EventArgs e)
-
{
-
int x = Cursor.Position.X;
-
int y = Cursor.Position.Y;
-
Point p = new Point(x, y);
-
IntPtr formHandle = WindowFromPoint(p);//得到窗口句柄
-
StringBuilder title = new StringBuilder(256);
-
GetWindowText(formHandle, title, title.Capacity);//得到窗口的标题
-
StringBuilder className = new StringBuilder(256);
-
GetClassName(formHandle, className, className.Capacity);//得到窗口的句柄
-
this.textBox1.Text = title.ToString();
-
this.textBox2.Text = formHandle.ToString();
-
this.textBox3.Text = className.ToString();
-
}
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/158985.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...