Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: SuperDraco en 14 Julio 2011, 19:17 pm



Título: [VB] Dudas de novato...
Publicado por: SuperDraco en 14 Julio 2011, 19:17 pm
Hola, voy a hacer un par de preguntas, porque no me aclaro  :xD

PD: la que más me interesa resolver es la pregunta nº 5 y la 6...

gracias a todos los que lean!!  ;-)







Me gustaría hacer mi primer cripter, usando xor o rc4 con algun ejemplo de google  :xD

La pregunta es...

Al ser una app nueva, un cripter nuevo... ¿las posibilidades de que el antivirus NO lo detecte.. sería del 100%? o de lo contrario yo tendría que ofuscar el código? De ser así, ¿existe alguna aplicación que ofusque el source de una app de vb6?

Me llevo muy mal con el tipo de variables de VB, como para tener que ofuscar yo mismo un code agregando 1.000 variables más sin sentido  :xD







¿Hay alguna manera para que un msgbox no pare el procedimiento de la app?







Al cargar un recurso en un botón, de esta manera:

Código:
Command1.Picture = _
LoadResPicture(102, vbResBMP)

El caption del botón queda desalineado, antes de cargar el BMP el texto estaba centrado en el botón, pero al cargar el BMP, el texto queda alineado al bottom ¿Porque? ¿Como lo vuelvo a centrar?





 He visto que el tema de hacer un frame transparente es muy dificil

¿Existe una manera sencilla?

el tema de enviar la app al systemtray también, pero bueno, no se si hacer la misma pregunta... no quiero descentrarme en funcionalidades para centrarme en el aspecto de la app  :xD aunque, intento ser perfeccionista  :-[






app.path es la variable que almacena la ruta desde donde estamos ejecutando nuestra app ¿Cierto?

Entonces ¿como puedo modificar o llamar a este módulo para asignar "app.path" para que sea la ruta por defecto en la que se debe abrir?

Código
  1. Private Const BIF_RETURNONLYFSDIRS As Long = &H1
  2. Private Const BIF_DONTGOBELOWDOMAIN As Long = &H2
  3. Private Const BIF_RETURNFSANCESTORS As Long = &H8
  4. Private Const BIF_BROWSEFORCOMPUTER As Long = &H1000
  5. Private Const BIF_BROWSEFORPRINTER As Long = &H2000
  6. Private Const BIF_BROWSEINCLUDEFILES As Long = &H4000
  7. Private Const MAX_PATH As Long = 260
  8.  
  9. Type BrowseInfo
  10.    hOwner As Long
  11.    pidlRoot As Long
  12.    pszDisplayName As String
  13.    lpszINSTRUCTIONS As String
  14.    ulFlags As Long
  15.    lpfn As Long
  16.    lParam As Long
  17.    iImage As Long
  18. End Type
  19.  
  20. Type SHFILEOPSTRUCT
  21.    hwnd As Long
  22.    wFunc As Long
  23.    pFrom As String
  24.    pTo As String
  25.    fFlags As Integer
  26.    fAnyOperationsAborted As Boolean
  27.    hNameMappings As Long
  28.    lpszProgressTitle As String
  29. End Type
  30.  
  31. Declare Function SHGetPathFromIDListA Lib "shell32.dll" ( _
  32.    ByVal pidl As Long, _
  33.    ByVal pszBuffer As String) As Long
  34.  
  35. Declare Function SHBrowseForFolderA Lib "shell32.dll" ( _
  36.    lpBrowseInfo As BrowseInfo) As Long
  37.  
  38.  
  39. Function BrowseFolder(Optional Caption As String = "") As String
  40.  
  41. Dim BrowseInfo As BrowseInfo
  42. Dim FolderName As String
  43. Dim ID As Long
  44. Dim Res As Long
  45.  
  46. With BrowseInfo
  47.   .hOwner = 0
  48.   .pidlRoot = 0
  49.   .pszDisplayName = String$(MAX_PATH, vbNullChar)
  50.   .lpszINSTRUCTIONS = Caption
  51.   .ulFlags = BIF_RETURNONLYFSDIRS
  52.   .lpfn = 0
  53. End With
  54.  
  55. FolderName = String$(MAX_PATH, vbNullChar)
  56. ID = SHBrowseForFolderA(BrowseInfo)
  57. If ID Then
  58.   Res = SHGetPathFromIDListA(ID, FolderName)
  59.   If Res Then
  60.       BrowseFolder = Left$(FolderName, InStr(FolderName, vbNullChar) - 1)
  61.   End If
  62. End If
  63.  






Tengo pensado usar una barra de progreso en todas las aplicaciones que gracias a vosotros consiga hacer.

Lo malo es que no se hacerlo  :xD

He probado una progressbar, la barra consiste en un intervalo de tiempo que podemos definir, por ejemplo cada 500 ms la barrita aumenta, en cambio yo tengo otras necesidades...

Lo que quisiera es usar la barra de progreso por ejemplo así:

(no me se la función para copiar un archivo, así que lo siento por este ejemplo tan malo xD)

Shell copy archivo1 & archivo2 & archivo3
Barra de progreso que calcule el tiempo que va a tardar en copiarse los 3 archivos (No uno a uno, los 3 en total!).
command1.caption TIEMPO Transcurrido
command1.caption TIEMPO TOTAL


vamos, tal y como lo hace windows por ejemplo la barra de progreso de windows que sale al copiar un archivo grande en un directorio... ¿Se podrá usar esa api de windows?

Me he extendido mucho, mi pregunta es si esta barra de progreso puedo utilizarla para el uso que comenté arriba, a mi me parece que no.  :-\

Código
  1. Public Function ProgressBar(ByRef ThePictureBox As PictureBox, ByVal Min As Long, ByVal Max As Long, ByVal Value As Long, Optional ByVal ShowProgressCaption As Boolean = False, Optional ByVal ForeColor As Long = 16777215, Optional ByVal BackColor As Long = 16711680, Optional ByVal FillColor As Long = vbButtonFace, Optional ByVal Alignment As AlignmentConstants = vbCenter, Optional ByVal ByPassChecks As Boolean = False)
  2. On Error Resume Next
  3.  
  4.  Dim TheCaption As String
  5.  Dim RangeDiff As Long
  6.  
  7.  ' Make sure a PictureBox control was specified
  8.  If ThePictureBox Is Nothing Then Exit Function
  9.  
  10.  If ByPassChecks = False Then
  11.  
  12.    ' Make sure the AutoRedraw property is on, or the ProgressBar will be
  13.    ' blank if the PictureBox is repainted by Windows
  14.    ThePictureBox.AutoRedraw = True
  15.  
  16.    ' Make sure the PictureBox doesn't AutoSize
  17.    ThePictureBox.AutoSize = False
  18.  
  19.    ' Make sure there's no picture set
  20.    Set ThePictureBox.Picture = Nothing
  21.  
  22.    ' Make sure progressbar is visible
  23.    ThePictureBox.Visible = True
  24.  
  25.  End If
  26.  
  27.  ' Calculate the percent of the progressbar
  28.  RangeDiff = Max - Min
  29.  If RangeDiff = 0 Then
  30.    TheCaption = "0.0%"
  31.  Else
  32.    TheCaption = Format((Value - Min) / RangeDiff, "0.0%")
  33.  End If
  34.  
  35.  ' Draw the lines on the PictureBox that make it look like a ProgressBar
  36.  If RangeDiff = 0 Then
  37.    ThePictureBox.Line (0, 0)-(0, ThePictureBox.ScaleHeight), BackColor, BF
  38.    ThePictureBox.Line (0, 0)-(ThePictureBox.ScaleWidth, ThePictureBox.ScaleHeight), FillColor, BF
  39.  Else
  40.    ThePictureBox.Line (0, 0)-((((Value - Min) / RangeDiff) * ThePictureBox.ScaleWidth), ThePictureBox.ScaleHeight), BackColor, BF
  41.    ThePictureBox.Line ((((Value - Min) / RangeDiff) * ThePictureBox.ScaleWidth), 0)-(ThePictureBox.ScaleWidth, ThePictureBox.ScaleHeight), FillColor, BF
  42.  End If
  43.  
  44.  ' If no caption, exit
  45.  If ShowProgressCaption = False Then
  46.    ThePictureBox.Refresh
  47.    Exit Function
  48.  End If
  49.  
  50.  ' Set the text location depending on where the user specified
  51.  If Alignment = vbCenter Then
  52.    ThePictureBox.CurrentX = (ThePictureBox.ScaleWidth / 2 - ThePictureBox.TextWidth(TheCaption) / 2)
  53.  ElseIf Alignment = vbLeftJustify Then
  54.    ThePictureBox.CurrentX = 1
  55.  ElseIf Alignment = vbRightJustify Then
  56.    ThePictureBox.CurrentX = (ThePictureBox.ScaleWidth - ThePictureBox.TextWidth(TheCaption)) - 1
  57.  End If
  58.  ThePictureBox.CurrentY = (ThePictureBox.ScaleHeight - ThePictureBox.TextHeight(TheCaption)) / 2
  59.  
  60.  ' Print the caption directly onto the PictureBox
  61.  ThePictureBox.ForeColor = ForeColor
  62.  ThePictureBox.Print TheCaption
  63.  ThePictureBox.Refresh
  64.  
  65. End Function


Título: Re: [VB] Dudas de novato...
Publicado por: 79137913 en 14 Julio 2011, 19:47 pm
HOLA!!!

1.
No, cuando lo armes lo mas probable es que te lo dectecte, hay una aplicacion de Karcrack que se llama karcrack proyect crypter mirala...

2.
No directamente, pero si queres mostrar un msgbox y no frenar la ejecucion lo mas simple es armar un formulario aparte que funcione de msgbox, asi le envias que mensaje Debe mostrar y listo.

3.
La verdad no tengo el vb para probar aca, intenta cargar la imagen y configurar nuevamente la funcion aligment.

4.
Ambos se pueden hacer y hay mucha info sobre ello, recomiendo que por ahora uses un procedimiento ya creado y luego veas como funcionan.

5.
No podes modificar app.path, lo que podes hacer es al inicio de tu aplicacion algo asi:
Código
  1. If app.path <> pathPredeterminado Then End

6.
La barra de progreso no tiene mucha ciencia y no conozco ninguna que funcione por tiempo...
Vos le seteas el valor minimo y maximo, luego simplemente vas sumando a la propiedad .value cuanto vas aumentando.
Por ejemplo:
Código
  1. Pbar1.maxvalue = 3 ' no recuerdo si era maxvalue u otra pero bueno, 3 representa la cantidad de operaciones que realizas.
  2. For x = 0 to 3
  3. Call HacerTodosLosProcedimientos()
  4. Pbar1.value = X
  5. Next

GRACIAS POR LEER!!!


Título: Re: [VB] Dudas de novato...
Publicado por: SuperDraco en 14 Julio 2011, 20:39 pm


2.
lo mas simple es armar un formulario aparte que funcione de msgbox, asi le envias que mensaje Debe mostrar y listo.

Que sencillo, no se como no se me había ocurrido xD


3.
La verdad no tengo el vb para probar aca, intenta cargar la imagen y configurar nuevamente la funcion aligment.

lo he intentado y ni modo (Algo habré echo mal)  :-\

Por cierto, los ejemplos que he visto son códigos de +50 líneas, no creo que se necesite tanto para REajustar el alignment  :-\

¿gastarías mucho tiempo en ponerme un ejemplo? sino da igual, seguiré buscando.



5.
No podes modificar app.path, lo que podes hacer es al inicio de tu aplicacion algo asi:
Código
  1. If app.path <> pathPredeterminado Then End

Creo que te has confundido, entiendo que app.path no se pueda modificar, no quiero modificarlo, lo que quiero es poder usarlo en el módulo que dije  :xD

ese módulo lo que hace es abrir un diálogo para buscar carpetas, y la ruta por defecto es "Equipo", pues yo quiero que se me habrá desde la ruta "app.path"

Me he repasado las funciones del modulo pero creo que solo permite llamarlo de una manera predeterminada, sin añadirle "optionals", aunque bueno, que voy a saber yo... :xD

6.
La barra de progreso no tiene mucha ciencia y no conozco ninguna que funcione por tiempo...

la barra de tu ejemplo parece eficaz, aún tengo que ponerla en practica.

y gracias de nuevo por tu tiempo!


Título: Re: [VB] Dudas de novato...
Publicado por: jaunx en 14 Julio 2011, 22:54 pm
Hola, voy a hacer un par de preguntas...
menos mal que solo eran 2..... :laugh:

para lo del msgbox, mejor utiliza el api MessageBoxA/W, porque desde otro form tambien queda trabada la aplicacion


Título: Re: [VB] Dudas de novato...
Publicado por: 79137913 en 14 Julio 2011, 23:18 pm
HOLA!!!

No, no queda trabada.

GRACIAS POR LEER!!!


Título: Re: [VB] Dudas de novato...
Publicado por: $Edu$ en 15 Julio 2011, 00:40 am
Trabada si fuera Modal pero se sacaria igual.

pitoloko, estas haciendo lo mismo q hice yo, me pase de batch ( obvio que no se ni la mitad que vs) a vb6 porque habia muchos modulos interesantes y todo el tema de crypters etc pero lo unico que aprenderas es a copiar y pegar :S
Te digo porque ya quieres hacer un crypter xD Hacer todo vs solo, tus propias encryptaciones, propio runpe y todo ufff falta muchisimo.


Título: Re: [VB] Dudas de novato...
Publicado por: jaunx en 15 Julio 2011, 00:41 am
seguro que me pasa por no usar productos originales.... :rolleyes:

Código:
'form1
Private Sub Form_Load()
Form2.Show
MsgBox "se ha destrabado"
End
End Sub

'form2
Private Sub Form_Load()
MsgBox "soy el form2"
End Sub


Modifico:
Disculpa 79137913, no lei bien lo que decías e interpreté otra cosa.... :-[


Título: Re: [VB] Dudas de novato...
Publicado por: $Edu$ en 15 Julio 2011, 00:51 am
Que queres demostrar con eso? :S


Título: Re: [VB] Dudas de novato...
Publicado por: Maldades_CK en 15 Julio 2011, 02:08 am
mira, no estoy seguro, pero con la funcion filelen podras conseguir algo!!!
osea calcular el tamaño de los archivos a copiar y luego con un timer testear el tamaño de la copia!! :rolleyes:


Título: Re: [VB] Dudas de novato...
Publicado por: raul338 en 15 Julio 2011, 02:17 am
Anda, me voy parte del dia y ya tienes varias dudas :xD


Al cargar un recurso en un botón, de esta manera:

Código:
Command1.Picture = _
LoadResPicture(102, vbResBMP)

El caption del botón queda desalineado, antes de cargar el BMP el texto estaba centrado en el botón, pero al cargar el BMP, el texto queda alineado al bottom ¿Porque? ¿Como lo vuelvo a centrar?

Image Controls de LeandroA (http://www.leandroascierto.com.ar/categoria/M%C3%B3dulos/articulo/ClsImageControls.php) Aunque no lo creas, es largo cambiar ciertas propiedades (se hace mediante API)






 He visto que el tema de hacer un frame transparente es muy dificil

¿Existe una manera sencilla?
Nunca me lo planteé, pero tal vez te sirva esto (http://www.vbforums.com/showthread.php?t=324363)

el tema de enviar la app al systemtray también, pero bueno, no se si hacer la misma pregunta... no quiero descentrarme en funcionalidades para centrarme en el aspecto de la app  :xD aunque, intento ser perfeccionista  :-[
Busca sobre icono en el systray o en la bandeja. Hay mucho en google y en este foro. Y solo faltaria ocultar el formulario que ya lo sabes :xD




app.path es la variable que almacena la ruta desde donde estamos ejecutando nuestra app ¿Cierto?

Entonces ¿como puedo modificar o llamar a este módulo para asignar "app.path" para que sea la ruta por defecto en la que se debe abrir?
Solo tienes que completar el pidlRoot de BrowseInfo (y poner " & vbNullChar" porque sino creo que romperas el API :xD)


Tengo pensado usar una barra de progreso en todas las aplicaciones que gracias a vosotros consiga hacer.
Lo malo es que no se hacerlo  :xD

He probado una progressbar, la barra consiste en un intervalo de tiempo que podemos definir, por ejemplo cada 500 ms la barrita aumenta, en cambio yo tengo otras necesidades...

Lo que quisiera es usar la barra de progreso por ejemplo así:

(no me se la función para copiar un archivo, así que lo siento por este ejemplo tan malo xD)

Shell copy archivo1 & archivo2 & archivo3
Barra de progreso que calcule el tiempo que va a tardar en copiarse los 3 archivos (No uno a uno, los 3 en total!).
command1.caption TIEMPO Transcurrido
command1.caption TIEMPO TOTAL


vamos, tal y como lo hace windows por ejemplo la barra de progreso de windows que sale al copiar un archivo grande en un directorio... ¿Se podrá usar esa api de windows?

Me he extendido mucho, mi pregunta es si esta barra de progreso puedo utilizarla para el uso que comenté arriba, a mi me parece que no.  :-\
Yo postie un ucProgressBar hace un tiempo al estilo windows7 :P

Y una progressbar es simplemente decorativa. Pone un timer y de ahi vas llenando :P no se si hay API para calcular cuanto puede tardar un copiado  :-\


Título: Re: [VB] Dudas de novato...
Publicado por: SuperDraco en 15 Julio 2011, 11:09 am

Bueno, suficiente, no quiero acabar siendo el pesado de este subforo  :rolleyes:, ya me habeis dado info para probar un par de dias las cosas e ir aprendiendo, gracias a todosss

I'll come back  ::)... con un "par" de preguntas  :xD

un saludo!


Título: Re: [VB] Dudas de novato...
Publicado por: SuperDraco en 15 Julio 2011, 12:08 pm
Bueno, la verdad es que tengo una duda y me gustaría aclararla pa no molestar más xD

El problema es que los controles no se alinean en el programa

además de eso, tengo un label que quiero poner en un botón de comandos, intento traer el label al frente, y llevar el botón al fondo, pero nada, no me deja...

aqui se puede ver como el botón siempre está por encima del label...

(http://img14.imageshack.us/img14/9674/prtscrcapturel.jpg)

y por más que uso "Alinear a la cuadrícula" no se alinean los controles, solamente el texto de adentro.

EDITO: lo primero ya lo he arreglado, ya me he aprendido lo que hace el menú format  :-[, pero lo del label aun no lo consigo.  :xD


Título: Re: [VB] Dudas de novato...
Publicado por: 79137913 en 15 Julio 2011, 13:33 pm
HOLA!!!

Los labels de por si van "pegados al form" no se los envia al frente, una solucion rapida es usar un frame o picturebox ,en ambos podes incluir el label, e incluso podes usar Print en el picturebox para escribir en el.

GRACIAS POR LEER!!!


Título: Re: [VB] Dudas de novato...
Publicado por: SuperDraco en 15 Julio 2011, 13:45 pm
gracias pero lo malo es que el frame o el picturebox no puedo hacerlos transparentes (Al menos usando las propiedades)

 :-\


Título: Re: [VB] Dudas de novato...
Publicado por: 79137913 en 15 Julio 2011, 14:12 pm
HOLA!!!

Secretito XD saca una captura de tu programa pone la parte que queres que sea transparente en el picturebox ponele estilo Flat y Border = 0 entonces la fotito del picturebox se corresponde con el fondo. (hay maneras mas dificiles, pero siempre te intento dar las soluciones faciles).

GRACIAS POR LEER!!


Título: Re: [VB] Dudas de novato...
Publicado por: raul338 en 15 Julio 2011, 14:27 pm
Sobre el label, no se si probaste... Click Derecho -> Traer al frente :P

O sino puedes usar el TLabel que incluyo en mi ucTabs (recuerda poner el ctl y ctx en la misma carpeta) y agregarlos al proyecto :D

En las opciones por defecto de vb el grid donde se pone los controles me parece muy limitado (120x120 twips :P). Yo lo reduzco a la mitad asi me da mas "movimiento" a la hora de poner controles (60x60 twips)


Título: Re: [VB] Dudas de novato...
Publicado por: SuperDraco en 15 Julio 2011, 14:36 pm
probé "Traer al frente", pero no se puede.

tus aportes me parecen demasiado complicados para entender como usarlos, entonces aprenderé un poco más y cuando me vea preparado lo usaré, ese y el progressbar, que ganas tengo de saber usarlos xD

De momento intentaré el "truco" 79137913

En el manual que estoy leyendo, los twips los usaa 30x30, y tu a 60x60, pues yo no me voy a quedar atrás  >:D 80x80, de momento lo dejaré asi (No noto la diferencia al mover los controles).  :xD

un saludo!


Título: Re: [VB] Dudas de novato...
Publicado por: raul338 en 15 Julio 2011, 14:42 pm
Para gustos colores, igual, tengas la medida que tengas, Manteniendo click para mover un control y presionando alt+shift, podes moverlo libremente  ;D

tus aportes me parecen demasiado complicados para entender como usarlos, entonces aprenderé un poco más y cuando me vea preparado lo usaré, ese y el progressbar, que ganas tengo de saber usarlos xD
El TLabel no tiene nada de complicado, es solo agregar 2 archivos a la carpeta y 1 solo al explorador de proyectos, aparece un icono mas en la toolbox (similar al Label) y lo usas como un control mas :D no hay tanta ciencia, es lo mismo con el ProgressBar. Es en los otros controles donde hay cosillas mas complicadas :xD


Título: Re: [VB] Dudas de novato...
Publicado por: SuperDraco en 15 Julio 2011, 14:59 pm
El TLabel no tiene nada de complicado, aparece un icono mas en la toolbox (similar al Label) y lo usas como un control mas :D

!!!!! ups!!! entonces ya estoy tardando en usarlo, gracias de nuevo, pensaba que eran módulos o algo parecido.


Título: Re: [VB] Dudas de novato...
Publicado por: Luna71c0 en 24 Julio 2011, 05:18 am
Yo creo poder responder lo mas basico de todo

Para copiar archivos podes usar Filecopy e.e
Filecopy "C:\a.exe", "C:\carpetadondecopio\a.exe"

igual podes renombrar el archivo

Filecopy "C:\a.exe", "C:\carpetadondecopio\pitoloko.exe"

tambien podes hacer esto e.e

Filecopy "C:\a.exe", "C:\carpetadondecopio\a.exe"
kill "C:\a.exe"

y es como si "moviera" el archivo e.e

XD espero haber servido para algo (? por mas inutil que sea mi respuesta xD