elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


  Mostrar Mensajes
Páginas: [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... 55
1  Programación / Programación Visual Basic / Re: Conectar o Bajar un MDB situado en un servidor FTP en: 10 Enero 2006, 17:25 pm
Para eso tendrías que crear el proceso usando CreateProcess y luego llamar a WaitForSingleObject hasta que termine dicho proceso.

Escribí un ejemplo para que te quede más claro. El siguiente procedimiento ExecuteAndWait no volverá hasta que termine la descarga o hasta que la variable global CancelDownload se establezca a True.

Código:
Option Explicit

Const STARTF_USESHOWWINDOW = &H1

Type STARTUPINFO
  cb              As Long
  lpReserved      As String
  lpDesktop       As String
  lpTitle         As String
  dwX             As Long
  dwY             As Long
  dwXSize         As Long
  dwYSize         As Long
  dwXCountChars   As Long
  dwYCountChars   As Long
  dwFillAttribute As Long
  dwFlags         As Long
  wShowWindow     As Integer
  cbReserved2     As Integer
  lpReserved2     As Long
  hStdInput       As Long
  hStdOutput      As Long
  hStdError       As Long
End Type

Type PROCESS_INFORMATION
  hProcess    As Long
  hThread     As Long
  dwProcessId As Long
  dwThreadId  As Long
End Type

Declare Function CreateProcess Lib "kernel32" Alias "CreateProcessA" (ByVal lpApplicationName As String, ByVal lpCommandLine As String, ByVal lpProcessAttributes As Long, ByVal lpThreadAttributes As Long, ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, ByVal lpEnvironment As Long, ByVal lpCurrentDriectory As String, lpStartupInfo As STARTUPINFO, lpProcessInformation As PROCESS_INFORMATION) As Long
Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long


Public CancelDownload As Boolean

Sub ExecuteAndWait(CommandLine As String, Optional ShowWindow As VbAppWinStyle)
        Dim lpProcess As PROCESS_INFORMATION
        Dim lpStartup As STARTUPINFO
        Dim r&

  ' Oculta la ventana del proceso.
  '
  lpStartup.dwFlags = STARTF_USESHOWWINDOW
  lpStartup.wShowWindow = ShowWindow
 
  ' Se debe establecer el valor inicial del
  ' tamaño de la estructura.
  '
  lpStartup.cb = LenB(lpStartup)
 
  ' Crea el proceso.
  '
  r = CreateProcess(vbNullString, CommandLine, 0&, 0&, False, 0&, 0&, _
                    vbNullString, lpStartup, lpProcess)
 
  If r Then
    ' Si el proceso se creo correctamente.
    '
    Do While WaitForSingleObject(lpProcess.hProcess, 100)
      ' Espera hasta que termine el proceso.
      '
      If CancelDownload Then
        'Cancelar la espera.
        '
        Exit Sub
      End If
     
      DoEvents
    Loop
   
    CancelDownload = False
   
    ' Libera el controlador de proceso.
    '
    Call CloseHandle(lpProcess.hProcess)

  End If
End Sub

Saludos.
2  Programación / Programación Visual Basic / Re: Articulo interesante - crear Dll win32 en vb en: 7 Enero 2006, 17:16 pm

Referencia de Windows GDI

Ahí está toda la documentación del uso de objetos GDI y multimedia. Más completo que eso no hay nada.

Saludos.
3  Programación / Programación Visual Basic / Re: ayuda con un control text en: 5 Enero 2006, 21:34 pm
Lo que dice Gangrel es correcto, pero quiero hacer una pequeña correción porque eso es muy lento. Las llamadas a interfaces son muy lentas porque llevan bastante llamadas en el medio, mejor concatenar los datos en la variable y luego establecer la propiedad el TextBox.

Código:
Do
 sDatos = sDatos & var & vbCrLf
Loop

txtDatos.Text = sDatos

Saludos.
4  Programación / Programación Visual Basic / Re: Timer Grande en: 5 Enero 2006, 17:13 pm
Poné el siguiente código en un módulo estándar, y crea un formulario que se llame frmMain.

Este ejemplo utiliza la función SetTimer de la API para disparar un temporizador controlado mediante un bucle y la función Timer, de Visual Basic.

Establece la constante TIMER_INTERVAL a la cantidad de segundos que quieres que sea el intervalo del temporizador. Esto es sólo de prueba, luego verás cómo manejas ese tema.

Para iniciar el temporizador llama al procedimiento StartLongTimer, y para detenerlo a TerminateLongTimer.

Cuando se cumpla cada intervalo de tiempo el temporizador lo notificará llamando al procedimiento LongTimer_Timer, y allí realizarás las tareas que necesites.


Código:
Option Explicit

Const TIMER_INTERVAL = 86400  ' Intervalo del Timer, en segundos (le puse 1 día).

Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long

Private bTerminateTimer As Boolean

Sub Main()
  Call frmMain.Show
End Sub

Sub StartLongTimer()
  bTerminateTimer = False
 
  ' Crea el temporizador del sistema que se ejecuta de
  ' forma asíncrona, de esta manera se evita el bloqueo
  ' del programa.
  '
  Call SetTimer(0&, 0&, 1000&, AddressOf LongTimerProc)
End Sub

Sub TerminateLongTimer()
  ' Establece la variable a verdadero para que
  ' se termine el procedimiento del temporizador.
  '
  bTerminateTimer = True
End Sub

Sub LongTimerProc(ByVal hWnd As Long, ByVal uMsg As Long, ByVal idEvent As Integer, ByVal dwTime As Long)
        Dim snTime!

  Call KillTimer(0&, idEvent)
 
  ' Guarda el intervalo de tiempo actual.
  '
  snTime = Timer
 
  Do While (Timer - snTime) < TIMER_INTERVAL
    ' Espera hasta que pase el tiempo especificado
    ' a menos que se cancele.
    '
   
    If bTerminateTimer Then Exit Do
   
    DoEvents
  Loop
 
  If Not bTerminateTimer Then
    ' Si no se canceló el temporizador notifica del evento
    ' y vuelve a inicializar el contador.
    '
    Call LongTimer_Timer
    Call StartLongTimer
  End If
End Sub

Sub LongTimer_Timer()
  ' Este procedimiento se llamará cada vez que pase el lapso de tiempo
  ' configurado para el temporizador.
  '
 
  ' Acá se puede hacer cualquier cosa que desee.
  '
  Debug.Print "Timer interval: " & Time$
End Sub

Saludos.
5  Programación / Programación Visual Basic / Re: ¿Como llamar un control de un UserControl desde un modulo? en: 5 Enero 2006, 16:41 pm
Crea una propiedad del tipo de objeto que necesitas.

Por ejemplo si en el UserControl tenés un control Label que es el texto del control, creas una propiedad para acceder a la etiqueta. Vamos a poner un ejemplo hipotético que el Label se llama lblCaption, entonces quedaría algo así:

Código:
Property Get TextLabel() As Label
  Set TextLabel = lblCaption
End Property

Si el UserControl es privado esto va a funcionar bien, en el caso que sea público no se puede declarar el valor de retorno de la propiedad como Label, porque Label es un objeto privado, por lo tanto deberá quedar como Object pero lo que devolverá será el label, en resumen es lo mismo.

Código:
Property Get TextLabel() As Object
  Set TextLabel = lblCaption
End Property

Saludos.
6  Programación / Programación Visual Basic / Re: Como matar procesos en memoria?? en: 4 Enero 2006, 16:12 pm
Con la función TerminateProcess eliminas un proceso del sistema.

Ya se habló de esto en el foro y hay varios ejemplos, busca un poco.

Saludos.
7  Programación / Programación Visual Basic / Re: Cambiar Fecha y Hora en: 4 Enero 2006, 00:49 am
Código:
Time = CDate("12:00:00 am")

Saludos.
8  Programación / Programación Visual Basic / Re: Error----->"invalid outside procedure" en: 3 Enero 2006, 06:19 am
intenta cambiarla el tipo no le pongas byte ponele otra como integer y no lo tenes que declarar en el form_load poruqe no te dejaria usarla en otro lado declarada asi como esta, esta bien arriba pone
Código:
dim vidas as integer
y si pones vidas = 3 estarias declarandola como constante y encima creo qeu esta mal al vidas = 3 declarada como habias dicho antes en el form_load ya que al principio va a ser 3 y la podes usar con el valor que tenga en el momento por cualquier procedimiento, ya que estamos de que es el juego de que se trata???
a mi no me funciona eso de
Código:
vidas =vidas 1
yo habia hecho en un timer seg = seg + 1 y simepre me qeudaba en uno el timer no las sumaba y estaba declarado el tipo de la variable y tambioen lo probe sin option explicit y nada, ahsta declare en forma global la variable y anda porque puede ser yo queria hacer un tipo reloj cuando se activara el timer iba a sumar de a uno (es la uinica forma que se hacer un reloj). Gracias y salu2.

PD: si no esta claro postealo y te lo hago un poco mas mejor  ;D. espero que eso solucione tu problema  ;)
Sancho Mazorka     :P

Mejor relee el tutorial porque tenés errores muy graves de conceptos básicos.

JoKker, tenés que declarar la variable en el sector de Declaraciones, arriba de todo del módulo antes de cualquier procedimiento.

Saludos.
9  Programación / Programación Visual Basic / Re: No se ha definido el tipo definido por el usuario. (error, ayudenme plz) en: 3 Enero 2006, 06:16 am
Tenés que agregar las referencias a las librerías que contienen las clases que deseas usar.

Saludos.
10  Programación / Programación Visual Basic / Re: Se buscan BetaTesters en: 3 Enero 2006, 02:19 am
Publica el código o sino no publiques el ejecutable, nadie con un poco de sentido común ejecutaría un programa sin saber lo que hace...

Saludos.
Páginas: [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... 55
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines