elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 08:31  


Tema destacado: Sigue las noticias más importantes de elhacker.net en ttwitter!

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo, raul338)
| | |-+  [VB6] Una ayuda con mi primer programa... plz :)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: [VB6] Una ayuda con mi primer programa... plz :)  (Leído 1,237 veces)
pitoloko


Desconectado Desconectado

Mensajes: 2.500


Ver Perfil
[VB6] Una ayuda con mi primer programa... plz :)
« en: 13 Julio 2011, 18:04 »

Hola, a ver se que el programa es simple, no sirve mucho, por eso es ideal para ser el primero y hacer pruebas, tengo echo esto:



en la opción "archivo" hay otra que se llama "Elegir directorio", la idea es usar esa opción, se elige la carpeta, y me la guarda en "FName", que no se si llamarla variable o string, porque aún no entiendo bien las funciones básicas xD...

...Bueno eso ya lo he conseguido, después de obtener el "FName", la idea es darle al botón "Empezar", y lo que debería hacer es:

1º - si no encuentra ningún archivo con extensión ".msu", mandar un error, en un msgbox o como sea

2º -  que a la derecha del botón aparezca un contador con la cantidad de actualizaciones que hay en la carpeta seleccionada (Osea, la cantidad de archivos MSU)

3º - Ejecutar una a una (No todas a la vez) cada archivo con extensión ".msu"

4º - Que el contador vaya restando los archivos que ya se han instalado, (Por ejemplo  "Quedan 7 de 30 actualizaciones" 0 "7 de 30")

Y luego no tengo ni idea de como hacer funcionar la casilla de reiniciar pc, ya me he enterado de como reiniciar el pc con vb, pero no se como hacerlo cuando el comando "empezar" termine de instalar las updates...  :-\


Simplemente eso, ¿Alguien me ayuda?



EDITO: se me olvidaba, aqui el código entero, por si hace falta...

Código
 
Private Sub opendir_Click()
  Dim FName As String
FName = BrowseFolder(Caption:="Selecciona una carpeta")
If FName = vbNullString Then
   Debug.Print "No Folder Selected"
Else
   Debug.Print "Selected Folder: " & FName
End If
End Sub
 
Private Sub Check6_Click()
If Check6.Value = 1 Then
   Text6.Enabled = True
ElseIf Check6.Value = 0 Then
   Text6.Enabled = False
End If
End Sub
 
 
Private Sub english_Click()
Check6.Caption = "Reset PC after install updates."
Frame1.Caption = "Additional options"
opendir.Caption = "Open directory..."
virus.Caption = "File"
salir.Caption = "Exit"
Sobre.Caption = "About..."
Idioma.Caption = "Language"
español.Caption = "Spanish"
english.Caption = "English"
End Sub
 
Private Sub español_Click()
Check6.Caption = "Reiniciar PC después de instalar actualizaciones."
Frame1.Caption = "Opciones adicionales"
opendir.Caption = "Abrir directorio..."
virus.Caption = "Archivo"
salir.Caption = "Salir"
Sobre.Caption = "Sobre..."
Idioma.Caption = "Idioma"
español.Caption = "Español"
english.Caption = "Inglés"
End Sub
 
Private Sub salir_Click()
Unload Me
End Sub
 
Private Sub Sobre_Click()
MsgBox ("WinUpdates Installer 1.0" & vbNewLine & "" & vbNewLine & "By PiToLoKo" & vbNewLine & vbNewLine & "www.foro.elhacker.net")
End Sub
 


« Última modificación: 13 Julio 2011, 18:26 por pitoloko » En línea

pa que
79137913


Desconectado Desconectado

Mensajes: 780


4 Esquinas


Ver Perfil WWW
Re: [VB6] Una ayuda con miprimer programa... plz :)
« Respuesta #1 en: 13 Julio 2011, 18:34 »

HOLA!!!

Fname si es el NombreDelArchivo es una variable String.

(estos ejemplos te los hago como si la carpeta fuera C:\ y con cosas basicas)

1:
Código
If Dir("c:\*.msu") = vbNullString Then
   MsgBox "error no se encuentra archivo msu"
   'esto yo lo haria con un If de una linea pero para empezar dejalo asi
End If
 

2:
Código
Dim CT As Integer
Dim archivo As String
   archivo = Dir("c:\*.msu")
   While archivo <> ""
       'para buscar el siguiente archivo se usa dir solo
       archivo = Dir
       CT = CT + 1
   Wend
   lblTotal.Caption = Str(CT)
   'CT es la cantidad de archivos

3:
Código
Dim archivo As String
   archivo = Dir("c:\*.msu")
   While archivo <> ""
       'shell ejecuta
       Shell archivo
       'Esperar a que cierre un proceso es mas complicado, busca en el foro.
       'ESTO EJECUTARA TODOS LOS MSU
       'para buscar el siguiente archivo se usa dir solo
       archivo = Dir
   Wend
 

4:
Código
Dim archivo As String
   archivo = Dir("c:\*.msu")
   While archivo <> ""
       'shell ejecuta msu
       Shell archivo
       'Suponemos que esperar al cierre del proceso es "EsperaCierre"
       While esperacierre(archivo) = False
           DoEvents
           'doevents libera el procesador y lo deja ejecutar otras operaciones
       Wend
       'para buscar el siguiente archivo se usa dir solo
       LblTerminados.Caption = Str(Val(LblTerminados.Caption +1))
       archivo = Dir
   Wend
 

En cuanto a lo ultimo, hay mucha info para reiniciar la pc, solo deberias fijarte en el label cuando sea = el de terminados y el de totales.

Conste que hago la "tarea" por que he visto a pitoloko (odio ese nick) y parece que tiene ganas de aprender.

GRACIAS POR LEER!!!


« Última modificación: 13 Julio 2011, 20:21 por 79137913 » En línea

"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

 79137913                          *Shadow Scouts Team*                                                          Resumenes Cs.Economicas
pitoloko


Desconectado Desconectado

Mensajes: 2.500


Ver Perfil
Re: [VB6] Una ayuda con mi primer programa... plz :)
« Respuesta #2 en: 13 Julio 2011, 19:28 »

Gracias por tu tiempo, además con las explicaciones de lo que hace cada cosa ¡^^!  Trankilo, lo de pitoloko no es lo que te parece...  :P


voy por pasos, ya he arreglado el 1º, me ha costado un poco aunque al final he deducido como hacer funcionar mi string en tu ejemplo:

Código
If Dir(FName & "\*.msu") = vbNullString Then
   MsgBox "error no se encuentra archivo msu" & FName
End If


El resto no consigo utilizarlos, pero comentaré solo el 3º, me da error de que no encuentra el archivo (Pero el archivo si que existe en esa ruta)

Código:
C:\Users\Administrador\Desktop\Windows6.1-KB2492386-x64.msu


Código
Private Sub Command1_Click()
Dim archivo As String
   archivo = Dir("C:\Users\Administrador\Desktop\*.msu")
   While archivo <> ""
       Shell archivo
       archivo = Dir
   Wend
End Sub
 

¿Se te ocurre porque puede dar el error? :/

EDITO: ya se cual es el problema, "archivo" no coge el path entero, solamente el filename... ¿Como lo arreglo?  :xD No me deja utilizar el string FName... ese sería otro tema que me gustaría hablar, ¿Como guardo el string para usarlo en las demás funciones?

gracias por todo, iré aprendiendo
« Última modificación: 13 Julio 2011, 19:34 por pitoloko » En línea

pa que
raul338
Moderador
***
Desconectado Desconectado

Mensajes: 2.372


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: [VB6] Una ayuda con mi primer programa... plz :)
« Respuesta #3 en: 13 Julio 2011, 19:36 »

Podes usar FSO. Aunque ya podes hacerlo asi, digamos

Código
Private Sub Command1_Click()
Const stPath As String = "C:\Users\Administrador\Desktop\"
'---
Dim archivo As String
   archivo = Dir(stPath & "*.msu")
   While archivo <> ""
       Call Shell(stPath & archivo)
       archivo = Dir
   Wend
End Sub
 
En línea

79137913


Desconectado Desconectado

Mensajes: 780


4 Esquinas


Ver Perfil WWW
Re: [VB6] Una ayuda con mi primer programa... plz :)
« Respuesta #4 en: 13 Julio 2011, 19:38 »

HOLA!!!

XD  :-X Eso me pasa por no testear.

Como dice raul hacelo asi tenes el path y el nombre de archivo.

FSO es lo mas lento que existe (ya se que dir no es rapido pero FSO es malisimo)

GRACIAS POR LEER!!!
En línea

"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

 79137913                          *Shadow Scouts Team*                                                          Resumenes Cs.Economicas
pitoloko


Desconectado Desconectado

Mensajes: 2.500


Ver Perfil
Re: [VB6] Una ayuda con mi primer programa... plz :)
« Respuesta #5 en: 13 Julio 2011, 19:44 »

Pues tampoco me funciona de la manera que dijo raul338  :-\

he probado:
Código:
msgbox stPath & archivo
Y la ruta es correcta, pero al usar:

Código:
Call Shell(stPath & archivo)

me da este error:

Código:
error '5'
llamada a procedimiento o argumento no válidos


PD: FSO = FSO file objects?
En línea

pa que
79137913


Desconectado Desconectado

Mensajes: 780


4 Esquinas


Ver Perfil WWW
Re: [VB6] Una ayuda con mi primer programa... plz :)
« Respuesta #6 en: 13 Julio 2011, 20:12 »

HOLA!!!

Es por que no reconoce a los Msu como archivos ejecutables...

Lo solucionas usando ShellExecute (un api de windows)

Declara esto:
Código
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
 

Y en donde dice shell reemplaza por esto:
Código
        ShellExecute Me.hwnd, "open", stPath & archivo, vbNullString, "c:\", False
       'Nota el path de ejecucion es este ^

GRACIAS POR LEER!!!
« Última modificación: 13 Julio 2011, 20:21 por 79137913 » En línea

"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

 79137913                          *Shadow Scouts Team*                                                          Resumenes Cs.Economicas
pitoloko


Desconectado Desconectado

Mensajes: 2.500


Ver Perfil
Re: [VB6] Una ayuda con mi primer programa... plz :)
« Respuesta #7 en: 13 Julio 2011, 20:25 »

Perdona por ser pesado, pero es que es un problema tras otro :(

me da error el shellexecute
Código:
Procedimiento sub o funcion no definido.

he probado usando End private sub, lo único que se me ha ocurrido, pero nada.

Ahora mismo lo tenog colocado así:
Código
Private Sub Command1_Click()
 
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Const stPath As String = "C:\Users\Administrador\Desktop\"
Dim archivo As String
   archivo = Dir(stPath & "*.msu")
   While archivo <> ""
   MsgBox (FName & archivo)
        ShellExecute Me.hwnd, "open", stPath & archivo, vbNullString, "C:\Users\Administrador\Desktop\", False
       archivo = Dir
   Wend
End Sub
En línea

pa que
79137913


Desconectado Desconectado

Mensajes: 780


4 Esquinas


Ver Perfil WWW
Re: [VB6] Una ayuda con mi primer programa... plz :)
« Respuesta #8 en: 13 Julio 2011, 20:28 »

HOLA!!!

No hay problema estas empezando, las apis se declaran fuera de los procedimientos (ahi la tenes dentro del command1_click()) Te recomiendo ponerlas en la parte superior del codigo.

Nota, se declaran fuera de los procedimientos por que son funciones las cuales tienen sus propios procedimientos internos, osea, vos podes declarar variables pero no subs ni functions dentro de otros procesos.

GRACIAS POR LEER!!!
« Última modificación: 13 Julio 2011, 20:31 por 79137913 » En línea

"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

 79137913                          *Shadow Scouts Team*                                                          Resumenes Cs.Economicas
pitoloko


Desconectado Desconectado

Mensajes: 2.500


Ver Perfil
Re: [VB6] Una ayuda con mi primer programa... plz :)
« Respuesta #9 en: 13 Julio 2011, 20:30 »

Acabo de ponerlo arriba del todo, me sigue dando el mismo error  :xD


 >:(

En línea

pa que
raul338
Moderador
***
Desconectado Desconectado

Mensajes: 2.372


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: [VB6] Una ayuda con mi primer programa... plz :)
« Respuesta #10 en: 13 Julio 2011, 20:34 »

Asi deberia estar

Código
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
 
' Espacio en blanco, u otros procedimentos

Private Sub Command1_Click()
Const stPath As String = "C:\Users\Administrador\Desktop\"
Dim archivo As String
   archivo = Dir(stPath & "*.msu")
   While archivo <> ""
   MsgBox (FName & archivo)
        ShellExecute Me.hwnd, "open", stPath & archivo, vbNullString, "C:\Users\Administrador\Desktop\", False
       archivo = Dir
   Wend
End
 


PD: FSO = FSO file objects?
Si, Podes hacerlo mediante las funciones de Visual Basic, Mediante File System Object (FSO) o la infalible: mediante api :D
En línea

pitoloko


Desconectado Desconectado

Mensajes: 2.500


Ver Perfil
Re: [VB6] Una ayuda con mi primer programa... plz :)
« Respuesta #11 en: 13 Julio 2011, 20:37 »

que raro, juraría que lo puse exactamente que raul338 XD

me ha funcionado, gracias
En línea

pa que
Elemental Code


Desconectado Desconectado

Mensajes: 499


Im beyond the system


Ver Perfil
Re: [VB6] Una ayuda con mi primer programa... plz :)
« Respuesta #12 en: 13 Julio 2011, 23:10 »

http://foro.elhacker.net/programacion_visual_basic/esperar_al_final_de_la_ejecucion_de_otro_programa-t313877.0.html

Shell And Wait
En línea

pitoloko


Desconectado Desconectado

Mensajes: 2.500


Ver Perfil
Re: [VB6] Una ayuda con mi primer programa... plz :)
« Respuesta #13 en: 16 Julio 2011, 02:20 »


voy solucionando los problmas poco a poco, ahora estoy estancado en el de ejecutar el archivo y "esperar".

He visto el code de tu post, me puedes decir como usaría esta función?

Código:
' Start the indicated program and wait for it
Private Sub ShellAndWait(ByVal program_name As String, ByVal window_style As VbAppWinStyle)


no se que debo poner en ¿window_style?
Código:
ShellAndWait "c:\programa.exe", ¿window_style?


gracias..


EDITO:
solucionado

ShellAndWait "C:\Program Files\Defraggler\Defraggler.exe", vbNormalFocus

Pero no funciona con archivos con extensión ".msu"

 :-\

no me sirve
« Última modificación: 16 Julio 2011, 02:31 por pitoloko » En línea

pa que
seba123neo
Moderador
***
Desconectado Desconectado

Mensajes: 3.214



Ver Perfil WWW
Re: [VB6] Una ayuda con mi primer programa... plz :)
« Respuesta #14 en: 16 Julio 2011, 05:45 »

porque aún no entiendo bien las funciones básicas xD...

vos lo dijiste, ese es el problema principal de todo, querer tirarse a hacer cosas que no tienen ni idea. hacer algo complejo que todavia no saben hacer un bucle o las funciones principales. pero no sos el unico casi todos aca son asi. ya te digo que el foro no es para venir a preguntar cada duda que te salga, para eso no sirve el foro.

yo directamente no respondo mas cuando veo estas cosas.y lamentablemente el foro parece lleno de spam.

ojala no te ofendas, ya que normalmente lo hacen y se "enojan", cuando uno lo que quiere es enseñarle a pescar y no darle el pescado, si te dan el pescado te sirve para un rato, sin embargo si aprendes a pescar te srive para siempre, espero que se entienda lo que quise decir.
En línea

Mucha gente, especialmente la ignorante desea castigarte por decir la verdad, por ser correcto, por ser tú. Nunca te disculpes por ser correcto, o por estar años delante de tu tiempo.
Si estas en lo cierto, y lo sabes, que hable tu razón. Incluso si eres una minoria de uno solo, la verdad sigue siendo la verdad. M. Gandhi
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Mi primer programa de C++
Programación C/C++
knightlain 5 950 Último mensaje 8 Abril 2007, 09:26
por Mr.Chispa
Mi primer programa en VB
Programación Visual Basic
Pedro_madrid 12 1,554 Último mensaje 31 Mayo 2008, 11:56
por Pedro_madrid
Ayuda, quiero aprender C# y me trabe intentando mi primer programa!!
Programación C/C++
kb81987 11 2,324 Último mensaje 25 Septiembre 2008, 05:21
por H1@
mi primer programa¡¡¡
Programación C/C++
aprendishack2 13 1,480 Último mensaje 7 Febrero 2010, 17:12
por Debci
El primer programa de la historia.
Foro Libre
KarlosVid(ÊÇ) 0 1,253 Último mensaje 3 Mayo 2011, 07:48
por KarlosVid(ÊÇ)
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines