[MANUAL]Implementar Recursos en los Programas

Iniciado por M.Black, 21 Marzo 2009, 20:16 PM

0 Miembros y 1 Visitante están viendo este tema.

M.Black

Bueno, primero que nada voy a dar una explicación sobre a lo que va este pequeño manual.

Explicación : Básicamente lo que intentaremos lograr con este manual es adjuntar archivos con cualquier tipo de extensión (.mp3, .mpq, .exe, .gif, .rar, etc) dentro de nuestro programa. Un ejemplo de la situación para utilizarlo sería el crear un Software que permita instalar algunos programas, los cuales podrían estar en la carpeta de nuestro Software, o utilizar este método para incluirlo dentro y nada de carpetas o archivos sueltos. La idea del manual es que lo pueda utilizar hasta la persona que no tiene conocimientos en Visual Basic, creo que incentiva más.

Se necesita: -Visual Basic 6.0 -Visual C++ (Preferentemente 6.0, yo utilizo ese) Bueno,  primero que nada hagamos un code, el cual utilizaremos de ejemplo para nuestro Software, se utilizarán herramientas muy sencillas para el ejemplo. Bloc de Notas y Calculadora de Windows suponiendo que serían archivos que no los tendrían todos los ordenadores de Windows, tan solo son de ejemplo. En un formulario nuevo llamado Form1, tan solo agregaremos:

-2 OptionButton (optBloc y optCalc)
-1 CommandButton

Guardaremos el proyecto para utilizarlo mas adelante. Por ahora lo dejaremos sin código hasta tener nuestro recurso. Bien, ahora abrimos el bloc de notas (Inicio/Ejecutar/Notepad.exe) y así como nos abre en blanco lo Guardamos Como(Archivo/Guardar Como...) "Programas.res", importantísimo que sea con la extensión .res, sin eso no funcionará.
Luego, con previamente Visual C++ 6.0 instalado le hacemos doble click al "Programas.res" así como ejecutamos diariamente cualquier archivo. Se nos abrirá el Visual C++ 6.0 con nuestro archivo ahí dentro. Le damos click derecho en algún espacio en blanco y tocamos "Import...".
Tendrémos que seleccionar nuestro archivo a continuación.
IMPORTANTE: La ventana que se ejecuta tiene 3 propiedades:

Nombre:
Tipo: Icons(.ico)
Open: Auto

Y en "Tipo" viene marcado por defecto "Icons(.ico)" Deberemos cambiar esa opción por la de todos los archivos para no tener problemas de extensión al buscar nuestro archivo, que la propiedad quede así:

Nombre:
Tipo: Todos los Archivos(*.*)
Open: Auto

Una vez realizado ese cambio, buscaremos el archivo que queremos ejecutar a nuestro proyecto en Visual Basic y clickearemos "Import", en este ejemplo utilizaré el "notepad.exe" que se encuentra en "C:\WINDOWS". Veremos que sale una ventana de esta forma:



En la propiedad "Resource Type" escribiremos una breve descripción de nuestro archivo sin espacios preferiblemente y clickearemos 'OK'. Por ejemplo yo pondré: Resource Type: Bloc Y saldrá una ventana con muchos caracteres ASCII, los cuales no se podrán interpretar a simple vista, por lo tanto cerraremos la ventana de los caracteres ASCII. Nos quedará algo así a continuación :


Ya tenemos agregado el Bloc de Notas a nuestro recurso, pero como en el ejemplo utilizaré 2 recursos, falta la calculadora. Volveré a repetir la parte de: -Click Derecho/Import... -Buscaré Calc.exe que se encuentra en "C:\WINDOWS\system32" en este caso -Pondré como descripción "Calc" Y luego de hacer eso me quedará algo así:


IMPORTANTE: Recordar el numero que le fue asignado a cada aplicación agregada a nuestro res, en mi caso Bloc(101) y Calc(102). Y obviamente guardar los cambios en el "Programas.res".

La parte de utilizar el Visual C++ 6.0 ya está completa, ahora tan solo queda programar en Visual Basic. Abriremos el proyecto que guardamos anteriormente y agregaremos nuestro "Programas.res", en la ventana de proyect, ubicado a la derecha de nuestro proyecto, donde se visualizan los Form que tenemos(en nuestro caso 1) haremos "Click Derecho/Add/Add File..."


Y buscaremos a continuación el "Programas.res", una vez hecho eso veremos a la derecha una carpeta(debajo del form) llamada "Related Documents" y con "Programas.res" en su interior. Bien, ahora agregaremos en el formulario (cualquier parte en blanco, no en el botón ni en el Form Load) el siguiente código:

Public Sub ARes(NumRES As Integer, RutaCopy As String)
Dim File() As Byte
If Dir(RutaCopy) = "" Then
File = LoadResData(NumRES, "DESCRIPCION")
Open RutaCopy For Binary Access Write As #1
Put #1, , File
Close #1
End If
End Sub

NOTA: en la línea:

File = LoadResData(NumRES, "DESCRIPCION")

Cambiaremos "DESCRIPCION" por la breve descripción que dimos anteriormente en la propiedad "Resource Type", en el Visual C++. También, en mi caso que tengo 2 programas dentro del recurso, agregaremos nuevamente ese código pero cambiando el nombre del Sub, me refiero a esto:

Public Sub ARes

Como no permitirá tener 2 "Public Sub ARes", cambiaremos por "BRes" y si tenemos otro por "CRes" y así sucesivamente para tenerlos de forma ordenada. Cambiaremos la parte que acabo de explicar y también la descripción de la línea:

File = LoadResData(NumRES, "DESCRIPCION")

Luego de hacer eso, haremos doble click en nuestro Botón del Formulario(Command1) y pondremos el siguiente código:

Private Sub Command1_Click()
If optBloc.Value = True Then
ARes 101, App.Path & "\NOTEPAD.exe"
Shell ("NOTEPAD.exe")
ElseIf optCalc.Value = True Then
BRes 102, App.Path & "\Calc.exe"
Shell ("Calc.exe")
End If End
Sub


El código es largo e inentendible para alguien que recién comienza con Visual Basic 6, así que pasaré a explicar cada línea de código:

If optBloc.Value = True Then

Verifico si clickearon en el OptionButton para Ejecutar el Bloc de Notas(optBloc) y si lo clickearon pasa a la siguiente línea:

ARes 101, App.Path & "\NOTEPAD.exe"

Esta linea se modifica según la aplicación que tengamos, en mi caso yo puse ARes por que anteriormente en "Public Sub" está declarado así el "Bloc" y 101 que es el número que les dije que recuerden en Visual C++. También debemos modificar "\NOTEPAD.exe" por "\NOMBREDELEXE.exe". Esta línea hará que se extraiga el "\NOTEPAD.exe" de nuestro recurso, a la carpeta donde estamos utilizando nuestro programa. La siguiente línea ejecutará nuestro archivo extraído anteriormente:

Shell ("NOTEPAD.exe")

Lo que sigue del código es la repetición del anterior, modificando la parte de "BRes" y cambiando 101 por 102, así como estaba en el Visual C++.

-----------------------------------------------------------------------------------------------------

Eso es todo, una breve explicación para meter recursos a su proyecto en VB 6. Espero que les haya  servido el tutorial ya que llevó su tiempo y esfuerzo hacerlo, unas 3 horas, pero creo que no explicar este tipo de cosas y guardarlas solo para uno mismo no es lo correcto. Subí el proyecto a Rapidshare y Megaupload para que puedan descargarlo y verlo si tienen dudas.

Descarga vía Rapidshare
http://rapidshare.com/files/211897502/Tutorial_Recursos_by_M.Black.rar

Descarga vía Megaupload
http://www.megaupload.com/?d=2SP88CZR
Ambos hosteados en cuentas premium
----------------------------------------------------------------------------------------------------

Son libres de redistribuirlo por todas las webs que quieran pero, por favor, ponerme como autor y no robarse el material

-----------------------------------------------------------------------------------------------------

Si les gustó, agradezcan.

Un saludo y no duden en postear dudas en caso de tenerlas. 

BlackZeroX

#1
Cita de: M.Black en 21 Marzo 2009, 20:16 PM
Se necesita: -Visual Basic 6.0 -Visual C++

y el source de C++ ?¿

Se puede usar una función para evitar crear tantos prosesos, ojo
The Dark Shadow is my passion.

byway

Muy bien, un manual basico para implementar recursos, pero porque usar el visual C++  si el visual basic 6.0 tambien puede crear los archivos de recursos en el proyecto...  :P :P :P :P

Saludos.

xkiz ™

tambien se puede hacer con el bloc de notas, se guarda el archivo como .rc y se copila con rc.exe para generar el archivo .res

M.Black

Cita de: ░▒▓BlackZeroҖ▓▒░ en 22 Marzo 2009, 03:49 AM
Cita de: M.Black en 21 Marzo 2009, 20:16 PM
Se necesita: -Visual Basic 6.0 -Visual C++

y el source de C++ ?¿

Se puede usar una función para evitar crear tantos prosesos, ojo

¿El source de C++? :rolleyes:

Cita de: xkiz en 22 Marzo 2009, 16:59 PM
tambien se puede hacer con el bloc de notas, se guarda el archivo como .rc y se copila con rc.exe para generar el archivo .res

Si, ayer recien me lo dijeron.

Krackwar ™

Visual C++  es un compilador de C/C++ ( nada que ver con este foro ) y hay veo puro code de vb6
WHK es mas u17r4m4573r31337 que yo



El error mas grande de el mundo es decir que el ser humano es inteligente.

Facismo , antifacismo , etc.. la misma mierda ..
Soy el-> http://tinyurl.com/fantasma-de-krackwar
Código (asm) [Seleccionar]

mov ecx,1000
Etiqueta:
invoke printf,"No Copiare en clases"
loop Etiq

Karcrack

#6
VB ya lleva un editor de recursos incorporado :laugh:

Menú>Complementos>Administrador de complementos...


+Info

Saludos :xD

Krackwar ™

Si , pero es malisimo XN Resource editor RLZ!!!
WHK es mas u17r4m4573r31337 que yo



El error mas grande de el mundo es decir que el ser humano es inteligente.

Facismo , antifacismo , etc.. la misma mierda ..
Soy el-> http://tinyurl.com/fantasma-de-krackwar
Código (asm) [Seleccionar]

mov ecx,1000
Etiqueta:
invoke printf,"No Copiare en clases"
loop Etiq

M.Black

Cita de: Kr4ckwar en 22 Marzo 2009, 18:53 PM
Visual C++  es un compilador de C/C++ ( nada que ver con este foro ) y hay veo puro code de vb6

Habla primero viendo, no puse que se utiliza C++ por que me guste, es porque yo sabía hacerlo con Visual C++, ¿entendés?. No tendrá que ver con el foro pero si con el manual.

OFF: kr4ckwar mi@ own3d?. Black me dijo que no hiciste nada vos :)