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 - Karcrack

#1101
Esta muy bien :D

Solo hay un problemita, y es que ,claro, al no haber un API oficial (y puede que no la haya) puede que mañana deje de ir, y tocaria cambiar seguramente todas las URLs que utilizas...

A ver cuando se dignan y hace un API decente...
#1102
Doy por hecho que en cada build del MSN se encuentra en un lugar ese OPCODE...

Tu programa comprueba que la version sea la correcta? O encuentra el OPCODE de una forma 'estandar'? Si no creo que es peligroso usarlo sin saber si la version es compatible :-\
#1103
Cuando consiga un W$ 7 lo intentare a ver que tengo que hacer para ocultarlo :P
#1104
Pero en W7 funciona el App.TaskVisible de VB? :-\
#1105
Código (vb) [Seleccionar]
'USER32
Private Declare Function ShowWindow Lib "USER32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Private Declare Function FindWindowA Lib "USER32" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Const SW_HIDE   As Long = 0
Private Const SW_NORMAL As Long = 1
Private Const CLASSNAME As String = "ThunderRT6Main"

Public Sub AppTaskVisible(ByVal bVisible As Boolean)
   Dim lHwnd           As Long
   
   lHwnd = FindWindowA(CLASSNAME, App.Title)
   If lHwnd Then
       Call ShowWindow(lHwnd, IIf((bVisible = True), SW_NORMAL, SW_HIDE))
   End If
End Sub

Bueno, la gente se queja de que App.TaskVisible es detectada... asi que aqui esta, el sustituto :P

Lo he probado en W$ XP SP3, a ver si alguien puede probarlo en otro W$ ;)

Olvidaba decir que hay que probarlo compilado!

Saludos ;)
#1106
Cita de: Dessa en 12 Febrero 2010, 12:06 PM
Ahora sí, no serán los discos externos USB los DRIVE_FIXED o propiamente algunos Pendrive ?
Ambos pueden dar esta falsa informacion usando GetDriveType
#1107
Cita de: Dessa en 12 Febrero 2010, 11:24 AM
Hola karcrack, no llegué a entender, tambien con GetLogicalDrive algunos PenDrive no son reconocidos como extraibles ?

S2
Con GetDriveType() puede que algunos Pendrives removibles se detecten como DRIVE_FIXED
Es por eso que se ha de sacar el BusType, que es como realmente se sabe si es USB o no ;)
#1108
Código (vb) [Seleccionar]
Option Compare Text

Ejemplo:
Código (vb) [Seleccionar]
Option Explicit
Option Compare Text

Private Sub Form_Load()
    If "Hola" = "HOLA" Then
        MsgBox "=)"
    End If
End Sub
#1109
Código (vb) [Seleccionar]
Option Explicit
'---------------------------------------------------------------------------------------
' Module    : mNativeEnumDrives
' Author    : Karcrack
' Date      : 11/02/2010
' Purpose   : Enumerate Drives, allow filtering by device type
'---------------------------------------------------------------------------------------
'NTDLL
Private Declare Function NtQueryInformationProcess Lib "NTDLL" (ByVal hProcess As Long, ByVal ProcessInformationClass As Long, ProcessInformation As Any, ByVal ProcessInformationLength As Long, ReturnLength As Long) As Long

Private Type PROCESS_DEVICEMAP_INFORMATION
   DriveMap                As Long
   DriveType(1 To 32)      As Byte
End Type

Public Enum DeviceType
   DRIVE_NOFILTER = -1
   DRIVE_UNKNOWN
   DRIVE_NO_ROOT_DIR
   DRIVE_REMOVABLE
   DRIVE_FIXED
   DRIVE_REMOTE
   DRIVE_CDROM
   DRIVE_RAMDISK
End Enum

Private Const ProcessDeviceMap = 23

Public Function NtGetDrives(Optional ByVal lFilterType As DeviceType = DRIVE_NOFILTER) As Collection
   Dim tPDC                As PROCESS_DEVICEMAP_INFORMATION
   Dim i                   As Long
   
   Set NtGetDrives = New Collection
   
   If NtQueryInformationProcess(-1, ProcessDeviceMap, tPDC, Len(tPDC), ByVal 0&) = 0 Then
       For i = 0 To 25
           If tPDC.DriveMap And 2 ^ i Then
               If (lFilterType = -1) Or (tPDC.DriveType(i + 1) = lFilterType) Then
                   NtGetDrives.Add Chr$(65 + i) & ":\"
               End If
           End If
       Next i
   End If
End Function


Simplemente es una modificación de este código:
http://www.advancevb.com.ar/?p=335

Ejemplo de uso:
Código (vb) [Seleccionar]
Private Sub Form_Load()
   Dim vItem               As Variant
   
   For Each vItem In NtGetDrives(DRIVE_REMOVABLE)
       MsgBox vItem
   Next vItem
End Sub


Mostrará las unidades extraibles!
Hay que tener en cuenta que no todos los PenDrives USB son detectados como unidades extraibles, para mas precision mirar este codigo que saca el BusType:
http://www.advancevb.com.ar/?p=345


Cualquier duda preguntar! :)

Saludos! ::)
#1110
Es que nadie piensa en las APIs del WinInet? :-(
http://msdn.microsoft.com/en-us/library/aa385331(VS.85).aspx

No creo que encuentres un sustituto ya hecho para el control INET, pero puedes hacertelo tu y luego compartirlo :D!