Visual Basic Foro
Programación => Visual Basic 6 => Mensaje iniciado por: RHL en Noviembre 08, 2011, 02:56:29 pm
-
buenas tengo ese problema :/ no se como obtener el titulo de una ventana en japones
ya e probado con varios codigo obtengo los caracteres asi : ????? ( el emoticono es ? x 3 )
y quiero obtener o hacer que mi aplicacion pueda leer y escribir caracteres de todos tipos
´pues e probado tambien con GetWindowTextW y crei que me los devolveria pero mi resultado fue este:
? ? ? ? ?
como puedo hacer amigos? :-\
-
en efecto, tenes que usar GetWindowTextW. pero para poder displayarlo, tambien necesitas apis Wide.
Usar un string te puede servir (tenes que usar el doble de caracteres de lo que realmente son), pero igualmente no lo podes mostrar en VB tan facil
-
si, lo hago asi, pero los caracteres sigen asi ? ? ? ? ? ?
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextW" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Sub Form_Load()
Dim CAD As String
CAD = Space$(200)
Debug.Print GetWindowText(WHANDLE, CAD, 200)
End Sub
-
son caracteres unicode por eso no los ves, para eso podes usar algo asi, fijate esta pregunta:
Caracteres Especiales en TextBox [Ayuda] (http://foro.elhacker.net/programacion_visual_basic/caracteres_especiales_en_textbox_ayuda-t300836.0.html)
-
tiene algo rollo :/ bueno gracias ya vere como me arreglo con el codigo :)
-
Lo puedes obtener bien, pero no puedes imprimirlo sobre una ventana que es ANSI :P trata de copiarlo al portapapeles y pegalo en el Notepad++ y te saldra :P
-
hola Otra codigo por si te interesa con el caption de formulario.
Private Declare Function DefWindowProc Lib "USER32" Alias "DefWindowProcW" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Const WM_SETTEXT As Long = &HC
Private Const WM_GETTEXT As Long = &HD
Private Const WM_GETTEXTLENGTH As Long = &HE
Public Property Let CaptionW(ByVal NewValue As String)
DefWindowProc Me.hwnd, WM_SETTEXT, 0, ByVal StrPtr(NewValue)
End Property
Public Property Get CaptionW() As String
Dim strLen As Long
strLen = DefWindowProc(Me.hwnd, WM_GETTEXTLENGTH, 0, ByVal 0)
CaptionW = Space(strLen)
DefWindowProc Me.hwnd, WM_GETTEXT, Len(CaptionW) + 1, ByVal StrPtr(CaptionW)
End Property
-
Mil gracias lo guardo ;)