Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Slasher-K

#381
La función Format sirve para eso:


      Dim sNumber$, dNumber#

  dNumber = 34324 / 1024

  sNumber = Format$(dNumber, "0.00")


Esa operación daría 33,51953125, pero con la función Format y esa cadena de formato lo reduciría a 33,52

Saludos.
#382
Si querés podés crear tu propio control ProgressBar de una forma muy fácil usando un PictureBox.

En un formulario poné un PictureBox con el nombre picProgress y un botón con el nombre cmdTest y pegá el siguiente código en el formulario.


Option Explicit

Private Sub IncreaseProgress(ByVal Value As Single, ByVal Max As Long)
          Dim snWidth!
         
  With picProgress
    snWidth = .Width / Max
   
    picProgress.Line (10, 10)-(snWidth * Value, .Height - 40), , BF
  End With
End Sub

Private Sub cmdTest_Click()
      Dim i%, snTime!

  For i = 1 To 100
    snTime = Timer
   
    Do While (Timer - snTime) < 0.25
      DoEvents
    Loop
   
    Call IncreaseProgress(i, 100)
  Next
End Sub


Asi se pueden personalizar los colores, fuente, etc.

Y BenRu ya deja de preguntar "cómo cómo y cómo", busca en google que hay muchos ejemplos y documentación sobre el control ProgressBar.

Saludos.
#383
Mira la función RegConnectRegistry. Te conectas a una de las claves del registro de una máquina remota y luego usas las funciones locales con el handle que devuelve.

Saludos.
#384
Podrías hacer un bucle por todos los registros y usar una variable para sumar cada valor, vamos que es algo muy básico.

Por ej:


Function AddReg(csRecordset As Recordset, FieldIndex As Integer) As Long
        Dim lData&

  Call csRecordset.MoveFirst
 
  Do While Not csRecordset.EOF
    If IsNumeric(csRecordset(FieldIndex)) Then
      lData = lData + CLng(csRecordset(FieldIndex))
    End If
  Loop

  AddReg = lData
End Function


Busca un poco en google o en la documentación del control antes de prguntar.

Saludos.
#385
Programación Visual Basic / Re: Gusano!!
26 Junio 2005, 08:09 AM
No es tan dificil hacer un binder. Primero utilizas GetBinaryType para verificar que sea un archivo PE. Luego extraes el icono prederminado usando la función ExtractIcon y lo guardas.

Una vez hecho esto agregas el archivo que querés ocultar al final de tu ejecutable y guardas la posición de inicio en alguna parte de tu programa, podrías crear una sección nueva pero a menudo los AVs lo detectan :-\.

Para terminar le cambias el icono al programa usando las funciones BeginUpdateResource y UpdateResource.

También podrías cifrar el ejecutable que ocultas para que sea menos alevoso. Luego pongo un ejemplo de esto último.

Cabe destacar que es mucho más divertido hacer todo lo anterior pero leyendo directamente el ejecutable :P, sin usar las funciones de Windows. Por eso es muy necesario conocer la estructura que nombraba en un post anterior.

Saludos.
#386
Podrías utilizar tabulaciones para separar los campos y ponerlo en un TextBox. Por ejemplo:


Sub ReadTable(csRecordset As Recordset)
          Dim sData$, i%
         
  Call csRecordset.MoveFirst
 
  Do While Not csRecordset.EOF
    For i = 0 To csRecordset.Fields.Count - 1
      sData = sData & csRecordset.Fields(i) & Chr$(9) & vbCrLf
    Next
   
    Call csRecordset.MoveNext
  Loop
 
  txtTable = sData
End Sub


Saludos.
#387
Podrías usar un control Timer que actualice la bd periódicamente.

Saludos.
#388
Hay un control que se llama Microsoft Agent Control 2.0. Si no me equivoco ya viene con VB así que sólo tenés que agregarlo desde el cuadro de Componentes.

Busca info sobre este control, no es tan dificil usarlo.

También existe un editor para crear los personajes pero tenés que tener las imágenes de todos los movimientos, acciones, etc.

Saludos.
#389
Programación Visual Basic / Re: Gusano!!
26 Junio 2005, 01:10 AM
I love you fue una verdadera maravilla pero en ese entonces los AVs no lo detectaban y por eso fue tan poderoso, hoy en día no se puede hacer nada en VBS que no detecten los AVs

Saludos.
#390
Cita de: BenRu en 25 Junio 2005, 04:26 AM
Cita de: [P$3ud0r00†] en 25 Junio 2005, 02:48 AM
i que quieres?.. que te den todo el robot hecho en una linea?...


No, pero supongo que tendra que aver algun metodo para abreviar

Insisto que crear un archivo de recursos y utilizar los Id para obtener los datos es una buena opción.

Por ejemplo vamos a suponer que desde el Id 100 al id 110 son saludos, y del 105 a 110 son saludos con un estado de ánimo deprimido. Entonces creamos las siguientes constantes:


Const MSG_GREET_BASE = 100  'Es el id base de los saludos.
Const MSG_GREET_CNT = 10  'Cantidad de saludos.
Const MSG_GREET_STATE1_BASE = 5  'Id base relativo a MSG_GREET_BASE de los saludos con el estado de ánimo 1 (supongamos que es deprimido)

Const ACTION_GREETINGS = 1  'Acción de saludar.

Const BOT_STATE_DEP = 1     'Estado deprimido.
Const BOT_STATE_HAPPY = 2   'Estado feliz.
Const BOT_STATE_ANGRY = 3   'Estado enojado.
Const BOT_STATE_NORMAL = 4  'Sin emociones :P


Luego se crea un procedimiento que reconozca todas las acciones y que la ejecute:



Private iCurState As Integer  'Variable de estado.

Private Sub PerformAction(Action as Integer)
  Select Case Action
    Case ACTION_GREETINGS
   
  End Select
End Sub

Function GetGreet(State As Integer) As String
           Dim iItem%, sMsg$

  Select Case State
    Case BOT_STATE_DEP: iItem = (MSG_GREET_BASE + MSG_GREET_STATE1_BASE) + _
                                (Rnd * (MSG_GREET_CNT - MSG_GREET_STATE1_BASE))
    Case BOT_STATE_NORMAL: iItem = (MSG_GREET_BASE + (Rnd * MSG_GREET_STATE1_BASE))
  End Select

  sMsg = LoadResString(iItem)

  GetGreet = sMsg
End Sub



Sólo es una idea, hay muchas formas más de hacerlo.

Saludos.