如何获得某个窗口的设备描述表句柄(VBA里面)

如何获得某个窗口的设备描述表句柄(VBA里面),第1张

1、最常用的获取并释放设备描述表句柄的方法是,在处理WM_PAINT消息时,使用的BeginPaint和EndPaint调用:

hdc = BeginPaint(hwnd,&ps);

//other program lines

EndPaint(hwnd,&ps);

2、Windows程序还可以在处理非WM_PAINT消息时获取设备描述表句柄:

hdc = GetDC(hwnd);

//other program lines

ReleaseDC(hwnd,hdc);

3、Windows程序还可以获取适用于整个窗口(而不仅限于窗口的客户区)的设备描述句柄:

hdc = GetWindowDC(hwnd);

//other program lines

ReleaseDC(hwnd,hdc);

可以如下

Public Sub GetMyIP()

Dim strComputer As String

Dim objWMI As Object

Dim colIP As Object

Dim IP As Object

Dim i As Integer

strComputer = ""

Set objWMI = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set colIP = objWMIExecQuery _

("Select from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")

For Each IP In colIP

If Not IsNull(IPIPAddress) Then

For i = LBound(IPIPAddress) To UBound(IPIPAddress)

MsgBox IPIPAddress(i), vbInformation, IPDescription(i)

Next

End If

Next

MsgBox "Excel版本信息为:" & ApplicationCalculationVersion

MsgBox "Excel当前允许使用的内存为:" & ApplicationMemoryFree

MsgBox "Excel当前已使用的内存为:" & ApplicationMemoryUsed

MsgBox "Excel可以使用的内存为:" & ApplicationMemoryTotal

MsgBox "本机 *** 作系统的名称和版本为:" & ApplicationOperatingSystem

MsgBox "本产品所登记的组织名为:" & ApplicationOrganizationName

MsgBox "当前用户名为:" & ApplicationUserName

MsgBox "当前使用的Excel版本为:" & ApplicationVersion

End Sub

Sub readDriverSN() '读取硬盘各盘符的序列号,并显示在sheet1的A列

Dim myfso As Object

Dim mydrives, mydrive

Dim i As Integer

Set myfso = CreateObject("scriptingfilesystemobject")

Set mydrives = myfsoDrives

For Each mydrive In mydrives

i = i + 1

If mydriveDriveType = 2 Then

Sheet1Cells(i + 12, 1)Value = mydriveDriveLetter & ":" & mydriveSerialNumber

End If

Next

End Sub

得到序列号后,再用你的算法设置动态密码

mac地址和手机型号没有关系,手机型号可以通过下面的代码获取 androidosBuildVERSIONRELEASE获取版本号 androidosBuildMODEL 获取手机型号

基本上有二种方法:1、将属性值传至本地电脑磁盘中,必要时程序根据实体句柄来访问它。2、在建模过程中,将属性值以数据扩展方式或词典扩展方式随文件一起保存,必要时让程序访问它。如果仅开发宏以自用,建议使用第一种方法。如果开发软件,以第二种方法为妥。另外,也可以使用其它方法取得在创建时没有记录属性的实体的信息,如设计院给的体育场桁架设计图是光头光脑的,没有相贯口等结点,也没有任何扩展属性,如果要手动做出相贯口来是十分不便的。

获取键盘信息

2942 获取键盘信息

在VBA中,没有提供获取键盘状态函数。在程序中若需要查询键盘状态,可编写代码调用API函数节器完成。

1.GetKeyState函数

使用该函数可获取键盘锁定键的状态,函数原型如下:

Public Declare Function GetKeyState Lib

"user32" (ByVal nVirtKey As Long) As Integer

参数nVirtKey为需要获取状态的键常数,在VBA中,每个键都有一个对应的常数,例如,CapsLock键的常数为vbKeyCapital。

该函数返回值为一个整型值,如果最低位为1,则表示锁定键是打开的,因此可以使用以下代码来判断:

CBool(GetKeyState(vbKeyCapital) And 1)

将GetKeyState函数的返回值与整数1进行逻辑与运算,来取得返回值的最低位,然后通过CBool函数将其转换为逻辑值,即可得到指定锁定键的状态。

2.GetKeyboardState函数和SetKeyboardState函数

设置锁定键状态需使用GetKeyboardState和SetKeyboardState函数来 *** 作。这两个函数都用一个256字节缓冲区取得或设置256个键设置,在VBA中设置一个有256个元素的字节数组来作为缓冲区,这个数组记录着键盘状态,每个键在数组中的位置由VK_常数决定。

一旦用GetKeyboardState函数取得键盘各键状态并存储到缓冲区中后,即可修改特定的键设置,然后用SetKeyboardState函数存回设置,达到修改键设置的目的。

GetKeyboardState函数可取得键盘上每个虚拟键当前的状态,其函数原型如下:

Declare Function GetKeyboardState

Lib "user32" Alias "GetKeyboardState" _

(pbKeyState As Byte) As Long

参数pbKeyState为具有256个元素的字节数组的第一个项目。

如果函数返回非0表示成功,返回0则表示失败。

SetKeyboardState函数用来设置每个虚拟键当前在键盘上的状态,其声明格式如下:

Declare Function SetKeyboardState Lib

"user32" Alias "SetKeyboardState" _

(lppbKeyState As Byte) As Long

了解设置键盘状态的函数后,就可以在VBA中编写代码,用来设置锁定键的状态。具体步骤如下:

(1)在Excel中按快捷键Alt+F11进入VBE。

(2)单击菜单插入|模块命令,向工程中插入一个模块体。

(3)在模块的声明部分粘贴API函数的定义如下:

Public Declare Function GetKeyState Lib

"user32" (ByVal nVirtKey As Long) As Integer

Public Declare Function GetKeyboardState

Lib "user32" (pbKeyState As Byte) As Long

Public Declare Function SetKeyboardState

Lib "user32" (lppbKeyState As Byte) As Long

(4)编写修改锁定键状态的通用子过程,具体代码如下:

Sub SetKeyState(intVKey As Integer, bState As Boolean) '修改键盘状态

Dim aBuffer(0 To 255) As Byte '定义数组作为缓冲区

GetKeyboardState aBuffer(0) '获取键盘状态放入缓冲区

aBuffer(intVKey) = CByte(Abs(bState)) '在缓冲区修改指定键的状态

SetKeyboardState aBuffer(0) '使用缓冲区修改键的状态

End Sub

程序中使用数组的第一个元素作为参数传递给两个API函数,由于数组在VBA中是连续存放的,所以API函数通过第一个元素的地址就可访问到后面的所有元素。

(5)有了通用函数SetKeyState,就可以很方便地编写修改锁定键状态的代码了。例如,以下代码可修改CapsLock键的状态(在大小写之间相互切换):

Sub ModiCapsLock() '大写锁定

If CBool(GetKeyState(vbKeyCapital) And 1)

Then '获取CapsLock原来的状态

SetKeyState vbKeyCapital, False '关闭

Else

SetKeyState vbKeyCapital, True '打开

End If

End Sub

程序首先使用GetKeyState函数查询CapsLock原来的状态,再将其状态进行切换(即如果原来是打开的,就将其关闭;如果原来是关闭的,就将其打开)。

以上就是关于如何获得某个窗口的设备描述表句柄(VBA里面)全部的内容,包括:如何获得某个窗口的设备描述表句柄(VBA里面)、VBA是否可以获得当前计算机IP地址和计算机名、怎样用VBA根据硬件序列号设置动态密码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9501094.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存