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

#321
Ninguna variable, si sale del bucle es porque se modifico el registro.

Saludos.
#322
Las estructuras se crean con la palabra clave Type, pero en este caso no necesitas usar ninguna.

Te dejo el código de ejemplo ya que es muy útil y no se había visto antes en el foro.


'
'Coded by Slasher
'

Option Explicit

Public Declare Function CreateEvent Lib "kernel32" Alias "CreateEventA" (ByVal lpEventAttributes As Long, ByVal bManualReset As Long, ByVal bInitialState As Long, ByVal lpName As String) As Long

Public Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias "RegCreateKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions As Long, ByVal samDesired As Long, ByVal lpSecurityAttributes As Long, phkResult As Long, lpdwDisposition As Long) As Long

Public Declare Function RegNotifyChangeKeyValue Lib "advapi32.dll" (ByVal hKey As Long, ByVal bWatchSubtree As Long, ByVal dwNotifyFilter As Long, ByVal hEvent As Long, ByVal fAsynchronus As Long) As Long

Public Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Public Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long

Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Public Const HKEY_CLASSES_ROOT = &H80000000
Public Const HKEY_LOCAL_MACHINE = &H80000002

Public Const KEY_NOTIFY = &H10

Public Const REG_OPENED_EXISTING_KEY = &H2
Public Const REG_NOTIFY_CHANGE_NAME = &H1
Public Const REG_NOTIFY_CHANGE_LAST_SET = &H4

Public Const DEFKEY = "Software\" 'Clave que se quiere monitorear.

Public Cancel As Boolean

Sub RegMon()

        Dim hEvent&
        Dim hKey&
        Dim r&

NewTest:
  'Crea un evento para responder a las modificaciones del registro.
  '
  hEvent = CreateEvent(0&, True, 0, vbNullString)
 
  'Abre la clave.
  '
  r = RegCreateKeyEx(HKEY_CLASSES_ROOT, DEFKEY, 0, vbNullString, 0, _
                     KEY_NOTIFY, 0, hKey, REG_OPENED_EXISTING_KEY)
 
  'Inicia el monitoreo de la clave.
  '
  r = RegNotifyChangeKeyValue(hKey, True, _
                              REG_NOTIFY_CHANGE_NAME Or _
                              REG_NOTIFY_CHANGE_LAST_SET, _
                              hEvent, True)
 
  Do While WaitForSingleObject(hEvent, 10)
    'Espera que se modifique, agregue, o elimine
    'algún valor de la clave.
    '
    If Cancel Then
      'Cancelar la espera.
      '
      Exit Sub
    End If
   
    DoEvents
  Loop
 
  'Si se modifica la clave...
  '
  If Not Cancel Then
    Stop
  End If
 
  r = RegCloseKey(hKey)
  r = CloseHandle(hEvent)
 
GoTo NewTest  'Vuelve a comenzar el monitoreo.

End Sub


El código se ejecutará hasta que se establezca la variable global Cancel a True.

Saludos.
#323
Habla con el administrador para que redireccione las peticiones al servidorDB, sólo por el puerto que usa en la conexión.

De otra forma no va a ser posible.

Saludos.
#324
Mira los post pegados que por algo están ahi:

Recopilación de enlaces de Visual Basic.

Hay una sección Descargar Visual Basic / Descargas y otra Introito donde explica como iniciarse.

De esto se habló en el foro un millón de veces...

Saludos.
#325
Si no va a ser una de las claves principales (HKLM, HKCU, etc) si hay que abrirla.

Saludos.
#326
Programación Visual Basic / Re: Contorles OCX
24 Julio 2005, 01:18 AM
Las propiedades se crean con las instrucciones Property Get, Property Let y Property Set.

Con Property Get se devuelve el valor de una propiedad, con Property Let estableces una propiedad y con Property Set se establece una propiedad de objeto.

Por ejemplo:


Private sCaption As String

Property Get Caption() As String
  Caption = sCaption
End property

Property Let Caption(NewVal As String)
  sCaption = NewVal
End Property


Suponiendo que eso está un control llamado MyControl, funcionaría de la siguiente manera:

Cuando desde el código se consulta la propiedad, es decir:


        Dim sData$

  sData = MyControl.Caption


En este caso el programa llama a Property Get, si se depura el código paso a paso (apretando F8) se puede ver bien lo que pasa.

En el caso que se establezcla una propiedad el programa llama a Property Let, sería el siguiente caso:


  MyControl.Caption = "Prueba de Property Let"


El caso de Property Set es el mismo que property Let, pero la diferencia es que se llama cuando se usa la instrucción Set para asignar un objeto. Seria el siguiente caso, suponiendo que hay una propiedad Font:


  Set MyControl.Font = Me.Font


Y se implementaría en la clase de la siguiente manera:


Property Get Font()As Font
  Set Font = UserControl.Font
End Property

Property Set Font(NewVal As Font)
  Set UserControl.Font = NewVal
End property


Por último, en el caso de propiedades Variant hay que usar los tres (Get, Let y Set), ya que se puede asignar cualquier tipo de variable.

Saludos.
#327
Mejor usando pipes, ya se habló de eso en el foro.

Saludos.
#328
Con RegNotifyChangeKeyValue cada vez que se modifique la clave que se está monitoreando te va a avisar. Necesitas crear un objeto Event con CreateEvent, entonces lo usas en la llamada a RegNotifyChangeKeyValue. Luego con WaitForSingleObject esperas a que el objeto Event esté en signaled (cuando WaitForSingleObject devuelva WAIT_OBJECT_0), esto significa que se realizó una modificación en el registro entonces podrás tomar las desiciones necesarias.

No te olvides de volver el evento a su estado original usando ResetEvent para poder seguir monitoreando la clave.

Saludos.
#329
En el evento Change

TextBox.SelStart=Len(TextBox)
#330
Programación Visual Basic / Re: joiner
23 Julio 2005, 03:40 AM
Podrias escribir en el primer archivo el offset del comienzo del otro (que seria el tamaño del primero) y el tamaño para asi poder extraerlo.

Saludos.