Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Hardbook en 31 Julio 2013, 23:20 pm



Título: Cambiar caption de un programa
Publicado por: Hardbook en 31 Julio 2013, 23:20 pm
Hola soy nuevo en el foro.. Conozco gente (no soy amigo) que usa una api de windows creo.. para cambiar el caption de cualquier programa.. por ejemplo cambiarle el "Ares" por "Mi nombre" o cosas asi..

Soy novato en esto.. gracias


Título: Re: Cambiar caption de un programa
Publicado por: Danyfirex en 31 Julio 2013, 23:24 pm
http://msdn.microsoft.com/en-us/library/windows/desktop/ms633546(v=vs.85).aspx



Título: Re: Cambiar caption de un programa
Publicado por: Hardbook en 31 Julio 2013, 23:28 pm
http://msdn.microsoft.com/en-us/library/windows/desktop/ms633546(v=vs.85).aspx



Gracias.. con que programa me conviene programar en c++? o c


Título: Re: Cambiar caption de un programa
Publicado por: Danyfirex en 31 Julio 2013, 23:29 pm
el que sea.


Título: Re: Cambiar caption de un programa
Publicado por: Hardbook en 31 Julio 2013, 23:41 pm
Pero... esto no seria para cambiar el caption de un ejecutable por asi decirlo? ... yo lo que quiero es cambiar el caption de otro programa, como cambiarle el caption a Ares,  messenger u otra aplicacion..

lo que encontre fue esto

http://www.ex-designz.net/apidetail.asp?api_id=36 pero es para el mismo codigo.. no para otro ejecutable


Título: Re: Cambiar caption de un programa
Publicado por: Danyfirex en 31 Julio 2013, 23:55 pm
tienes que coger el hWnd de ares.


Título: Re: Cambiar caption de un programa
Publicado por: Danyfirex en 1 Agosto 2013, 00:03 am
ejemplo.

Código
  1. Option Explicit
  2.  
  3. 'Esta función Api devuelve un valor  Boolean indicando si la ventana es una ventana visible
  4. Private Declare Function IsWindowVisible _
  5.    Lib "user32" ( _
  6.        ByVal hwnd As Long) As Long
  7.  
  8. 'Esta función retorna el número de caracteres del caption de la ventana
  9. Private Declare Function GetWindowTextLength _
  10.    Lib "user32" _
  11.    Alias "GetWindowTextLengthA" ( _
  12.        ByVal hwnd As Long) As Long
  13.  
  14. 'Esta devuelve el texto. Se le pasa el hwnd de la ventana, un buffer donde se
  15. 'almacenará el texto devuelto, y el Lenght de la cadena en el último parámetro
  16. 'que obtuvimos con el Api GetWindowTextLength
  17. Private Declare Function GetWindowText _
  18.    Lib "user32" _
  19.    Alias "GetWindowTextA" ( _
  20.        ByVal hwnd As Long, _
  21.        ByVal lpString As String, _
  22.        ByVal cch As Long) As Long
  23.  
  24. 'Esta es la función Api que busca las ventanas y retorna su handle o Hwnd
  25. Private Declare Function GetWindow _
  26.    Lib "user32" ( _
  27.        ByVal hwnd As Long, _
  28.        ByVal wFlag As Long) As Long
  29.  
  30.      Private Declare Function SetWindowText Lib "user32.dll" Alias _
  31. "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As Long
  32.  
  33. 'Constantes para buscar las ventanas mediante el Api GetWindow
  34. Private Const GW_HWNDFIRST = 0&
  35. Private Const GW_HWNDNEXT = 2&
  36. Private Const GW_CHILD = 5&
  37.  
  38. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  39.  
  40. 'Procedimiento que lista las ventanas visibles de Windows
  41. Private Sub Listar()
  42.  
  43. Dim buf As Long, handle As Long, titulo As String, lenT As Long, ret As Long
  44. Dim retval As Long
  45.    List1.Clear
  46.    'Obtenemos el Hwnd de la primera ventana, usando la constante GW_HWNDFIRST
  47.    handle = GetWindow(hwnd, GW_HWNDFIRST)
  48.  
  49.    'Este bucle va a recorrer todas las ventanas.
  50.    'cuando GetWindow devielva un 0, es por que no hay mas
  51.    Do While handle <> 0
  52.        'Tenemos que comprobar que la ventana es una de tipo visible
  53.        If IsWindowVisible(handle) Then
  54.            'Obtenemos el número de caracteres de la ventana
  55.            lenT = GetWindowTextLength(handle)
  56.            'si es el número anterior es mayor a 0
  57.            If lenT > 0 Then
  58.                'Creamos un buffer. Este buffer tendrá el tamaño con la variable LenT
  59.                titulo = String$(lenT, 0)
  60.                'Ahora recuperamos el texto de la ventana en el buffer que le enviamos
  61.                'y también debemos pasarle el Hwnd de dicha ventana
  62.                ret = GetWindowText(handle, titulo, lenT + 1)
  63.                titulo$ = Left$(titulo, ret)
  64.  
  65.                'si el titulo de la ventana es igual a x titulo cambias y pones lo que sea.
  66.                If titulo = "titulo de ares" Then
  67.                ' return value
  68.  
  69.                retval = SetWindowText(handle, "Hola Mundo")
  70.                End If
  71.                'La agregamos al ListBox
  72.                List1.AddItem titulo$
  73.            End If
  74.        End If
  75.        'Buscamos con GetWindow la próxima ventana usando la constante GW_HWNDNEXT
  76.        handle = GetWindow(handle, GW_HWNDNEXT)
  77.    Loop
  78. End Sub
  79.  
  80. Private Sub Command1_Click()
  81.    'Llamamos a la función Listar
  82.    Call Listar
  83. End Sub

saludos


Título: Re: Cambiar caption de un programa
Publicado por: Danyfirex en 1 Agosto 2013, 00:24 am
aunque si es algo tan estático y conoces el titulo podrías hacerlo así.

Código
  1. Option Explicit
  2.  
  3. Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" ( _
  4.    ByVal lpClassName As String, _
  5.    ByVal lpWindowName As String _
  6. ) As Long
  7.  
  8. Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" ( _
  9.    ByVal hWndParent As Long, _
  10.    ByVal hWndChildAfter As Long, _
  11.    ByVal lpszClassName As String, _
  12.    ByVal lpszWindowName As String _
  13. ) As Long
  14.  
  15.      Private Declare Function SetWindowText Lib "user32.dll" Alias _
  16. "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As Long
  17.  
  18.  
  19.  
  20. Private Sub Command1_Click()
  21.  
  22. Dim ventanahWnd As Long
  23. Dim ret As Long
  24. ventanahWnd = FindWindow(vbNullString, "Daniel")
  25.  
  26. If ventanahWnd Then
  27. ret = SetWindowText(ventanahWnd, "Danielsssss")
  28. End If
  29. End Sub
  30.  

saludos