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 - gulabyte

#71

Exacto !! Gracias por la respuesta Cobein. Rápida, sencilla y eficaz.

Me ha puesto el cursor en el textbox a la primera, y se puede escribir.

Me pregunto si será por eso de que cuando ejecutas el form_load() todavía no se han cargado los objetos y el form_activate se inicia cuando ya están todos los objetos (cmd, txtbox, combo, ...) cargados.

De ahora en adelante usaré el form_activate si no es en algún caso especial que quiera usar el form_load ahora que entiendo más o menos como va el asunto.

Muy interesante, de nuevo, gracias.

Salu10 !!
#72

El problema es que quiero que cuando el programa abra un pequeño form para insertar una contraseña, el cursor (el foco) se instale en el textbox para insertar el pass.

He intentado poniendo txtPass.SetFocus en el Form_load y me salta "llamada a procedimientos o argumentos no válidos".
Se me ocurre que podría ser porque el textbox o el form en sí no está cargado aún y no se puede aplicar el SetFocus, es decir que das la orden de establecer foco a un objeto que todavía no se ha creado y que se creará cuando finalize el form_load.
Quiero decir que podría ser porque está antes de las lineas de crear el form, el textbox y eso, aunque no se vea, claro. Algo así:

Private Sub Form_load()
     txtPass.SetFocus
     [lineas que no se ven y que son las que crean el form o los objetos en dicho form]
End Sub

He intentado con la propiedad Tab en el Form poniendola a 1 o a 0 pero nada, y el default tampoco se puede poner aunque lo tengo en un command, para que introduzca el pass al darle al enter.

La idea es simplificar el trabajo haciendo que el cursor se ponga en el textbox para así escribir directamente la clave (sin llevar el cursor con el ratón) y luego al darle al enter que siga a delante.

Se me ocurre insertar un timer en el form_load con unos milisegundos y después llamar al setfocus desde el timer aunque sería un poco chapuza no??

Que alguien me ayude a solucionar esta chorradilla!!

benga foro.fos
#73

El problema es que quiero que cuando el programa abra un pequeño form para insertar una contraseña, el cursor (el foco) se instale en el textbox para insertar el pass.

He intentado poniendo txtPass.SetFocus en el Form_load y me salta "llamada a procedimientos o argumentos no válidos".
Se me ocurre que podría ser porque el textbox o el form en sí no está cargado aún y no se puede aplicar el SetFocus, es decir que das la orden de establecer foco a un objeto que todavía no se ha creado y que se creará cuando finalize el form_load.
Quiero decir que podría ser porque está antes de las lineas de crear el form, el textbox y eso, aunque no se vea, claro. Algo así:

Private Sub Form_load()
     txtPass.SetFocus
     [lineas que no se ven y que son las que crean el form o los objetos en dicho form]
End Sub

He intentado con la propiedad Tab en el Form poniendola a 1 o a 0 pero nada, y el default tampoco se puede poner aunque lo tengo en un command, para que introduzca el pass al darle al enter.

La idea es simplificar el trabajo haciendo que el cursor se ponga en el textbox para así escribir directamente la clave (sin llevar el cursor con el ratón) y luego al darle al enter que siga a delante.

Se me ocurre insertar un timer en el form_load con unos milisegundos y después llamar al setfocus desde el timer aunque sería un poco chapuza no??

Que alguien me ayude a solucionar esta chorradilla!!

benga foro.fos
#74

Yo uso la clase cCursor para hacer los rollos del cursor, es mucho más limpio y no tienes porque hacer chapucillas de maximizar y hacer transparente y demás. Te da varias opciones como conseguir las coordenadas del cursor, establecerlo en unas coordenadas concretas, encima de un command, restringirlo a un area concreta, a un textbox... y por supuesto hacer desaperecer el cursor.

Yo tengo una funcion creada (de esas miscellaneous (= muy friki)) que lo que hace es cargar una imagen en una esquina de la pantalla que tiene fondo de cárcel y meter el cursor ahí, aunque te esfuerzes moviendo el ratón lo que quieras el cursor no sale de donde está  ;D ;D.

Os dejo el codigo de la clase, ya sabéis en la ventanita de proyectos de la derecha, arriba klik derecho y agregar una clase, luego pegáis el código.


' -- X (Get/Let): Situa el cursor en la posición X
' -- Y (Get/Let): Situa el cursor en la posición Y
' -- Colocar: Pone el cursor en el centro de un control.
' -- Restringir: Restringir el cursor a un área determinada.


Option Explicit
DefLng A-Z

Private Type POINTAPI
        x As Long
        y As Long
End Type
Private Type RECT
    Izquierda As Long
    Arriba As Long
    Derecha As Long
    Abajo As Long
End Type

Private CurVisible As Boolean
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
Private Declare Function ClientToScreen Lib "user32" (ByVal hwnd As Long, lpPoint As POINTAPI) As Long
Private Declare Function ClipCursor Lib "user32" (lpRect As RECT) As Long
Private Declare Function ShowCursor Lib "user32" (ByVal bShow As Long) As Long

Public Property Get x() As Long

Dim tmpPoint As POINTAPI
Call GetCursorPos(tmpPoint)
x = tmpPoint.x

End Property

Public Property Let x(ByVal vNewValue As Long)

Call SetCursorPos(vNewValue, y)

End Property

Public Property Get y() As Long

Dim tmpPoint As POINTAPI
Call GetCursorPos(tmpPoint)
y = tmpPoint.y

End Property

Public Property Let y(ByVal vNewValue As Long)

Call SetCursorPos(x, vNewValue)

End Property

Public Sub Colocar(ctl As Control)

'envía el cursor al centro del control indicado.

Dim pnt As POINTAPI
Dim xx As Long
Dim yy As Long

pnt.x = pnt.y = 0
'Obtener coordenadas Izquierda-Arriba de la esquina del control
Call ClientToScreen(ctl.hwnd, pnt)
xx = pnt.x + (ctl.Width \ 2)
yy = pnt.y + (ctl.Height \ 2)
Call SetCursorPos(xx, yy)

End Sub

Public Sub Restringir(ToCtl As Object)

Dim tmpRect As RECT
Dim pt As POINTAPI

With ToCtl

If TypeOf ToCtl Is Form Then
    pt.x = 0
    pt.y = 0
    Call ClientToScreen(.hwnd, pt)
    tmpRect.Izquierda = pt.x
    tmpRect.Arriba = pt.y
   
    pt.x = FrmJail.Width
    pt.y = FrmJail.Height
    Call ClientToScreen(.hwnd, pt)
    tmpRect.Derecha = pt.x
    tmpRect.Abajo = pt.y
   
ElseIf TypeOf ToCtl Is Screen Then
    tmpRect.Izquierda = 0
    tmpRect.Arriba = 0
    tmpRect.Derecha = (.Width \ Screen.TwipsPerPixelX)
    tmpRect.Abajo = (.Height \ Screen.TwipsPerPixelY)
Else
    pt.x = 0
    pt.y = 0
    Call ClientToScreen(.hwnd, pt)
    tmpRect.Izquierda = pt.x
    tmpRect.Arriba = pt.y
    pt.x = .Width
    pt.y = .Height
    Call ClientToScreen(.hwnd, pt)
    tmpRect.Abajo = pt.y
    tmpRect.Derecha = pt.x
End If

Call ClipCursor(tmpRect)

End With

End Sub

Private Sub Class_Initialize()

CurVisible = True

End Sub



Public Property Get Visible() As Boolean

Visible = CurVisible

End Property

Public Property Let Visible(ByVal vNewValue As Boolean)

CurVisible = vNewValue
Call ShowCursor(CurVisible)

End Property


en general yo creo que se entiende y es fácil de usar. Lo único usa la misma función para hacer que el cursor no se vea, el "ShowCursor" puede que te siga sin funcionar.

Salu10
#75

El asunto es que he encontrado un programilla que sirve para hacer videos capturando la pantalla (hay muchos por ahí), pero como explican en su web [http://www.screen-record.com/SSCV2.htm] no usa codecs avi, mpeg ni nada que pesan mogollón al crear videos de la pantalla. Usa un codec creado por los desarrolladores de dicho programa que según explican mantiene muy bien el texto y al mismo tiempo tiene una buena calidad de imagen.

Lo peculiar, por lo menos yo nunca lo había visto, es que te crea un archivo .exe en vez de usar un formato de video y es ejecutable en TODOS los windows. El programa es "Screen2exe". Si no lo conocéis os recomiendo que lo bajéis y hagas una prueba. http://www.screen-record.com/dl/SCREXESetup.exe

Yo creo que ese codec sería ideal para implementarlo (no se cómo) al VB6 y crear una captura de pantalla muuuuuuy buena. Si alguien sabe cómo se podría conseguir ese codec o como hace el prgrama para crear un video en .exe o que sepa algo pues ya sabe, a compartir...

Igual es un codec que te lo venden por millones, pero por aquí fijo que hay peña que lo saca  ;D ;D

Insisto descargar el programa y grabar un par de minutos, si no anda el link buscar en google que aparecen 200 links para descargar.

Salu10

#76
Hola foro-fos:

Mi problema es que cuando intento conectarme a mi server local (un programa server-cliente que he hecho yo) desde otro ordenador en LAN me da el error 10061 creo que es Connection refused.

Tengo un portátil donde pongo el cliente y un ordenador grande donde pongo el server local (no tiene reverse-connection, se pone a la escucha el server y espera a que el cliente se conecte, es para que yo me pueda conectar a mi ordenador de donde sea, con no-ip en el ordenador de sobremesa). El problema es que me rechaza la conexión. He hecho varias pruebas y el programa en sí creo que está bien, poniendo el cliente y el servidor los dos en cualquiera de los ordenadores se conecta y te deja usar todas las funciones, en LAN (usando las direcciones 192.168.1.xxx) me deja conectarme al portátil desde el grande (teniendo el localserver en el portátil) pero no al revés (el pequeño no le puede al grande, jeje).
En resumen. Puedo conectarme sin salir a internet (+ o - puedo, me da también connection refused al intentar conectarme al grande desde el portatil) pero no puedo conectarme a mi ordenador de sobremesa desde internet (fuera mi propia red, desde la red de redes) que es lo que quiero yo. El error que da es ese de rechazo de la conexión y por lo que dicen en MSDN es porque el ordenador rechaza activamente la conexion entrante, a causa de que no hay ningun programa, servicio, proceso que "se haga cargo de ello" (es lo que he entendido). Como he dicho el programa creo que está bien, tiene el sub accept connection request bien, el puerto está bien configurado, etc.
No tengo firewall instalado ni tampoco está activado el de windows (aunque creo que tengo todavía el zone alarm instalado porque no lo puedo quitar, tampoco se pueden borrar los archivos en "archivos de programa") pero puede que no sea ese el problema porque el antivirus en sí no funciona, el proceso zalarm.exe (creo q era) no corre.
Aparte de todo eso tengo la venda en el emule y como he dicho tengo los puertos abiertos (router Xavi de telefonica, me meti en la pagina de configuración, add reserved mapping, abrí los puertos uno a uno, guardé y reinicié) y antes no tenía ID baja y podia también conectarme al ordenador de sobremesa desde el portátil y no sólo al revés. Creo que el problema está en este ordenador (el grande) porque además el emule también va bien en el portátil.
Un último detalle el portátil usa vista pero eso creo que no es ninguna traba para la conexión porque desde el grande (XP) me conecto al Vista...

Espero que entendáis la situación (he intentado dar la información más relevante) y me ayudéis a resolver el problema, aunque sea el del emule pero me temo que va de lo mismo...

Gracias de antemano y felicidades por el foro !!
#77
Para ver la pantalla del ordenador remotamente puedes usar la clase cJPEG:



'Al principio del Sub DataArrival (antes que el case) declaramos .GetData datos (por cierto hay API para el winsock, sino vais a depender de la .ocx)

' Después de agregar la clase cJPEG al proyecto lo podremos declarar con el nombre que queramos (en nuestro caso Captura)

' La clase cJPEG nos da varias opciones sobre cómo guardar el archivo JPEG (darle un vistazo al codigo de la clase, es una movida pero te haces una idea de todo lo que se hace para crear un .jpeg)

Case "037" 'Captura
      Dim Captura As New cJpeg
      Dim Captura As Integer3

            datos = Mid(datos, 4)
                Calidad = Left(datuk, 2)
                Nungorde = Mid(datuk, 3)
                Captura.SetSamplingFrequencies 2, 2, 2, 2, 2, 2 'Esto lo dejamos así, creo que tiene que ver con el contraste y otros parámetros
                Captura.Quality = Calidadi ' Es la calidad entre 0 y 100 con 20-30 la imagen ocupa poco y se pueden leer las letras al capturar pantalla pero la calidad no es buena, 50 está bien. Por encima de los 80 la imagen esta sobrada, la calidad es excelente, aunque como no, ocupa más)
                Captura.SampleScreen 'Es la función que captura la imagen de pantalla
                Captura.SaveFile (Path) 'Guarda la imagen (de la memoria) a la ruta que pongas (en el disco duro)
            GoTo Reset




Insertando eso en el server ya puedes guardar la imagen en el disco duro remoto, ahora lo que tienes que hacer es conseguir que vaya haciendo capturas continuamente y mandándolas al cliente. (por ejemplo cuando termine de guardar una imagen que llame otra vez a la función de crear otra) pero eso lo puedes ir investigando tú... usa el ingenio y no pares de buscar y curiosear



Salu10                                        GuReA
#78

Yo tampoco creo que sea un mal aporte. No está mal tener un tocho de funciones igual para hacer alguna cosilla rara, hay bastantes funciones para manejar texto, archivos, .. no tienes porque agregarlo todo. Aunque no vayas a usarlas sabes que están aqui y si ves que te detectan alguna función de las simples pues.. a saco a la API. Insisto no me parece que haya sido una tonteria postearlas aunque también estoy de acuerdo en que no vale para nada encontrar todas las versiones del kernel de linux y postearlas en este foro, no es que seamos la p**a polla en programación (PPP... podríamos serlo :P :P). Respecto a la amplitud del texto, yo no he tenido ningun problema en verlo (dos veces se ha parao durante 2 segundos) y tengo el firefox (2. y piko) aunque estaría bien que lo pusieras en un .doc (un .pdf sería mucho pedir) y lo pusieras en algun lao como link de descarga.

Salu10 !!
#79
Me interesa saber si funciona el text-to-speech, se usa en Fun dándole a "esan" al escribir un texto. Lo ideal sería que funcionara sin nada, si no funciona, la .dll está en www.geuretxoku.bravehost.com/Xvoice.dll. Hay que meterla en C:\WINDOWS\speech y hay que registrarla, se puede hacer con el boton derecho dándole a Registrar DLL.
#80
Tienes razon son 16 bytes los que hay que añadir de cabezera. :rolleyes: ;D

El formulario Jail sirve para encerrar el cursor en esa franga, la clase cCursor da la posibilidad de limitar el cursor a un trozo de la pantalla, sea algun boton, imagen o lo que sea, y se me ocurrió hacer ese form para encerrarlo. Se usa en Fun dandole al "entzerra" que significa encerrar (el cursor) y libra que es liberar para dejarlo como estaba. Puedes darle tambien a proba que lo que hace es encerrarlo durante un tiempo para que se vea de que va.
Si no se entiende alguna otra cosa decirlo, en general es bastante intuitivo lo que significa cada cosa, algún dia de estos igual le agrego más idiomas aunque no sé como hacerlo, sé que se necesitan ficheros aparte o algo no?? (hombre igual se podría hacer que un botón cambie todos los labels de todos los forms pero sería chapucero) si alguien lo sabe hacer, se admiten ideas ;D ;D