elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Ayuda con codigo
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con codigo  (Leído 1,571 veces)
mastercss

Desconectado Desconectado

Mensajes: 36


Ver Perfil
Ayuda con codigo
« en: 27 Enero 2010, 01:39 am »

En primer lugar, no sabia si debia crear un post nuevo o volver a postear en el que pedi ayuda con el chat. Agradeceria al admin que me lo aclarara para asi no estorbar. Este codigo lo que quiero que haga es apagar un ordenador de forma remota. He visto que la API ExitWindowsEx se utiliza con una sintaxis especial. Posteo el codigo y comento mejor:

Cliente:

Código
  1. Option Explicit
  2. Private Sub Command1_Click()
  3. Winsock1.RemotePort = 9000
  4. Winsock1.RemoteHost = Text1.Text
  5. Winsock1.Connect
  6. End Sub
  7.  
  8. Private Sub Command2_Click()
  9. Dim apagar As Long
  10. apagar = 1
  11. Winsock1.SendData apagar
  12. End Sub
  13.  
  14.  
  15. Private Sub Command3_Click()
  16. Dim reiniciar As Long
  17. reiniciar = 2
  18. Winsock1.SendData reiniciar
  19. End Sub

Aqui lo que hago es asiganrle el valor 1 a apagar y a reiniciar 2. Por qué? Porque asi con una instruccion condicional en el servidor podre establecer lo que quiero que haga (corrijanme si esto no se puede hacer).

Servidor:
Código
  1. Option Explicit
  2. Const EWX_LOGOFF = 0
  3. Const EWX_SHUTDOWN = 1
  4. Const EWX_REBOOT = 2
  5. Const EWX_FORCE = 4
  6. Private Declare Function ExitWindowsEx& Lib "user32" (ByVal uFlags&, ByVal dwReserved&)
  7.  
  8. Private Sub Form_Load()
  9. Winsock1.LocalPort = 9000
  10. Winsock1.Listen
  11. End Sub
  12. Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
  13. Winsock1.Close
  14. Winsock1.Accept requestID
  15. End Sub
  16. Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
  17. Dim datos As Long
  18. Winsock1.GetData datos
  19. If datos = 1 Then datos = ExitWindowsEx(1, 0&)
  20. If datos = 2 Then datos = ExitWindowsEx(2, 0&)
  21. End Sub
  22.  

EL servidor es sencillo, establezco el puerto de escucha acepto la conexion y recibo los datos. La duda viene a continuación. En el evento DataArrival recibo los datos y les asigno como variable datos, luego estblezco una condición para que dependiendo del valor de la cadena de datos que entre reinicie o apague.
PEro señores el codigo no funciona, compila bien y todo eso pero cunado aprito en apagar x ejemplo no se apaga. No salta ningun error ni nada pero no funciona. Espero me puedan decir cual es el error en el code. Grcias de nuevo.


En línea

BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: Ayuda con codigo
« Respuesta #1 en: 27 Enero 2010, 03:58 am »

en lugar de realizarlo con if then hazlo con select case y pasa como argumento los datos aun proceso o funcion  ajeno a DataArrival del socket resector.

y en lugar de usar la variable de tipo ong para almacenar lo recibido usa string o variant.

Un ejemplo sencillo seria este.

Código
  1.  
  2. Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
  3. Dim datos As string
  4.    Winsock1.GetData datos,vbstring
  5.    call procesarinfo(datos)
  6. End Sub
  7.  
  8. private sub procesarinfo(vdata as string)
  9.    select case vdata
  10.        case "apagarreiniciar cerrarsexiooqueseyo 1"
  11.            ExitWindowsEx(2, 0&)
  12.        case "apagarreiniciar cerrarsexiooqueseyo 2"
  13.            ExitWindowsEx(2, 0&)
  14.        case else
  15.            msgbox "error protocolo"
  16.    end select
  17. end sub
  18.  
  19.  

Nota: otra forma es usar split para decidir en el select case para mas información documentarte sobre esa y otras funciones

Temibles Lunas!¡


En línea

The Dark Shadow is my passion.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines