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

#31
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!
#32
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.

#33
Gracias sergi, me ha quedado muy claro. Gracias. S2.
#34
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.
#35
Hola, gracias a todos. Ya he averiguado cual era el problema. El problema es que yo intentaba primero intentar conectar con una posible misma instancia del programa a la escucha. SI eso no se producia, que se pusiera el mismo a escuchar. Y bien, la teoria es buena, pero si yo ejecutaba una instancia, hacia eso, inentaba conectarse, como no abia ninugno a la escucha, el mismo se ponia a la escucha. Hasta ahi todo bien. Luego ejecutaba otra instancia, y en ese momento, ok, conectaba con la otra instancai que estaba a la escucha y aqui viene mi problema pq la siguiente sentencia era
if not ws.state = 7
osea le estaba diciendo, que si no estaba conectado, se volviera a poner a la escucha, osea si su estado no era 7. Y resulta, que una vez realizada la conexion, tarda un ratin en cambiar de estado, con lo cual, realmente el estado sigue sin ser 7, con lo cual la segunda instancia entraba en el if y volvia a poner esta instancia a la escucha. De modo, que tuve que arreglarlo con el estado actuar en el cua se encontraba, y tb metiendolo en un timer para darle tiempo a realizar la conexion.
Muchas gracias y saludos.
#36
Gracias Eon, luego lo empollo todo. Saludos!
#37
Gracias Eon, leere lo de las Apis ya que creo que quedaria mejor que usar un joiner. Y lo de descargarlo, no se propare asi pues yo puse un boton que cerrase, con END, y hasta ahora en todo lo que habia echo me habia funcionado menos con este que lleva winsock, d lo que deduje que quiza fuera pq se quedaba el pueto abierto o algo, pues el formulario se cierra pero si miro en los procesos veo que esta ahi aun. Me di cuenta cuando una vez hice el exe, lo probe, volvi a entrar, y al intentar sobreescribir el mismo archivo con modificaciones me dijo que no podia porque estaba en uso. Probare lo que me comentas aber. Muchas gracias y saludos.
#38
Ok gracias, sabiendo eso me ayuda pues se que voy por el camino adecuado. Haber entonces si alguien lee el codigo y ve donde cometo el error pues me falla. Eso es lo que yo intentaba acer, primero que intentase conectarse, y si ve que no existe el puerto a la escucha del otro programa esperandole, que se ponga a la espera. Y al ejecutar la otra instancia como lo primero que hace es intentar conectarse a un puerto que escuche, como ya el otro esta escuchando, pues se conecta. Y realmente hasta eso llego bien, pero luego ya cuando invento enviar datos no puedo. Me da un error de programacion. Gracias. S2.
#39
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.
#40
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.