Pregunta: | 12983 - COMO ACTIVAR LAS API DE WINDOWS 2000 |
Autor: | mario tapia |
hola amigos:
tengo un problema y necesito ayuda. tengo un programa que quiero instalar en un laboratorio de computadores y me permite controlar el acceso de los usuarios a este laboratorio. funciona de la siguiente manera, los usuarios deben registrarse en un programa que esta en la recepcion del laboratorio y los datos se almacenan en una base de dato en access en la red. mi programa debe verificar en que el usuario que va a utilizar un computador del laboratorio este debidamente registrado y no permita el uso del computador a la persona. mi programa controla o restrinje al usuario para que no haga cosas indevidas, entonces mi programa deja el puntero del mouse que se mueva en una parte especifica, no permite que muevan la ventana del programa, que no ejecuten ctrl+alt+supr u otra combinacion de teclas, mantiene siempre visible la ventana de mi programa y apaga de forma automatica el computador. para esto utilizo api's de windows y lo he probado en windows'98 y funciona, pero en windows 2000 no funciona porque no toma los api's. mi pregunta es como puedo activar o utilizar las api's del windows 2000 para que funcione mi programa?. agradeceria su ayuda lo mas pronto posible. |
Respuesta: | Gaba |
Descaragate de esta direcion el visor deapi.
http://www.allapi.net/agnet/apiguide.php. Trae ejemplos ,explicaciones,relaciones entre las apis,ES MUY BUEO Aqui te dejo un poco de codigo de como apagar el ordenador TRABAJO CON WINDOWS 2000 '''PARA REINICIAR WINDOWS'''''''''' ' Tipos definidos Private Type LUID UsedPart As Long IgnoredForNowHigh32BitPart As Long End Type Private Type TOKEN_PRIVILEGES PrivilegeCount As Long TheLuid As LUID Attributes As Long End Type ' Las constantes Private Const EWX_SHUTDOWN As Long = 1 Private Const EWX_FORCE As Long = 4 Private Const EWX_REBOOT = 2 ' Las funciones del API Private Declare Function ExitWindowsEx Lib "user32" ( _ ByVal dwOptions As Long, ByVal dwReserved As Long) As Long Private Declare Function GetCurrentProcess Lib "kernel32" () As Long Private Declare Function OpenProcessToken Lib "advapi32" _ (ByVal ProcessHandle As Long, ByVal DesiredAccess As Long, _ TokenHandle As Long) As Long Private Declare Function LookupPrivilegeValue Lib "advapi32" Alias "LookupPrivilegeValueA" _ (ByVal lpSystemName As String, ByVal lpName As String, lpLuid As LUID) As Long Private Declare Function AdjustTokenPrivileges Lib "advapi32" _ (ByVal TokenHandle As Long, ByVal DisableAllPrivileges As Long, _ NewState As TOKEN_PRIVILEGES, ByVal BufferLength As Long, _ PreviousState As TOKEN_PRIVILEGES, ReturnLength As Long) As Long Public Sub ReinicializaEquipo() Dim Msg As String ' Beep Msg = "Este programa reiniciará Windows." If MsgBox(Msg & vbCrLf & vbCrLf & "¿Seguro que quieres reiniciar Windows?", 4 + 16 + 256, "¡ ATENCIÓN !") = 6 Then AdjustToken ExitWindowsEx (EWX_SHUTDOWN Or EWX_FORCE Or EWX_REBOOT), &HFFFF End If End Sub Private Sub AdjustToken() Const TOKEN_ADJUST_PRIVILEGES = &H20 Const TOKEN_QUERY = &H8 Const SE_PRIVILEGE_ENABLED = &H2 Dim hdlProcessHandle As Long Dim hdlTokenHandle As Long Dim tmpLuid As LUID Dim tkp As TOKEN_PRIVILEGES Dim tkpNewButIgnored As TOKEN_PRIVILEGES Dim lBufferNeeded As Long hdlProcessHandle = GetCurrentProcess() OpenProcessToken hdlProcessHandle, (TOKEN_ADJUST_PRIVILEGES Or _ TOKEN_QUERY), hdlTokenHandle ' Get the LUID for shutdown privilege. LookupPrivilegeValue "", "SeShutdownPrivilege", tmpLuid tkp.PrivilegeCount = 1 ' One privilege to set tkp.TheLuid = tmpLuid tkp.Attributes = SE_PRIVILEGE_ENABLED ' Enable the shutdown privilege in the access token of this ' process. AdjustTokenPrivileges hdlTokenHandle, False, tkp, _ Len(tkpNewButIgnored), tkpNewButIgnored, lBufferNeeded End Sub |