(2)调用的关闭计算机的程序代码如下:
Private Sub closeclient()
Dim hProcessHandle As Long
Dim hTokenHandle As Long
Dim tmpLuid As LUID
Dim tkpNew As TOKEN_PRIVILEGES
Dim tkpPrevious As TOKEN_PRIVILEGES
Dim lBufferNeeded As Long
'获取当前进程的一个伪句柄
hProcessHandle = GetCurrentProcess()
OpenProcessToken hProcessHandle, TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY, hTokenHandle
LookupPrivilegeValue "", "SeShutdownPrivilege", tmpLuid' 获取 LUID 关闭权限
tkpNew.PrivilegeCount = 1 ' 设置权限
tkpNew.TheLuid = tmpLuid
tkpNew.Attributes = SE_PRIVILEGE_ENABLED
lBufferNeeded = 0' 使关闭程序标识有效
'允许当前应用程序有关闭操作系统的权限
AdjustTokenPrivileges hTokenHandle, False, tkpNew, Len(tkpPrevious), tkpPrevious, lBufferNeeded
ExitWindowsEx EWX_FORCE Or EWX_POWEROFF, 0
End Sub
将上述关机代码写入每个需要控制的客户端计算机当中,就可以关闭计算机了。图3图4分别为多媒体网络集中管理系统的服务器端与客户端主界面:
图3 服务器端控制软件
图4 客户端控制软件
四、结语
本文所阐述的只是多媒体网络控制系统中的几个关键技术,唤醒程序是在VB.NET 2003版中实现的控制台应用程序;关机程序是在VB.6.0中实现的。整个多媒体网络集中管理系统在实际运行中效果很好、各项功能都能实现。
参考文献
[1]欧阳均.基于远程控制的多媒体教室的设计与实现[J].温州大学学报,2007,8:56~58
[2]如何远程唤醒计算机[EB/OL] http://www.tjcz.com/Article/Catalog13/105.html 2005-9-7
[3]彭建业,王海峰.基于VB的计算机远程关机的设计与实现[J].现代电子技术,2007,11:85~86
[4]曹衍龙.Visual Basic 系统开发实例精粹[M].北京:人民邮电出版社,2005,8:358~357
[5]崔彦峰,银华强等编著. Visual Basic.NET网络编程[M]. 北京:清华大学出版社2004:311~314
|