Me han encomendado la tarea de escribir un programa en Visual Basic que sea capaz de apagar las PC remotamente. Yo he usado la API ExitWindowsEx de Windows 98 y la InitiateSystemShutdown de NT, pero las máquinas que tengo que apagar tienen Windows XP. ¿Alguno me podría decir qué API de XP puede apagar remotamente la PC?
Muchas Gracias.
;D Vas Bien, recuerdo que yo lo logre con la Api ExitWindowsEx pero era una maquina windows 2000, es que hay distintas combinaciones, no se creo que para apagarla le das el valor &01, &00, no recuerdo bien como era el valor, pero se que es algo asi si no es esa es esta &00,&01, prueba combiando :huh: Saludos xD
de3clras est funcion
Private Declare Function ExitWindowsEx& Lib "user32" (ByVal uFlags&, ByVal dwReserved&)
despeus para apagar pones asi
en un boton podes poner cualkieira de estas 3 lineas,. que acen cosas distintas
apagar el ekipo:
i = ExitWindowsEx(1, 0&)
reinicia la sesion
i = ExitWindowsEx(0, 0&)
reinicia el ekipo
i = ExitWindowsEx(2, 0&)
la variavle i es una vriable cualkiera
espero te sirva
suerte
El MaRo!
Gracias por responderme: En efecto probé esta nueva manera de usar la API ExitWindowsEx. Use está sentencia
i = ExitWindowsEx(&O0, &O1)
pero lo más que he logrado es que el sistema termine la sesión. No he logrado que se apague la máquina. He probado diferentes combinaciones de los parámetros, pero aun así lo único que he logrado es que finalice la sesión. Saben de alguna otra combinación?
Gracias.
yo cuando trastee con esa api, creo recordar que lo máximo que hace es cerrar la sesion...
para poder apagar tiene que conseguir privilegios si no, no se puede.
;D Salu2, WarGhost
Saludos:
Sé que debo tener privilegios y los tengo yo soy el administrador.
prueba con un:
shell "shutdown -s -t"
Dim WS as object
set WS=CreateObject("WScript.Shell")
WS.run "Shutdown -s" o 'cualquier otro argumento, esto avisa sobre la operacion. Para WinXP
Te paso el Codigo Cliente_Servidor si queres, es muy facil.
Esto es lo que debería estar en la maquina a ser apagada.
Hola.
Gracias por el consejo Castord, y sí te agradecería mucho que me pases el código Cliente - Servidor.
Gracias
Vaya, he probado lo que me dijiste Castord y aun así está máquina no quiere apagarse.
Wenas noxes, weno aki dejo el source de un programa "Power Manager", ami si me funcionaba en XP, eso si luego tu ya seleccionas el codigo que kieras y lo pones en la aplicacion.
http://www.geocities.com/vbalmacen/Power.zip <-- Fichero con el codigo completo del programa.
Espero que te sirva de ayuda xd.
Un saludo
Aca un Vdd Codigo fuente... se puede adaptar a los winsock para hacerlo remotamente... ;D sin embargo eso ya va por tu cuenta...!¡
Descargar (http://www.elguruprogramador.com.ar/libreria_de_codigo/download.asp?id=291)
P.D.:::> Hace 1.3 años que no ingreso al foro xd. No posteen source o .zip vacios... >:( que lo tradusco como fraude...
Haber si esto te sirve.
Servidor.
Private Declare Function ExitWindowsEx& Lib "user32" (ByVal uFlags&, ByVal dwReserved&)
Private Sub Form_Load()
Winsock1.LocalPort = "9898"
Winsock1.Listen
End Sub
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
Winsock1.Close
Winsock1.Accept requestID
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim datos As String
Winsock1.GetData datos
End Sub
Cliente.
Private Declare Function ExitWindowsEx& Lib "user32" (ByVal uFlags&, ByVal dwReserved&)
Private Sub Command1_Click()
i = ExitWindowsEx(1, 0&)
Winsock1.SendData i
End Sub
Private Sub Command2_Click()
i = ExitWindowsEx(0, 0&)
Winsock1.SendData i
End Sub
Private Sub Command3_Click()
i = ExitWindowsEx(2, 0&)
Winsock1.SendData i
End Sub
Private Sub Form_Load()
Winsock1.RemotePort = "9898"
Winsock1.RemoteHost = "localhost" 'aca le colocas la ip a la que te quieras conectar sino lo dejas como esta
Winsock1.Connect
End Sub
'Primero ejecutas el Servidor para que quede a la escucha luego ejecutas el cliente. Suerte
Muy bueno este ultimo codigo :D
me enseño una cosa muy importante :D
Salu2
Ranslsad
Pues a mi lo unico que me enseña es que trabaja con cliente y servidor en el mismo pc, y que ni siquiera se ha montado una red en una maquina virtual para probarlo.
Estudia el codigo que ofrece y luego me cuentas loque te enseño
Salu2
Gracias al comenario pesado anterior, te doy esto si te va a servir:
Cliente:
Una caja de texto 2 botones y un control Winsock en el formulario.
la caja de texto es para introducir la Ip
1 boton que se llame Conectar
el otro boton que se llame Apagar
codigo Cliente:
Private Sub Apagar_Click()
Winsock1.SendData Apagar
End Sub
Private Sub Conectar_Click()
Winsock1.RemoteHost = Text1.Text
Winsock1.RemotePort = "9797"
Winsock1.Connect
End Sub
Servidor:
*******
Private Declare Function ExitWindowsEx& Lib "user32" (ByVal uFlags&, ByVal dwReserved&)
Private Sub Form_Load()
Winsock1.LocalPort = "9797"
Winsock1.Listen
End Sub
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
Winsock1.Close
Winsock1.Accept requestID
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim datos As String
Winsock1.GetData datos
datos = ExitWindowsEx(1, 0&) 'Apaga el equipo
End Sub
Cualquier cosa que no entiendas del codigo me preguntas Suerte saludos.
CitarGracias al comenario pesado anterior
????¿ así se llama cuando te demuestran que tu código es erroneo?
darwal44 , no preguntes,muevete despacio , no llames la atención, de lo contrario n3ts4mura1 volverá a contestar...y te inculcará todas sus dudas como si fuesen certezas.
n3ts4mura1
Citar
Private Sub Apagar_Click()
Winsock1.SendData Apagar
End Sub
¿Apagar? , que es ¿una palabra magica?
A que no pruebas....¿Enciendete?
Private Sub Apagar_Click()
Winsock1.SendData Enciendete
End Sub
:o :o :o :o :o...¿tambien se apaga? lastima ...CONCLUSION:no es una palabra mágica. ¿Eso nos hace replantearnos todo el codigo otra vez , por un "comenario pesado"?
Si te ayudan , es de biennacidos devolver la ayuda, por ese lado es de loar tu interes en ayudar n3ts4mura1, pero tambien uno ha de ser consciente de que segun sus conocimientos en vez de ayudar puede perjudicar en mayor medida, a quien pregunta.por ello mi consejo;de los que ya se que no te importan, es que si vas a ayudar estes seguro de que controlas el tema sobre el que respondes, pero bueno , tu mismo
Relajate compadre solo trato de ayudar .
Tranquilo, ya no me veras hacer ningun comentario sobre tus posts.Suerte.
Salu2
Pero es que te pones como una fiera compadre se que me equivoque pero perdon tambien me equivoco y saludos no tengo nada en contra tuyo aca todos queremos aprender cuidate y paz.
Tranquilos muchachos. Gracias por los ejemplos y los comentarios, si alguno de ellos no funciona simplemente me daré cuenta de ello cuando pruebe el código. No creo que nadie tenga mala intención.
Probaré los códigos de que me han enviado y además con WinSock. Cuando logre escribir el código que realice lo que quiero lo publicaré para todos con la certeza de que sí funciona.
Gracias.
Cita de: rse en 11 Agosto 2006, 22:04 PM
Wenas noxes, weno aki dejo el source de un programa "Power Manager", ami si me funcionaba en XP, eso si luego tu ya seleccionas el codigo que kieras y lo pones en la aplicacion.
http://www.geocities.com/vbalmacen/Power.zip <-- Fichero con el codigo completo del programa.
Espero que te sirva de ayuda xd.
Un saludo
NO PIERDAN SU TIEMPO, EL ARCHIVO CONTIENE ERRORES
Cita de: darwal44 en 16 Agosto 2006, 16:10 PM
Tranquilos muchachos. Gracias por los ejemplos y los comentarios, si alguno de ellos no funciona simplemente me daré cuenta de ello cuando pruebe el código. No creo que nadie tenga mala intención.
Probaré los códigos de que me han enviado y además con WinSock. Cuando logre escribir el código que realice lo que quiero lo publicaré para todos con la certeza de que sí funciona.
Gracias.
QUE PARTIDA DE POBRES DIABLOS, A TODOS LOS PATEÓ UN SIMPLE CÓDIGO PARA APAGAR UNA PC REMOTAMENTE; QUE PENA SIENTO POR VOZ
Digo...
Tekorei ha ijarhel lo mita ko'ape. Anivena