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

#351
Para la unidades "discos removibles" proba con este code (estoy con Windows seven y no puedo probar mucho en XP)

Agregá un combobox



Option Explicit
Private Declare Function GetLogicalDrives Lib "Kernel32" () As Long
Private Declare Function GetDriveType Lib "Kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
Private Declare Function GetDiskFreeSpaceEx Lib "Kernel32" Alias "GetDiskFreeSpaceExA" (ByVal lpDirectoryName As String, lpFreeBytesAvailableToCaller As Currency, lpTotalNumberOfBytes As Currency, lpTotalNumberOfFreeBytes As Currency) As Long
Private Declare Function GetVolumeInformation Lib "Kernel32" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long

Private Sub Form_Load()

Dim LDs As Long, Cnt As Long, sDrives As String
Dim lpFreeBytesAvailableToCaller As Currency, TotalBytes As Currency, FreeBytes As Currency

Dim sistemaArchivos As String: sistemaArchivos = String$(255, Chr$(0))
Dim volumen As String: volumen = String$(255, Chr$(0))
Dim Nserie As Long


LDs = GetLogicalDrives

For Cnt = 0 To 25
  If (LDs And 2 ^ Cnt) <> 0 Then
    If GetDriveType(Chr$(65 + Cnt) + ":\") = 2 Then
      sDrives = sDrives + " " + Chr$(65 + Cnt)
    'MsgBox GetDriveType(Chr$(65 + Cnt) + ":\")
    End If
  End If
Next Cnt
   
'MsgBox Trim(sDrives)

Dim ssDrives() As String
ssDrives() = Split(Trim(sDrives), " ")

'MsgBox ssDrives(0)
'MsgBox ssDrives(1)

'MsgBox UBound(ssDrives)
If UBound(ssDrives) < 0 Then
  MsgBox "No hay Ubidades extraibles"
  'End 'Exit Sub
End If

Dim i As Long
For i = 0 To UBound(ssDrives)
 
  Call GetDiskFreeSpaceEx(ssDrives(i) + ":\", lpFreeBytesAvailableToCaller, TotalBytes, FreeBytes)
  Call GetVolumeInformation(ssDrives(i) + ":\", volumen, Len(volumen), Nserie, 0, 0, sistemaArchivos, Len(sistemaArchivos))
  'MsgBox ssDrives(i) + ":\" & vbTab & Format(TotalBytes / 102400, "0.00") & " GB"
  Combo1.AddItem (ssDrives(i) + ":\" & "    " & Format(TotalBytes / 102400, "0.00") & " GB") & "    " & Trim(volumen)

Next i

If Combo1.ListCount > 0 Then Combo1.ListIndex = 0

 
End Sub







#352
Hola fabricio, fijate si asi llegan los mensajes (PostMessage)

la letra de la unidad en mayuscula

Call SHFormatDrive(Me.hwnd, (Asc("A:") - 65), 0&, 0&)




Option Explicit

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long

Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Private Declare Function SHFormatDrive Lib "shell32" (ByVal hwnd As Long, ByVal Drive As Long, ByVal fmtID As Long, ByVal options As Long) As Long

Private Const WM_LBUTTONDOWN = &H201
Private Const WM_LBUTTONUP = &H202

Private Sub Form_Load()

Timer1.Enabled = True
Timer2.Enabled = False
Timer1.Interval = 100
Timer2.Interval = 100

End Sub

Private Sub Command1_Click()

Call SHFormatDrive(Me.hwnd, (Asc("A:") - 65), 0&, 0&)

End Sub

Private Sub Timer1_Timer()

Dim Hwndl As Long

Hwndl = FindWindow("#32770", vbNullString)
Hwndl = FindWindowEx(Hwndl, 0, "Button", "&Iniciar")

If Hwndl <> 0 Then
  Call PostMessage(Hwndl, WM_LBUTTONDOWN, 0, 0)
  Call PostMessage(Hwndl, WM_LBUTTONDOWN, 0, 0)
  Call PostMessage(Hwndl, WM_LBUTTONUP, 0, 0)
  Timer1.Enabled = False
  Timer2.Enabled = True
End If

End Sub

Private Sub Timer2_Timer()

Dim Hwndl As Long

Hwndl = FindWindow("#32770", vbNullString)
Hwndl = FindWindowEx(Hwndl, 0, "Button", "Aceptar")

If Hwndl <> 0 Then
Call PostMessage(Hwndl, WM_LBUTTONDOWN, 0, 0)
Call PostMessage(Hwndl, WM_LBUTTONDOWN, 0, 0)
Call PostMessage(Hwndl, WM_LBUTTONUP, 0, 0)
Timer2.Enabled = False
End
End If

End Sub



Saludos


#353
Hola, dejo un ejemplo de como mandar una variable por memoria desde una aplicacion a otra y viceversa. Uso SendMessage con SETTEXT para enviar y SendMessage con GETTEXT para recibir.
Hay que compilar los dos Proyectos (Proyecto1 y Proyecto2) y luego ejecutar Proyecto1.

Actualizado 27/11/2010

http://www.megaupload.com/?d=J3G98NQ0




Saludos
#354
Hola APOKLIPTICO, una idea es si el programa descifrador (C++) es tuyo podrias usar SendMessage con WM_SETTEXT para enviar el resultado a un Texbox de otra aplicación, en este caso tu aplicacion de VB.
Generamente lo uso entre dos aplicaciones Vb, yo de C++ nada, pero creo que podes usar SendMessage. No es pasarlo por memoria directamente (como variable) pero por lo menos no interviene el disco

En el caso que la aplicacion C++ no sea tuya o quieras hacer todo desde VB, tendrias que ejecutarla la C++ desde el code de Vb (VbHide) y capturar el resultado en el control en que se encuentre (tambien con SendMessage pero en este caso con WM_GETTEXT desde Vb), por ultimo volves a usar SendMessage para cerrar la aplicacion C++.

Saludos (espero que sirva)

PD: Una pregunta al foro aprovechando que viene al tema, se puede pasar una variable de una aplicacion a otra con SendMessage o de otra forma ???

Saludos nuevamente



#355
Hola, proba si te sirve así:



If Dir("C:\OK1", vbDirectory) = "" Then MkDir "C:\OK1"
If Dir("C:\OK1\OK2", vbDirectory) = "" Then MkDir ("C:\OK1\OK2")
If Dir("C:\OK1\OK2\OK3", vbDirectory) = "" Then MkDir ("C:\OK1\OK2\OK3")



Saludos
#356
Hola, es bueno que hayas aprendido a manejar keybd_event, pero creo no es Windows el que gira la pantalla, sino el sofware asociado a los drivers del video, N-videa, ATI, o las On-board de Intel traen esas funciones (que se pueden Habilitar o deshabilitar desde sus propiedades), pero no todos los drivers de videos traen esa funcion y mucho menos  los genéricos de windows  (como trata de explicarte el_c0c0)

Saludos

   
#357
Programación Visual Basic / Re: Obtener color
3 Febrero 2009, 02:35 AM
Si, creo que en tu caso con SetCursorPos no vas a tener problemas

Saludos y que funcione


EDIT: perdon quise decir con no hacer la llamada GetCursorPos y la posicion x-y fija en las coordenadas que nesecites.

' Call GetCursorPos(tPOS)
  lColor = GetPixel(lDC, tPOS.x, tPOS.y)

Nuevamente saludos y que funcione
#359
andrer03, Ninguno de nosotros somos adivinos, una cosa es como pantleaste la pregunta (refiriendote a una cadena) y otra es si el texbox2 tiene mas texto o es multiline, si no  explicas todo desde un principio nos "descolocas" (por lo menos a mi)
Quisiera ayudarte pero no entiendo la pregunta Saludos

 
#360
Lo podes hacer calculando el Len de la cadena inicial y el len de la cadena modificada

saludos

EDIT: doy por seguro que los texbox tienen la propiedad Alignment = 2 (center)