|
351
|
Programación / Programación Visual Basic / Re: Manejo de la ventana Dar Formato de Windows
|
en: 12 Febrero 2009, 19:30 pm
|
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
|
Programación / Programación Visual Basic / Re: Manejo de la ventana Dar Formato de Windows
|
en: 12 Febrero 2009, 16:22 pm
|
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
|
|
|
354
|
Programación / Programación Visual Basic / Re: Pasar datos por memoria.
|
en: 7 Febrero 2009, 10:31 am
|
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
|
|
|
356
|
Programación / Programación Visual Basic / Re: Combinación de teclas en keybd_event
|
en: 3 Febrero 2009, 10:07 am
|
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 / Programación Visual Basic / Re: Obtener color
|
en: 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
|
Programación / Programación Visual Basic / Re: replace texto centrado
|
en: 1 Febrero 2009, 22:33 pm
|
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
|
|
|
|
|
|
|