[VB] Dudas de novato...

Iniciado por SuperDraco, 14 Julio 2011, 19:17 PM

0 Miembros y 2 Visitantes están viendo este tema.

SuperDraco

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:

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 (vb) [Seleccionar]
Private Const BIF_RETURNONLYFSDIRS As Long = &H1
Private Const BIF_DONTGOBELOWDOMAIN As Long = &H2
Private Const BIF_RETURNFSANCESTORS As Long = &H8
Private Const BIF_BROWSEFORCOMPUTER As Long = &H1000
Private Const BIF_BROWSEFORPRINTER As Long = &H2000
Private Const BIF_BROWSEINCLUDEFILES As Long = &H4000
Private Const MAX_PATH As Long = 260

Type BrowseInfo
   hOwner As Long
   pidlRoot As Long
   pszDisplayName As String
   lpszINSTRUCTIONS As String
   ulFlags As Long
   lpfn As Long
   lParam As Long
   iImage As Long
End Type

Type SHFILEOPSTRUCT
   hwnd As Long
   wFunc As Long
   pFrom As String
   pTo As String
   fFlags As Integer
   fAnyOperationsAborted As Boolean
   hNameMappings As Long
   lpszProgressTitle As String
End Type

Declare Function SHGetPathFromIDListA Lib "shell32.dll" ( _
   ByVal pidl As Long, _
   ByVal pszBuffer As String) As Long

Declare Function SHBrowseForFolderA Lib "shell32.dll" ( _
   lpBrowseInfo As BrowseInfo) As Long


Function BrowseFolder(Optional Caption As String = "") As String

Dim BrowseInfo As BrowseInfo
Dim FolderName As String
Dim ID As Long
Dim Res As Long

With BrowseInfo
  .hOwner = 0
  .pidlRoot = 0
  .pszDisplayName = String$(MAX_PATH, vbNullChar)
  .lpszINSTRUCTIONS = Caption
  .ulFlags = BIF_RETURNONLYFSDIRS
  .lpfn = 0
End With

FolderName = String$(MAX_PATH, vbNullChar)
ID = SHBrowseForFolderA(BrowseInfo)
If ID Then
  Res = SHGetPathFromIDListA(ID, FolderName)
  If Res Then
      BrowseFolder = Left$(FolderName, InStr(FolderName, vbNullChar) - 1)
  End If
End If








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 (vb) [Seleccionar]

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)
On Error Resume Next
 
 Dim TheCaption As String
 Dim RangeDiff As Long
 
 ' Make sure a PictureBox control was specified
 If ThePictureBox Is Nothing Then Exit Function
 
 If ByPassChecks = False Then
   
   ' Make sure the AutoRedraw property is on, or the ProgressBar will be
   ' blank if the PictureBox is repainted by Windows
   ThePictureBox.AutoRedraw = True
   
   ' Make sure the PictureBox doesn't AutoSize
   ThePictureBox.AutoSize = False
   
   ' Make sure there's no picture set
   Set ThePictureBox.Picture = Nothing
   
   ' Make sure progressbar is visible
   ThePictureBox.Visible = True
   
 End If
 
 ' Calculate the percent of the progressbar
 RangeDiff = Max - Min
 If RangeDiff = 0 Then
   TheCaption = "0.0%"
 Else
   TheCaption = Format((Value - Min) / RangeDiff, "0.0%")
 End If
 
 ' Draw the lines on the PictureBox that make it look like a ProgressBar
 If RangeDiff = 0 Then
   ThePictureBox.Line (0, 0)-(0, ThePictureBox.ScaleHeight), BackColor, BF
   ThePictureBox.Line (0, 0)-(ThePictureBox.ScaleWidth, ThePictureBox.ScaleHeight), FillColor, BF
 Else
   ThePictureBox.Line (0, 0)-((((Value - Min) / RangeDiff) * ThePictureBox.ScaleWidth), ThePictureBox.ScaleHeight), BackColor, BF
   ThePictureBox.Line ((((Value - Min) / RangeDiff) * ThePictureBox.ScaleWidth), 0)-(ThePictureBox.ScaleWidth, ThePictureBox.ScaleHeight), FillColor, BF
 End If
 
 ' If no caption, exit
 If ShowProgressCaption = False Then
   ThePictureBox.Refresh
   Exit Function
 End If
 
 ' Set the text location depending on where the user specified
 If Alignment = vbCenter Then
   ThePictureBox.CurrentX = (ThePictureBox.ScaleWidth / 2 - ThePictureBox.TextWidth(TheCaption) / 2)
 ElseIf Alignment = vbLeftJustify Then
   ThePictureBox.CurrentX = 1
 ElseIf Alignment = vbRightJustify Then
   ThePictureBox.CurrentX = (ThePictureBox.ScaleWidth - ThePictureBox.TextWidth(TheCaption)) - 1
 End If
 ThePictureBox.CurrentY = (ThePictureBox.ScaleHeight - ThePictureBox.TextHeight(TheCaption)) / 2
 
 ' Print the caption directly onto the PictureBox
 ThePictureBox.ForeColor = ForeColor
 ThePictureBox.Print TheCaption
 ThePictureBox.Refresh
 
End Function
No he vuelto, solo estoy de paso.

79137913

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 (vb) [Seleccionar]
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 (vb) [Seleccionar]
Pbar1.maxvalue = 3 ' no recuerdo si era maxvalue u otra pero bueno, 3 representa la cantidad de operaciones que realizas.
For x = 0 to 3
Call HacerTodosLosProcedimientos()
Pbar1.value = X
Next


GRACIAS POR LEER!!!
"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



Cita de: 79137913 en 14 Julio 2011, 19:47 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


Cita de: 79137913 en 14 Julio 2011, 19:47 PM
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.



Cita de: 79137913 en 14 Julio 2011, 19:47 PM
5.
No podes modificar app.path, lo que podes hacer es al inicio de tu aplicacion algo asi:
Código (vb) [Seleccionar]
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

Cita de: 79137913 en 14 Julio 2011, 19:47 PM
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!
No he vuelto, solo estoy de paso.

jaunx

Cita de: pitoloko en 14 Julio 2011, 19:17 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

79137913

HOLA!!!

No, no queda trabada.

GRACIAS POR LEER!!!
"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*

$Edu$

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.

jaunx

#6
seguro que me pasa por no usar productos originales.... :rolleyes:


'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.... :-[

$Edu$

Que queres demostrar con eso? :S

Maldades_CK

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:

raul338

Anda, me voy parte del dia y ya tienes varias dudas :xD

Cita de: pitoloko en 14 Julio 2011, 19:17 PM

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

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 Aunque no lo creas, es largo cambiar ciertas propiedades (se hace mediante API)






Cita de: pitoloko en 14 Julio 2011, 19:17 PM

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

Cita de: pitoloko en 14 Julio 2011, 19:17 PM
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




Cita de: pitoloko en 14 Julio 2011, 19:17 PM

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)

Cita de: pitoloko en 14 Julio 2011, 19:17 PM

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  :-\