您的位置: 首页-> 电脑文摘-> 数据库类-> PowerBuilder-> 正文

用PB实现Windows2000下的自动关机
作者佚名 来源InterNet 加入时间:2005-1-31
在Windows2000中关机与在Windows98中不一样,需要首先获得权限,然后调用关机API函数,才能关机。以下是具体的步骤:

第一步: 声明结构
-----------------------------------------------------------------------

需要声明三个结:LUID, LUID_AND_ATTRIBUTES, token_privileges

LUID

long  lowpart
long  highpart




LUID_AND_ATTRIBUTES

luid  pLuid
long  Attributes




token_privileges

long  privilegecount
luid_and_attributes  privileges[]



第二步: 声明外部扩展函数
-----------------------------------------------------------------------

FUNCTION ulong ExitWindowsEx(ulong uFlags,ulong dwReserved) LIBRARY "user32.dll"
FUNCTION ulong GetCurrentProcess() LIBRARY "kernel32.dll"
FUNCTION ulong LookupPrivilegeValue(ref string lpSystemName,ref string lpName,ref Luid lpLuid) LIBRARY "advapi32.dll" ALIAS FOR "LookupPrivilegeValueA"
FUNCTION ulong AdjustTokenPrivileges(ulong TokenHandle,boolean DisableAllPrivileges,ref TOKEN_PRIVILEGES NewState,ulong BufferLength,ref TOKEN_PRIVILEGES PreviousState,ref ulong ReturnLength) LIBRARY "advapi32.dll"
FUNCTION ulong OpenProcessToken(ulong ProcessHandle,ulong DesiredAccess,ref ulong TokenHandle) LIBRARY "advapi32.dll"



第三步: 程序脚本

-----------------------------------------------------------------------

/*获得关机权限*/

string ls_lpSystemName,ls_lpName
ls_lpname='SeShutdownPrivilege'
ulong  lu_hdlProcessHandle,lu_hdlTokenHandle,lu_lBufferNeeded
luid lst_tmpLuid
TOKEN_PRIVILEGES lst_tkp
TOKEN_PRIVILEGES lst_tkpNewButIgnored
lu_hdlProcessHandle = GetCurrentProcess()
OpenProcessToken(lu_hdlProcessHandle,40, lu_hdlTokenHandle)
LookupPrivilegeValue( ls_lpSystemName, ls_lpname, lst_tmpLuid)
lst_tkp.PrivilegeCount = 1
lst_tkp.Privileges[1].pLuid = lst_tmpLuid
lst_tkp.Privileges[1].Attributes = 2
AdjustTokenPrivileges(lu_hdlTokenHandle, False, lst_tkp,16, lst_tkpNewButIgnored,lu_lBufferNeeded)


/*关机*/

ExitWindowsEx (9,0)


/* The End */


[文章录入员:nancy]

相关文章
  • 如何在PB中制作特殊形状数据窗口或按钮
  • PB和EAServer共筑多层应用架构
  • PB中的数据窗口自动刷新技术
  • PB中读取地磅BCD解码
  • PB通过OLEObject使用Word
  • PB动态报表格式自由定义的实现
  • 为PB的TreeView实现同步选择
  • 如何用pb实现MSACCESS数据库的图片字段存取
  • 在PB中应用灵活多样的排序
  • 在PB中如何使用Microsoft Outlook发送邮件
  • 相关软件:
    ::PCBOOKCN'ADS::


    ::PowerBuilder::
    ACCESS
    MS SQL
    MySQL
    Oracle
    Foxpro
    PowerBuilder
    Sybase
    其它
    ::阅读排行::
    ·浅析PowerBuilder下动...
    ·PowerBuilder连接Sy...
    ·用Powerbuilder开发W...
    ·在powerbuilder中向E...
    ·PB中读取地磅BCD解码
    ·PB通过OLEObject使用W...
    ·在PowerBuilder中操作...
    ·PB动态报表格式自由定义的实现
    ·PB开发Sybase数据库应用技...
    ·如何在PB中制作特殊形状数据窗口...