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

#3501
Hola,lo voy a explicar de una vez asi queda para todos lo que no saben..es nombre de clase de una ventana lo podes sacara con el Spy++ de microsoft que te viene con el visual basic,hay otras formas tambien desde el mismo visual basic para sacar los nombres,pero es el mas comodo el Spy++ ya que esta cerca..aca te dejo como un tuto de como sacarle el nombre de clase y algunas cosas mas compara autoescribir en un programa sabiendo el nombre de clase y demas...

supongamos que yo quiero escribir automaticamente en el Bloc de Notas de windows sabiendo el nombre de clase del control que te permite escribir adentro,aca te hago una captura de como saque el nombre de la ventana para escribir con el Spy++:

este es el nombre de clase de la ventana padre llamada "Notepad",la que a vos te interesa pasarle a la api findwindow..



despues usamos findwindowsex para meternos en los controles de la ventana padre anterior,y le pasamos como parametro a esta api,el nombre del control al cual queremos acceder..

este es el nombre del control dentro de la ventana llamado "Edit":



para saber los datos de la ventana tenes que arrastrar el "iconito" sobre una ventana y te va diciendo las partes que la forman,en este caso fijate que esta seleccionado el area de escritura del bloc de notas y al lado en la ventana estan los datos...

el handle es el numero(Long) que le asigna windows a cada ventana ,es como si fuera el nuero que identifica esa ventana,sabiendo eso,podes hacer un monton de cosas,cerrarla,moverla,resizarla,cambiar valores,etc....

el Class es el nombre de clase del control,o sea cada control tiene su nombre...ese ese es que nos interesa ahora..

ahora fijate con este codigo como escribo en el bloc de notas..usando unas funciones api's...

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Integer, ByVal hWnd2 As Integer, ByVal lpsz1 As String, ByVal lpsz2 As String) As Integer
Private Declare Function SendMessageSTRING Lib "user32" Alias "SendMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As String) As Integer
Private Declare Function SendMessageLONG Lib "user32" Alias "SendMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
Private Const WM_SETTEXT = &HC

Private Sub Form_Load()
Shell "notepad", vbNormalNoFocus
Dim a As Long
Dim b As Long
a = FindWindow("Notepad", vbNullString)
b = FindWindowEx(a, 0&, "Edit", vbNullString)
Call SendMessageSTRING(b, WM_SETTEXT, 256, "Holaaaaaaaaaaaa jejeje")
End Sub


saludos.
#3503
muy bueno,esta es como una resusitada de la widget library  :),lastima no esta el foro de luciano ahi estaban los links de este tema que preguntaron la otra vez...

PD: te felicito veo que estas armando una web con codigos  :D

saludos.
#3504
no,del foro no encontras mas nada,ni siquiera estan mas indexadas por el google,ya se perdio la busqueda dentro del mismo...y el foro cerro por problemas de luciano..

saludos.
#3505
Hola,seria algo asi:

Private Sub Command1_Click()
ListView1.SetFocus
End Sub

Private Sub Form_Load()
Dim Item As ListItem
With ListView1
.ColumnHeaders.Add , , " Producto "
.View = lvwReport
.GridLines = True
Set Item = .ListItems.Add(, , "Leche")
Set Item = .ListItems.Add(, , "Yerba")
End With
End Sub


cuando apretas el boton te pasa el foco al listview,proba perder el foco con un textbox y despues apreta el boton...

saludos.
#3506
Hola,pues podes usar la famosa SendKeys que mande constantemente esa tecla,en un timer con el intervalo que quieras,o con la api keybd_event,algo asi:

Const KEYEVENTF_KEYUP = &H2
Const KEYEVENTF_EXTENDEDKEY = &H1
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

Sub MandarTeclaU(Tecla As Long)
Call keybd_event(Tecla, 0, 0, 0)
Call keybd_event(Tecla, 0, KEYEVENTF_KEYUP, 0)
End Sub

Private Sub Timer1_Timer()
Call MandarTeclaU(vbKeyU)
End Sub


saludos.
#3507
Hola,pone un timer:

Private Declare Function GetForegroundWindow Lib "user32" () As Long
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long

Private Sub Form_Load()
Timer1.Interval = 100
End Sub

Private Sub Timer1_Timer()
Static lHwnd As Long
Dim lCurHwnd As Long
Dim sText As String * 255
lCurHwnd = GetForegroundWindow
If lCurHwnd = lHwnd Then Exit Sub
lHwnd = lCurHwnd
If lHwnd <> hwnd Then
Caption = "Ventana Activa: " & Left$(sText, GetWindowText(lHwnd, ByVal sText, 255))
Else
Caption = "Ventana Activa: Form1"
End If
End Sub


saludos.
#3508
Hola,para detectar la ventana maximizada podes usar la api IsIconic...algo asi:

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function IsIconic Lib "user32" (ByVal hwnd As Long) As Long

Private Sub Form_Load()
Timer1.Interval = 100
End Sub

Private Sub Timer1_Timer()
WinWnd = FindWindow("elhwnd", vbNullString)
Me.Caption = IIf(IsIconic(WinWnd) = 0, "Normal", "Minimizado")
End Sub


por su puesto tenes que pasarle el Hwnd de la ventana padre del messenger..

saludos

#3509
no lo probe pero intenta hacerle un focus..

Webbrowser1.Document.userReg.nickname.Focus

saludos.

#3510
tambien te recomiendo esta pagina,aunque prefiero la de AllApi..se llama WinApi Con Clase..mirala:

Función SendMessage

saludos.