Autor
|
Tema: [VB6] Una ayuda con mi primer programa... plz :) (Leído 7,244 veces)
|
SuperDraco
Desconectado
Mensajes: 2.505
Crew Dragon
|
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... 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 pm por pitoloko »
|
En línea
|
No he vuelto, solo estoy de paso.
|
|
|
79137913
Desconectado
Mensajes: 1.169
4 Esquinas
|
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: 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: 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: 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: 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 pm 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*
|
|
|
SuperDraco
Desconectado
Mensajes: 2.505
Crew Dragon
|
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... 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: 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:\Users\Administrador\Desktop\Windows6.1-KB2492386-x64.msu 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? 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 pm por pitoloko »
|
En línea
|
No he vuelto, solo estoy de paso.
|
|
|
raul338
Desconectado
Mensajes: 2.633
La sonrisa es la mejor forma de afrontar las cosas
|
Podes usar FSO. Aunque ya podes hacerlo asi, digamos 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
Mensajes: 1.169
4 Esquinas
|
HOLA!!! XD 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*
|
|
|
SuperDraco
Desconectado
Mensajes: 2.505
Crew Dragon
|
Pues tampoco me funciona de la manera que dijo raul338 he probado: Y la ruta es correcta, pero al usar: Call Shell(stPath & archivo) me da este error: error '5' llamada a procedimiento o argumento no válidos PD: FSO = FSO file objects?
|
|
|
En línea
|
No he vuelto, solo estoy de paso.
|
|
|
79137913
Desconectado
Mensajes: 1.169
4 Esquinas
|
HOLA!!! Es por que no reconoce a los Msu como archivos ejecutables... Lo solucionas usando ShellExecute (un api de windows) Declara esto: 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: 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 pm 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*
|
|
|
SuperDraco
Desconectado
Mensajes: 2.505
Crew Dragon
|
Perdona por ser pesado, pero es que es un problema tras otro me da error el shellexecuteProcedimiento 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í: 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
|
No he vuelto, solo estoy de paso.
|
|
|
79137913
Desconectado
Mensajes: 1.169
4 Esquinas
|
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 pm 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*
|
|
|
SuperDraco
Desconectado
Mensajes: 2.505
Crew Dragon
|
Acabo de ponerlo arriba del todo, me sigue dando el mismo error
|
|
|
En línea
|
No he vuelto, solo estoy de paso.
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Mi primer programa con VB2008
.NET (C#, VB.NET, ASP)
|
ElBarney-D
|
1
|
2,869
|
19 Abril 2008, 06:27 am
por seba123neo
|
|
|
Mi primer programa en VB
« 1 2 »
Programación Visual Basic
|
Pedro_madrid
|
12
|
5,636
|
31 Mayo 2008, 11:56 am
por Pedro_madrid
|
|
|
Mi primer programa..por asi llamarlo
Scripting
|
Warkanlock
|
9
|
4,710
|
25 Diciembre 2009, 21:30 pm
por Banti
|
|
|
Mi primer programa en NASM
ASM
|
Debci
|
6
|
7,470
|
2 Abril 2010, 13:23 pm
por Debci
|
|
|
(Ayuda) El primer código C++
Programación C/C++
|
xXxBazzxXx
|
4
|
2,785
|
2 Junio 2013, 20:05 pm
por xXxBazzxXx
|
|