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

#1
Programación Visual Basic / duda sobre Timer
10 Noviembre 2006, 11:30 AM
Hola quisiera saber en que medida puede afectar uno o varios timer con un intervalo cortisimo, corriendo en un ordenador. QUiero decir que por ejemplo si hago una aplicacion, que ejecute algo con una combinacion de teclas, primero deberia añadirlo al registro para que se ejecute al entrar a windows, luego deberia usar una api, que se ejecutable en un intervalo de tiempo  para que compruebe continuamente que teclas se estan presionando y en caso de ser x ejemplo ALT+X ejecute lo que yo quiera. Es muy tipico en programas. Entonces mi pregunta es si la forma de hacerlo esta, osea un timer y la api, o ahi otra forma de hacerlo, y si este sistema de esta comprobando continuamente, a tiempos inferiores a 1 segundos logicamente, puede afectar la estabilidad del ordenador, ya incluso ablando de varios timers haciendo la misma funcion.
Gracias y saludos!
#2
Programación Visual Basic / Tabstrip
20 Octubre 2006, 12:52 PM
Hola estoy trabajando con el control TabStrip, y he leido que la forma de trabajar es creando controles que contengan otros controles, tipo PictureBox o frame, y segun la pestaña que se cliquee, digamos que muestre el frame que le corresponda con sus correspondientes controles dentro de cada frame. El problema es que he creado un tabstrip  de 6 pestañas, y el tamaño no de pantalla entera, pero digamos que casi la mitad de la resolucion de mi pantalla. Entonces ahora lo que no se de que manera puedo trabajar en modo de diseño, el diseño de los 6 frames esos, pues no me entran todos en la pantallas, y no puedo montar unos con otros pq es un jaleo y me ha pasado de meter un frame como contenedor d otro y este a su vez contenedor de otro. Entonces no se si es que la forma de trabajar con un tabstrip no es asi o que porque no se que hacer para poder mostrar esas  6 ventanas pinchando en las pestañas.. GGracias saludos
#3
Programación Visual Basic / comprimir imagen
19 Octubre 2006, 11:39 AM
Hola estoy buscando la manera de comprirmir una imagen a jpg. El tema es que capturo la pantalla mediante una api y la puedo guardar, como bmp , pero quiero saber una manera
para guardarla como jpg y reducir su tamaño. Como lo puedo hacer? he leido algo acerca de modulos pero no he visto ninguo para VB6. Gracias y saludos.
#4
Hola, es es un codigo que trata de hacer lo siguiente:
Cada tres segundos cambia la imagen de fondo del formulario aleatoriamente entre 6 imagenes. Si pasas el raton por encima del formulario, el formulario se mueve por la pantalla para que no puedas cogerlo. Si le pulsas a la X para cerrarlo, abre un nuevo formulario igual. Y todo va bien hasta aqui. Cuando pulso la X si abre un nuevo formulario, pero yo quiero que el nuevo formulario siga con las propiedades del inicial, y en el primero se ven las fotos cambiando, y al pinchar en la X y en las sucesivas vece que se pinchen se abren nuevos formularios, pero en estos formularios no se cargan las fotos. Osea solo el primero funciona bien y aunque luego se abre el formuliario en este no aparecen fotos ni nada.
Este es el codigo, gracias:
Dim ancho As Integer
Dim alto As Integer
Dim altornd As Integer
Dim anchornd As Integer
Dim ventana() As Form
Dim j As Byte
Private Sub Form_Load()
cambia
alto = Screen.Height
ancho = Screen.Width
altornd = calculo(alto)
anchornd = calculo(ancho)
If altornd > alto - Form1.Height Then
altornd = alto - Form1.Height
End If
If anchornd > ancho - Form1.Width Then
anchornd = ancho - Form1.Width
ElseIf anchornd < Form1.Width Then
anchornd = 0
End If
Form1.Top = altornd
Form1.Left = anchornd
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
alto = Screen.Height
ancho = Screen.Width
altornd = calculo(alto)
anchornd = calculo(ancho)
If altornd > alto - Form1.Height Then
altornd = alto - Form1.Height
End If
If anchornd > ancho - Form1.Width Then
anchornd = ancho - Form1.Width
ElseIf anchornd < Form1.Width Then
anchornd = 0
End If
Form1.Top = altornd
Form1.Left = anchornd
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
If UnloadMode = 0 Then 'Significa que se ha cerrado con la X:
    i = i + 1
ReDim Preserve ventana(1 To i)
Set ventana(i) = New Form1
ventana(i).Show
    Cancel = 1
End If
End Sub
Public Function calculo(valor)
calculo = Int(Rnd * valor)
End Function
Private Sub cambia()
j = Rnd * 6
Select Case j
Case 1
Form1.Picture = Image1.Picture
Case 2
Form1.Picture = Image2.Picture
Case 3
Form1.Picture = Image3.Picture
Case 4
Form1.Picture = Image4.Picture
Case 5
Form1.Picture = Image5.Picture
Case 6
Form1.Picture = Image6.Picture
End Select
End Sub
Private Sub Timer1_Timer()
cambia
End Sub


#5
Hola, quedria saber primero, como se pueden cambiar los botones de maximizar, minizar y cancel, y tambien y mas importante, si se puede cambiar el evento, por ejemplo de pinchar la X y que no cierre el formulario si no que invoque otro procedimiento distinto. Gracias y saludos!
#6
Hola, quedria saber como meter el contenido de una imagen que ya forma parte de la propiedad picture de un control image en una variable, para luego poder cargarla en otros controles imagen. Yo he exo asi:
img = image1.picture
image2.picture = img
y no funciona
no se si es por el tipo de declaracion de la variable o porque pero no puedo hacerlo. Existe el controlimage o algo asi que sirve para crear como una librerias de imagenes, y me srviria, pero ya me puesto a pensar porque de esta manera no puedo y no se porque es.
Gracias y saludos!
#7
Hola, con shell puedo ejecutar archivos indicandole la ruta
pero se puede ejecutar un comando de dos, como x ejemplo
hacer que se ejecute:
assoc .tela=exefile
algo asi como si fuera batch, pero mediante visual.
saludos y gracias
#8
Hola, dos problemas con formularios mdi.
Como puedo hacer que nada mas abrir la aplicacion, solo aparezca el formulario padre, y ningun hijo? Es que resulta que yo entro a un proyecto nuevo y x defecto ya se genera un form. Luego agrego el MDi y le pongo al form1 (x ejemplo) la mdichild a true. Y ya esta. Si creo mas formulario hijos  y ejecuto, solo se me ve el primero. Y no soy capaz de quitarlo para que entre solo el Padre y no se carge ningun hijo hasta k se le diga. He probado a descargarlo en el form1_load, a ponerlo no visible... pero nada, si ago eso aparentenmente no carga ni el padre ni el hijo. Es curioso que si pongo un boton en el hijo que clickeando ejecute un unload me, ahhi si se keda solo el hijo, pero kisiera saber
komo entrar ya a la aplicacion sin mas formulario que el MDI.
Otra cosa. Crear una instancia de un formulario... he leido un tutorial pero no me entero. Es por ejemplo para que en el MDI tenga un menu, con una opcion d nuevo x ejemplo, y que cada vez que le pulse, me kree una instancia de un formulario que yo tenga creado... osea seria como abrir distintas sesiones d trabajo d un mismo formulario. COmo lo puedo hacer pq lo que he leido no me ha quedado muy claro.
Gracias y saludos!
#9
Despues d mucho leer sobre las APIs, sigo sin saber nada. Porque el tema es... el uso de las APIs se resume en copiar y pegar de alguien uque te las pase?. O tiene su logica y se puede saber esta. Quiero decir, como se puede si quiera empezar a investigar algo de las APIs. Ya he se como se declaran y tal, pero luego, he visto que tambien se declaran constantes y tal. COmo se que constantes ahi que declarar, y lo mas importante casi, como se puede buscar una API si yo se que existe pero no se como se declara, ni si quiera el significado de los argumentos que se le pasa. De ahi que me plante si es mas facil buscar, copiar y pegar, o se puede intentar saber mas. Pues he visto el Api Viewver, pero es lo que digo, podria coger una declaracion pero luego ya no sabria que mas hacer. Osea busco consejo de la gente, que que es lo que suele hacer y como suele trabajar con las APIs.
Gracias. S2.

#10
Hola, quedria saber si en visual basic se produce algun evento cuando la maquina esta realizando una accion y aprovecharlo pues para hacer cualquier cosa, como cambiar el icono al reloj de arena etc. O si no se produce ningun evento como hacerlo. Pongamos por caso, que tengo un boton, y con ese boton abro un archivo asi.
open cd.filename for binary as #1
file = len(cd.filename)
get #1, , file
close #1
bien pues esto si escojo un archivo grande, el formulario en cuestion se queda el rato que esta trabajando digamos que casi bloqueado, osea la sensacion visual que da es que sa quedado pillado aunque no es asi. Y eso quisiera saber si en este momento se produce algun evento o como podria hacer para que el formulario se quedase intacto (dado que si cargas el archivo con un common dialog al abrirlo digamos k no se actualiza completamente el formulario de abajo mientras inicia la carga), y eso para que quede el formulario bien, o poner que se cambie el icono, o incluso una barra de prgreso mientras carga, etc. Gracias y saludos.
#11
Hola 2 dudas con winsock. Primero, copie un simple ejemplo en otro ordenador que no hacia casi nada, solo que emplee Winsock y no iba pq faltaba el archivo MSWINSCK.ocx en el ordenador donde lo ejecute. Supongo que puedo copiarlo yo si quiero, pero si se lo tengo que mandar a alguien, tipo troyano, que puedo hacer?. Ahi alguna manera de incluir eso en el exe y que lo instale??.
Otra cosa, he echo unas pruebas de conexion CLIENTE/SERVIDOR con winsock tb y el problema es que creo el ejecutable del servidor y del cliente. Lo ejectuo desde el exe ambos y tal y todo bien. Cierro los programas y me doy cuenta que los programas despues de cerrarlos se quedan en memoria. Pq? yo creo que es por que ha abierto los puertos y tal pero no se como hacer para que se cierren y quede todo limpio. Los codigos empleados:
Cliente

Private Sub cmdconectar_Click()
ws.RemoteHost = cmdip.Text
ws.RemotePort = 2001
ws.Close
ws.Connect
Timer1.Interval = 3000
End Sub

Private Sub cmddesconectar_Click()
ws.Close
End Sub

Private Sub cmdenviar_Click()
If ws.State = 7 Then
ws.SendData (txtenviar.Text)
Else
rpt = MsgBox("DEBE ESTAR CONECTADO PRIMERO", vbOKOnly + vbCritical)
End If
End Sub

Private Sub cmdsalir_Click()
End

End Sub

Private Sub Timer1_Timer()
If Not ws.State = 7 Then
ws.Close
ws.Connect
lblestado.Caption = "NO CONECTADO"
Else
End If
If ws.State = 7 Then
lblestado.Caption = "CONECTADO"
Else
End If
End Sub


Servidor:

Private Sub Form_Load()
Form1.Visible = True
ws.LocalPort = "2001"
ws.Close
ws.Listen
End Sub

Private Sub Timer1_Timer()
If Not ws.State = 7 Then
ws.Close
ws.Listen
End If
End Sub

Private Sub ws_Close()
ws.Close
rpt = MsgBox("CONEXION PERDIDA", vbOKOnly)
End Sub

Private Sub ws_ConnectionRequest(ByVal requestID As Long)
ws.Close
ws.Accept requestID
rpt = MsgBox("CONEXION ESTABLECIDA", vbOKOnly)
End Sub

Private Sub ws_DataArrival(ByVal bytesTotal As Long)
Dim datos As String
ws.GetData datos
rpt = MsgBox(datos, vbOKOnly)
End Sub



Gracias y saludos.
#12
Hola, mi objetivo es hacer una pequeña aplicacion que funcione entre 2 ordenadores por internet y se puedan enviar y recibir archivos. He empleado para ello winsock, pero no me funciona y no se pq. No se si es pq quiza la idea de cliente/servidor para esto es errornea, pues quiza esto que digo seria mas como cliente/cliente, pues se trataria de hacer un ejecutable, el mismo para ambos ordenadores, y realmente me pierdo porque creo que ninguno deberia trabajar como cliente ni servidor... si no a lo mucho ambos como cliente. Pero no me funciona  y no se si es pq no se puede hacer mediante winsock o es que lo ago mal. Entonces aber si me podeis ayudar o guiarme o decirme si es que necesito hacerlo con otro control distinto a winsock, que parece mas encaminado a eso, cliente servidor, osea el cliente hace una peticion y el servidor la devuelve si puede...

Private Sub cmdconectar_Click()
On Error Resume Next
ws.RemoteHost = "10.0.0.3" 'meter al ip buena
ws.RemotePort = 2001
ws.Close
ws.Connect
If Not ws.State = 7 Then
ws.Close
ws.LocalPort = "2001"
ws.Close
ws.Listen
Label1.Caption = "ESCUCHANDO"
End If


End Sub

Private Sub cmdenviar_Click()
ws.SendData txttexto.Text
End Sub

Private Sub Form_Load()
nombre = InputBox("Introduce tu nombre de sesion:", "Bienvenido...")
If nombre = 1 Then
RemoteHost = "10.0.0.3"
ElseIf nombre = 2 Then
RemoteHost = "10.0.0.3"
End If
Form1.Caption = nombre & RemoteHost
End Sub

Private Sub Timer1_Timer()
If Not ws.State = 7 Then
ws.Close
ws.Connect
End If

End Sub

Private Sub ws_ConnectionRequest(ByVal requestID As Long)
ws.Close
ws.Accept (requestID)
Label1.Caption = "CONECTADO"

End Sub

Private Sub ws_DataArrival(ByVal bytesTotal As Long)
Dim datos As String
ws.GetData datos
rpt = MsgBox(datos, vbOKOnly)
End Sub




Explico lo que he exo, no se si lo abre dejado con algo raro pq ya de tantas pruebas no se.
Primero cuando carga el formulario pregunta un nombre. Por defecto he puesto 1 y 2 como respuestas para asignar una Ip a la que se conectara. Mas que nada de momento he exo eso para ver si podia yo hacer las pruebas en mi propio ordenador y asignando la misma IP. He puesto la misma IP pq haciendo pruebas anteriroes con Winsock vi que podia hacer un cliente y un servidor y desde mi propio ordenador conectarme del cliente al servidor, entonces deduje que aqui tb podria usar la misma IP. Bien a continuacion abria en el formulario un boton cmdconectar que lo que hace es lo siguiente: Primero trata de conectarse a la ip y al puerto que le digo. Entonces comprueba el estado de la conexion y si es no conectado, lo que hace es que se queda a la espera, osea a la escucha, para ello abre el puerto y se mantiene a la espera. De tal manera, que si abro otra vez la misma instancia del exe, y le doy a conectar, al estar el otro a la escucha en el puerto, pues esta vez la primera parte del codigo funcionaria y se conectaria. Luego esta el procedimiento de que acepta la conexion, y como digo parece que todo va bien, pero es que el problema que veo es que es como si todo fuera en un sentido , y no en los dos, pq solo el procedimiento de DataArrival se produce en uno de los prograamas. Bien luego tengo un texbox donde se pondria el texto a enviar y un boton de enviar. Ademas deun label que dice el estado de la conexion. Entonces escribo en el textbox y de momento antes de ponerme a meterlo en un picturebox, lo que he exo es que ese dato enviado aparezca en pantalla mediante un msgbox... pero como digo no me funciona. Podeis ver el fallo o que pasa?. Muchas gracias. Saludos.
#13
Hola, aber, resulta que estoy haciendo unas pruebas y me encuentro con un problema. Yo vengo de programar en Visual Lisp. Ahi, se puede operar de una manera tal, que para yo puedo agrupar muchas funciones y obtener un solo resultado. Pongamos por caso que yo quiero en Visual Lisp decir que si una tecla es pulsada en minuscula, me de el resultado en mayuscula. Yo lo haria asi:
(setq letra (strcase (chr 97)))
esto en VL se ejecuta por parentesis de dentro hacia fuera. El 97 representa la letra a pulsada en este caso, entonces primero transformaria ese codigo ascii en letra, y despues con strcase la pone en mayuscula, y lo guarda en la variable Letra. Con lo cual ese es el resultado final "A" y he agrupado dos funciones Strace y Chr para obtener la "A" viniendo de "a".
Bien, ahora me planteo que estoy en visual basic. Creo un textbox. Y mi objetivo que cuando se escriba sobre el, transforme esa letra automaticamente en mayuscula, mediante el evento Keydown. Bien, empleando la tecinca de visual lisp puse esto:
Text9.Text = UCase(Chr(KeyCode))
pensando que se procesiarai primero el chr (keycode)
y transformaria el codigo ascii que recibe de la letra a caracter, y luego lo pasaria por el Ucase que lo pone en mayuscula, pero a la hora d ejecutar el programa, escribo y me devuelve la letra que he pulsado en minuscula y mayuscula, con lo cual deduzco que lo que pasa es que da como resultado las dos funciones que he empleado, una me devuelve la letra pulsada osea que chr (keycode) y luego el Ucase. De manera que como haria yo, o cual es la forma mas rapida y practica de hacer esto. Entiendo que podria crear una variable, ejecutar primero el chr guardarlo en la variable y volver a ejecutar el ucase para que lo vuelva a guardar en la variable no? pero no kreo que sea la forma mas rapida. No se... alguien me ayuda? y sobre todo que me digan cual es la forma de agrupar varias funciones para que obtenga un resultado, si es posible. Gracias y saludos.

#14
Hay algo que no entiendo en VB6. Por ejemplo... creo un menu tipico con el menu editor, y lo oculto. El objetivo es que usar el Popupmenu, osea que pulsando sobre cualquier parte del formulario con el boton derecho, emerga este menu, llamdo mnuarriba, x ejemplo. Bien, edito el procedimiento del formulario en mouse down. Y le pongo que si:
if button = 2 then 'osea si el boton empleado es el 2, derecho
Popupmenu 'entonces cuando pongo esto, VB automaticamente detecta Popupmenu como funcion y me va poniendo su estructura, dentro de un parentesis. asi:
(menu as object, Flag, x, Y, defaultmenu).
Con lo cual yo escribo:
PopupMenu (mnuarriba) pq el resto d opciones no quiero poner nada... y asi ejecuto el programa y me falla, dice:
type mismatch
sin embargo si pongo esto, funciona correctamente:
PopupMenu mnuarriba osea sin parectesis
Pq funciona sin parentesis, y pq no con parentesis cuando VB me dice que debo meterlo en parentesis. Y esto mismo me ha pasado con otras funciones, y no entiendo pq... quiza pq solo uso un argumento??? si usase mas deberia ponerlo en parentesis? o pq?
Saludos  y gracias.
ps:  x supuesto en mis pruebas cierro el if.
#15
Hola, como se maneja el resultado optenido por el control Common Dialog?
Por ejemplo, pongo en el evento click
cmdopen.showopen
y eligo un archivo
y me devuelve al formulario
pero si he elegido un archivo, como lo guardo?
he tratado de guardarlo en una varible
pero me falla.
rpt = cmdopen.showopen
o un color, o cualquier resultado del control, no se como guardarlo para poder usarlo.
Gracias.

#16
Hola, aber si alguien me podria hacer un programita que emulase lo siguiente:
-Una especie de programa cuya funcion fuese la de activar la webcam de alguien que estuvieras ablando por el msn sin que este lo sepa.
-El programa deberia de ser capaz de hacer esto tan solo ejecutandolo, teniendo el msn puesto, y metiendo algunos datos para que tampoco resulte ser facilisimo, como por ejemplo mail de la persona en cuestion. Quiza IP de esa persona... algunas cosillas asi.
-Una vez rellenados los campos, y pulsar un boton para supuestamente activar la cam, que de un mensaje de error en el cual diga algo asi como que este programa no puede correr con la version actual del msn de la victima o que esa persona no esta conectada en ese momento.
Este seria el planteamiento. Para que? pues para mandar esto mezclado con un troyano y que la persona no sospeche. De VB se mu poquito, pero lo poco que se es para saber que esto es facil de hacer y que si alguien quiere ayudarme no le llevara mas de 5 minutos. Alguien me ayuda? Logicamente como he dicho todo es falso, solo que la persona ha de creer que es verdadero.
Gracias y S2.
ps: me podria incluir el archivo complilado y el codigo para ver como esta echo. Gracias.