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ú

Mensajes - yovaninu

#101
te transcribo lo que dice msdn

El  + (Operador, Visual Basic) tiene la finalidad principal de sumar dos números. Sin
embargo, también puede concatenar operandos numéricos con operandos de cadena. El operador + tiene un conjunto complejo de reglas que determinan si se debe sumar, concatenar, señalar un error del compilador o producir una excepción  InvalidCastException en tiempo de ejecución.

El & (Operador, Visual Basic) sólo se define para operandos de tipo String y siempre amplía sus operandos a String, independientemente de la configuración de Option Strict. El operador & está recomendado para la concatenación de cadenas, porque está definido exclusivamente para cadenas y reduce las posibilidades de generar una conversión no deseada.
#102
a manera de aporte te sugiero que para concatenar las cadenas uses el simbolo "&"(ampersand) y no el signo mas.
#103
yo no entiendo por que aquellos usuarios cosntantes de este foro dicen las cosas por su nombre, lo que el quiere es un EDITOR DEL SERVER, un elemento comun de la figura clasica de un troyano (CLIENTE, SERVIDOR Y EDITOR DEL SERVER), y codigo de eso hay hasta por montones... pero solo sugiero que las cosas se llamen por su nombre no se vayan a molestar.

Un saludo.
#104
Cita de: p0ckæ en  4 Agosto 2009, 13:29 PM
Si se puede. Eso existe y ya se ha implementado.

Éxitos con tu proyecto :)
si tuvieras alguna referencia o alguna pagina en donde se hable de esto, te lo agradeceré mucho
#105
Buenas, queria consultar lo siguiente y desde ya gracias por sus respuestas, resulta que  tuve una idea y no se que tan imposible sera de llevarla a cabo, es posible que en un monitor de una PC o en un visor especial pueda ver las posiciones de otra persona, cosa, objeto, auto o lo que sea pero solo dentro de mi ciudad????

explico una de las posibles aplicaciones: aqui en mi ciudad por ejemplo hay vehiculos de transporte urbano, las personas los esperan en determinados paraderos, pero como nadie es exacto en la hora pues algunas personas esperan mucho, lo que yo desearia es que en un monitor se pueda ver en que calle o cuadra se encuentra el carro que una persona espera, algo asi como una consulta, seria muy bonito que en un mapa de toda la ciudad (por ejemplo de google maps) se vean puntos moviendose que indiquen en donde esta ese carro o esa persona etc... que uno desea consultar... en mi ignorancia pienso que se puede instalar una antena muy alta (en uno de los montes altos de mi ciudad) para que pueda ser usado como un satelite, luego se enviarian señales y a traves de una triangulacion poder ubicar a ese carro auto o persona que tendria un dispositivo que devuela su ubicacion, algo asi como un radar o GPS... bueno no se que tan loca sea mi idea o si los expertos de este foro me pueden decir si se puede o no hacer y de ser asi que es lo que necesitaria...

Gracias y un saludo.
#106
Citar
Código (vb) [Seleccionar]
Private Sub Command1_Click()
wsk.SendData "<<-envia-capt->>"
imag3n = "encendido"
End Sub



de preferencia usa un booleano para el flag que indicara la recepcion del A R C H I V O de la imagen, por que a las finales es solo eso un archivo.

Citar
Código (vb) [Seleccionar]
ordenimgenv = InStr(1, orden, "<<-envia-capt->>")
[/quote]
usa split, es mas comodo, no deberias liarte mucho con InSTR


[quote]
[code=vb]Private Sub Capturar_Guardar()
Dim rutaimg As String
MsgBox "cogiendo captura"
rutaimg = Environ$("homedrive") & "\cap.bmp"
If Dir(rutaimg) <> "" Then Kill rutaimg
Clipboard.Clear ' limpiar clipboard
Call keybd_event(44, 2, 0, 0) ' apretar impr pant
DoEvents
If Clipboard.GetFormat(vbCFBitmap) Then SavePicture Clipboard.GetData(vbCFBitmap), rutaimg ' si es bmp guarda en system
If Dir(rutaimg) <> "" Then
wsk.SendData ">>|Archivo|<<" & FileLen(rutaimg)
MsgBox "envie los datos"
End If
End Sub

Citar
te recomiendo que uses otro metodo para capturar la pantalla y no usando la tecla print screen, en vez de ello puedes usar la API bitblt y al respecto encontraras muchas info en el tio google ademas de ser tambien mucho mas cómodo.


Citar
Código (vb) [Seleccionar]

If imag3n = "encendido" Then
    MsgBox "entra a coger tamaño"
        wsk.GetData vData, vbString
        MsgBox vData
        averiarc = InStr(1, vData, ">>|Archivo|<<")
        If averiarc = 0 Then
            imag3n = "noencendido"
            lBytes = 0
            vData = Split(vData, ">>|Archivo|<<")
            lFileSize = vData(1)
            MsgBox "tamaño: " & vData(1)
            ' Le enviamos como mensaje al cliente que comienze el envio del archivo
            wsk.SendData "<<--envia-datos-->>"
           
            'Creamos un archivo en modo binario
            Open rutaimg For Binary Access Write As #1



mira me parece mucho lio, la cosa es simple una vez que el servidor empieza a enviar los datos del archivo (cuando en el cliente el flag este a true), tu lo vas recibendo y acumulando en una variable, luego si el tamaño de dicha variable es igual al tamaño que mas antes recibiste entonces es recien ahi donde creas el archivo y dentro escribes toda la variable (archivo)


Citar
Código (vb) [Seleccionar]
Private Sub enviar_img()
Dim imagen As String
Dim Size As Long
Dim arrData() As Byte

imagen = Environ$("homedrive") & "\cap.bmp"

Open imagen For Binary Access Read As #1 ' abrimos la captura

Size = LOF(1) ' obtenemos el tamaño de la captura
ReDim arrData(Size - 1) ' redimensionamos la variable
Get #1, , arrData ' le pasamos todo a la variable
Close

wsk.SendData arrData
End Sub

ademas no hay necesidad de pasar la imagen a un array, tu solo declara una variable string asi:

Dim DatosArchivo As String

y en esa variable sacas el contenido de la imagen, y es todo.


Suerte con tu capturador, y solo se trata de un archivo mas comun y corriente, saludos.[/code]
#107
Cita de: 50l3r en 23 Julio 2009, 15:30 PM
Cliente ordena a servidor que realize la captura
Servidor realiza la captura y manda el tamaño
El cliente recoge el tamaño y manda un mensaje para que envie los datos
El cliente manda los datos

Citar
El cliente manda los datos
Parece que ahi debio ser "Servidor envia los datos"

y a modo de sugerencia puedo decirte los sgte en cuanto a tus capturas:

  • Definitivamente tienes que pasar el BMP a JPG, usando por ejemplo el GDI Plus, en la red hay una clase para basic que usa esas APIS y esta listo para usar
  • Para acelerar la transferencia de la captura, tambien puedes convertirla a escala de grises, de ese modo el archivo ademas de estar en JPG, esta en solo 2 colores (blanco y negro) por lo que se consigue una disminucion entre el 25 y 30% del tamaño original
  • Para reducir mas aun el tiempo de transferencia y el tamaño del archivo puedes "ESCALAR"  la captura, este metodo me ha dado resultados extraordinarios pues una captura de toda la pantalla me ha llegado a pesar 1KB (Un KB), por supuesto que es una captura muy pequeña, de 20x20 pixeles por ejemplo, pero se entiende muy bien pudiendo aumentar el zoom pero sin sobrepasarse en el tamaño, un buen escalado a 8x o 9x en donde se ve casi todo no pasa de los 20 o 25KB y eso es muy muy aceptable para transferirlo
  • Pero hay mas, puedes trozear la captura, es decir que solo mandes a capturar una zona de la pantalla a determinada resolucion, a determinado tamaño, e incluso covertido a escala de grises y escalado, con lo que consigues, buenas capturas, nitidas y de menor tamaño, para una facil transferencia
  • y esta por ultimo el metodo que aun no lo tengo en mi troyanin, el que consiste en pasar toda la captura a un array y verificar los cambios respecto a otra captura, una escena en donde solo se enviarian los bytes que cambiaron... eso ya es para una verdadera captura en tiempo real... hubo alguien por aqui que emprendio dicho trabajo pero sino me equivoco lo abandono


Citar
dim devu as string
wsk.getdata devu


ya que todo el troyano consta de envio de strings, ahora se me presenta la siguiente complicacion, si el devu no es byte, los datos no se recibien bien y si es byte los strings no se reciben bien
La transferencia de archivos se hace a puro "strings", y no solo de archivos sino de cualquier cosa... si "devu" es string, no hay ningun problema, tu captura se recibira sin problemas en esa variable, claro que hay que estar acumulando cada vez que el servidor vaya enviando el archivo de la captura.
Citar
con esto quiero decir que si no defino la variable, para variant no funciona
Particularmente no uso nunca el tipo variant




#108
Cita de: The_Shakah en 26 Junio 2009, 23:58 PM
Esto es un poco alimentar al troll pero igual te voy a contestar:

Nada mas decir que no estoy equivocado, el code funciona con winsocks y no funciona con CSocket y la razón la puse muy claro en el post, ya sé cual es la razón y de hecho le mande un mail en inglés al creador de CSocket informandole sobre el bug.

Esto no es por desprestigiar al CSocket, de hecho me parece una excelentísima herramienta, pero ese bug existe, existe.


PD: Si tu code de transferir archivos funciona es porque es diferente al mío, el mío transfería todo de una, el tuyo seguramente va transfiriendo el archivo de a pedazos, como dijo BlackZeroX, al transferirlo de a pedazos el código funciona perfectamente con CSocketMaster, pero si uno lo transfiere todo junto, pues no funciona (con Winsock sí funciona).

Mira me da igual si respondes o no, no acostumbro iniciar una discusion sin sentido pero francamente tu terquedad e ignorancia merecen que te responda, pero no lo hare en un sentido de pelea mas bien en un sentido orientativo, y muy a pesar de que te conteste como diciendo que yo tambien podria estar equivocado, vienes y me faltas el respeto sin siquiera ver mis anteriores post. Aprende a contestar.

A proposito que es lo que te contestaron sobre tu supuesto informe de bug a cerca del CS??? aunque no lo publicaste pero imagino la respuesta, y por respeto no lo escribo aqui.

Que tu code deja de funcionar cuando lo "mandas todo"  y funciona cuando lo mandas de a pedazos???... integramente equivocado, entonces como es que funciona el mio por ambos metodos????... pero vayamos a un poco de teoria... Asumo que tu CS esta con el protocolo TCP/IP... como es que no te has informado a cerca de este protocolo???, simplemente el TCP/IP  "parte" todo lo que tiene que enviar en pequeños paquetes para poder transferirlo, es decir con tan solo usar TCP/IP ya estas enviando de a pedazos, eso lo hace un nivel X del modelo OSI (que supongo que sabes de que se trata)... y en ese aspecto tanto el Winsock como el CS funcionan perfectamente (excepto que estes bajo UDP, y aunque hace lo mismo que TCP no espera confirmacion).. Entonces si te pones a programar para que lo mande de pedazos, es decir que tu mismo programa haga el trabajo del TCP entonces estamos haciendo doble trabajo que en casos de archivos grandes es bastante util y a veces vital... osea divides manualmente lo que quieres enviar y aun asi tanto el Winsock como CS tambien re-dividaran lo que tu has dividido si es que tienen que hacerlo... y en esos casos tambien el OCX y la clase funcionaran perfectamente... es mas yo tengo al CS funcionando bajo TCP para que transfiera un archivo "mandandolo todo" (el TCP se encargara de dividirlo) y para que transfiera por pedazos (programacion manual) para casos de archivos de mas de 50 100 o 500MB o hasta 1GB o mas GB's y te insisto que en ambos casos funciona perfectamente... por que te creas "señores papis" de los que esperas una confirmacion???... ten en cuenta un poco nuestra experiencia que de ello algo tambien estaras aprendiendo.

Un saludo y no te ofendas por nada.
#109
Cita de: The_Shakah en 26 Junio 2009, 05:15 AM
Esto funciona perfectamente con Winsock, pero no así con CSocketMaster. En las normas dice que uno se limite a decir que lo que pasa, sin dar opiniones de cual cree uno que es el problema, pero si me lo permiten, creo que el problema pasa porque CSocketMaster intenta enviar todo el archivo de una, y el resultado es que envía solo 8kb aprox del total del archivo, el Winsock, en cambio, lo va enviando de a partes, de esto me doy cuenta porque el evento Data_Arrival es llamado una y otra vez con la Winsock.ocx, y en el CSocketMaster solo es llamado una vez, escribe 8kbs aprox. y nunca más sucede nada más.

Estoy casi seguro que ese es el problema, pero no tengo idea de como tengo que hacer para solucionarlo ¿Alguna ayuda?

Quizás puedan recomendarme alguna otra class para imitar al Winsock que no sea CSocket...

No no, me parece que estas equivocado,  tanto el Winsock como el CSocketMaster funcionan muy igual, no he revisado al milimetro tu code pero estoy muy seguro (salvo equivocacion universal mia) que el Csocket funciona tan igual que el Winsock, asi que si con uno funciona con el otro tambien, te lo digo por experiencia y nunca he tenido problemas ni con la Clase ni con el OCX y menos con la transferencia de archivos... deja de pensar que el CSocketMaster es menos que el OCX, nada de eso es tan o mas poderoso que Winsock.

Un saludo.
#110
Aqui les dejo un pequeño Spliter para sus proyectos, lo hize ya que lo necesitaba para mi proyecto y pues me parecio buena idea compartirlo con vosotros, sé que hay muchos en la red y obviamente mejores que éste pero se que a alguien le interesara el code para a partir de alli mejorarlo y/o completarlo.

El spliter que les comparto es uno horizontal, es decir derecha-izquierda, falta aun el vertical  y espero que alguien lo haga y lo comparta tambien, sino ya lo posteo cuando lo termine,.

En el ejemplo estoy redimensionando 2 Text (Text1 y Text2) y como Delimitador estoy usando un Label, claro que podria usar otros controles.

Es importante que la propiedad MousePointer del control que actuara como Delimitador este a (9 - Size WE) para que se vea mejor y un poco mas intuitivo.

Aqui va un ejemplo del diseño:


El control Label que es el Delimitador tiene como Nombre LBLDelim y este es su codigo:
Código (vb) [Seleccionar]

Private Sub LBLDelim_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
MOVER = True
End Sub

Private Sub LBLDelim_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If MOVER = True Then
    LBLDelim.Left = LBLDelim.Left + X
    SpliterWiz Text1, Text2, LBLDelim
End If
End Sub

Private Sub LBLDelim_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
MOVER = False
End Sub

MOVER ponerlo como Boolean en General

Mientras que el Sub que se encarga del redimensionado es:
Código (vb) [Seleccionar]

Sub SpliterWiz(ControlI As Control, ControlD As Control, Delimitador As Control)
    On Error GoTo ErrorSpliter
    Dim a1 As Integer, a2 As Integer, d As Integer
    ControlI.Width = Delimitador.Left - ControlI.Left
    a1 = ControlD.Left
    ControlD.Left = Delimitador.Left + Delimitador.Width
    a2 = ControlD.Left
   
    If a1 > a2 Then
     d = a1 - a2
     ControlD.Width = ControlD.Width + d
    Else
     d = a2 - a1
     ControlD.Width = ControlD.Width - d
    End If
ErrorSpliter:
End Sub


Presionar F5 y arrastar el Label, los cuadros de texto se redimensionaran.

A la espera del Vertical

Un saludo.