desactivar y activar el autorun de un pen drive

Iniciado por Fabricio, 16 Junio 2009, 22:18 PM

0 Miembros y 1 Visitante están viendo este tema.

Dessa

#10
Buena Fabricio  ;) ,  busca como usar "SendNotifyMessage" y te evitas de matar el explorer, hacés lo mismo y no se nota el parpadeo de cerrar el explorer.

Saludos


PD: Buen dato Seba
Adrian Desanti

Fabricio

#11
hola estuve mirando info sobre SendNotifyMessage Function en la pagina de microsoft http://msdn.microsoft.com/en-us/library/ms644953.aspx  

Private Declare Function SendNotifyMessage Lib "user32" Alias "SendNotifyMessageA"  (ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

hay cosas que no entiendo ejemplo como hago para obtener el Handle (hwnd) del explorer.exe (ya que no es una ventana no puedo usar Find Windows) y que mensaje debo enviar (msg)

saludos

Dessa

#12
Private Const HWND_BROADCAST = &HFFFF

HWND_BROADCAST te va a servir de hwnd para que el mensaje llegue.

mensaje:
Private Const WM_SETTINGCHANGE = &H1A









Adrian Desanti

Dessa

Probá así, por lo menos a mí en XP-SP3 y W7 me funciona bien



Option Explicit
'Private Declare Function SendNotifyMessage Lib "user32" Alias "SendNotifyMessageA" (ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function SendNotifyMessage Lib "user32" Alias "SendNotifyMessageA" (ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const HWND_BROADCAST = &HFFFF: Private Const WM_SETTINGCHANGE = &H1A


Private Sub Form_Load()

Command1.Caption = "Autorun si"
Command2.Caption = "Autorun no"

End Sub

Private Sub Command1_Click()
   
    Dim WshShell As Object
    Set WshShell = CreateObject("WScript.Shell")
    WshShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoDriveTypeAutoRun", 145, "REG_DWORD"
    Set WshShell = Nothing
   
    Call SendNotifyMessage(&HFFFF, &H1A, 0, ByVal 0)

End Sub

Private Sub Command2_Click()
   
    Dim WshShell As Object
    Set WshShell = CreateObject("WScript.Shell")
    WshShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoDriveTypeAutoRun", 181, "REG_DWORD"
    Set WshShell = Nothing
   
    Call SendNotifyMessage(&HFFFF, &H1A, 0, ByVal 0)

End Sub




S2
Adrian Desanti

Fabricio

Hola Dessa muchas gracias me funciono d 10  ;-)
ademas segui leyendo y ya entendi que hacen HWND_BROADCAST (el mensaje llega a todas las ventanas) y WM_SETTINGCHANGE (sirve para que las ventanas tomen los cambios)

de nuevo gracias
un saludo

Dessa

Cita de: fabricioAngel en 19 Junio 2009, 15:22 PM
ademas segui leyendo y ya entendi que hacen HWND_BROADCAST (el mensaje llega a todas las ventanas) y WM_SETTINGCHANGE (sirve para que las ventanas tomen los cambios)

Exacto, S2


Adrian Desanti