[MINI SOURCE]Cambiar el nombre a una ventana

Iniciado por fary, 28 Febrero 2010, 18:26 PM

0 Miembros y 1 Visitante están viendo este tema.

fary

Hola gente esta tarde me aburria y m e puesto a hacer este pequeño code, cirve para cambiarle el texto a una ventana. Usa dos Apis Findwindow para recuperar el handle de la ventana y Setwindowtext para cambiar el nombre. Si mas que hablar les dejo el code..

Código (vb) [Seleccionar]
Private Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" ( _
   ByVal hwnd As Long, _
   ByVal lpString As String) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" ( _
   ByVal lpClassName As String, _
   ByVal lpWindowName As String) As Long
Private Sub Command1_Click()
   Dim drinky As String, handle As long
   handle = FindWindow(vbNullString, "Calculadora")
   drinky = SetWindowText(handle, "Drinky94 ;)")
End Sub


Nos vemos... Salu2!
Un byte a la izquierda.

Karcrack

Una muestra con SendMessageW() + WM_SETTEXT
Código (vb) [Seleccionar]
'USER32
Private Declare Function SendMessageW Lib "USER32" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As Any) As Long

Private Const WM_SETTEXT    As Long = &HC

Public Function SetText(ByVal lHwnd As Long, ByVal sCaption As String) As Boolean
    SetText = CBool(SendMessageW(lHwnd, WM_SETTEXT, ByVal 0&, ByVal StrPtr(sCaption)))
End Function

Código (vb) [Seleccionar]
Call SetText(Form1.hwnd, "WM_SETTEXT")

Hasseds

Drinky, la variable handle no es string, es long,  ;)

S2
Sergio Desanti

fary

Cita de: Hasseds en 28 Febrero 2010, 21:17 PM
Drinky, la variable handle no es string, es long,  ;)

S2

Cierto... ;) cuando llebas razon llebas razon ;)

salu2!
Un byte a la izquierda.

Karcrack

Cita de: Drinky94 en 28 Febrero 2010, 21:18 PM
Cierto... ;) cuando llebas razon llebas razon ;)
Llevas*

No pretendo ser grosero, solo es que me duelen los ojos...

fary

Cita de: Karcrack en 28 Febrero 2010, 22:54 PM
Cita de: Drinky94 en 28 Febrero 2010, 21:18 PM
Cierto... ;) cuando llebas razon llebas razon ;)
Llevas*

No pretendo ser grosero, solo es que me duelen los ojos...

Tampoco me anden con finerias xD que eso ya sique es ganas de acer el tonto xD



salu2!
Un byte a la izquierda.

Karcrack

Cita de: Drinky94 en 28 Febrero 2010, 23:32 PM
Tampoco me anden con finerias xD que eso ya sique es ganas de acer el tonto xD
hacer*
Es importante escribir bien, no es ninguna fineria... no poner acentos y tal aún, pero hay fallos graves...

fary

Cita de: Karcrack en 28 Febrero 2010, 23:35 PM
Cita de: Drinky94 en 28 Febrero 2010, 23:32 PM
Tampoco me anden con finerias xD que eso ya sique es ganas de acer el tonto xD
hacer*
Es importante escribir bien, no es ninguna fineria... no poner acentos y tal aún, pero hay fallos graves...

Pero tio no me vengas con estas que la mitad del foro ace esto xD y solo me lo decis a mi!
Un byte a la izquierda.

Hasseds

Dinky, solo son errores que si no lo cometes es mejor, por ejemplo (ya te lo habia dicho en otro post) usas mal FindWindow

handle = FindWindow (vbNullString, "Calculadora")' solo para un windows en castellano

handle = FindWindow("SciCalc", vbNullString) ' para windows con cualquier idioma

No te enojes, que tal si Clausuramos esa calculadora ???


Option Explicit

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
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 EnableWindow Lib "user32" (ByVal hwnd As Long, ByVal fEnable As Long) As Long

Private Sub Command1_Click()
  Call EnableWindow(FindWindow("SciCalc", vbNullString), 1)
End Sub

Private Sub Form_Load()
  Shell "calc"
  Dim handle  As Long
  handle = FindWindow("SciCalc", vbNullString)
  Call SendMessage(handle, &HC, 0, ByVal "CLAUSURADO")
  Call EnableWindow(handle, 0)
  Dim handle2  As Long
  handle2 = FindWindowEx(handle, 0, "Edit", vbNullString)
  Call SendMessage(handle2, &HC, 0, ByVal "POR EH")
End Sub









Sergio Desanti

BlackZeroX

Cita de: Hasseds en  1 Marzo 2010, 00:27 AM
Dinky, solo son errores que si no lo cometes es mejor, por ejemplo (ya te lo habia dicho en otro post) usas mal FindWindow

handle = FindWindow (vbNullString, "Calculadora")' solo para un windows en castellano

handle = FindWindow("SciCalc", vbNullString) ' para windows con cualquier idioma

No te enojes, que tal si Clausuramos esa calculadora ???


Option Explicit

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
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 EnableWindow Lib "user32" (ByVal hwnd As Long, ByVal fEnable As Long) As Long

Private Sub Command1_Click()
  Call EnableWindow(FindWindow("SciCalc", vbNullString), 1)
End Sub

Private Sub Form_Load()
  Shell "calc"
  Dim handle  As Long
  handle = FindWindow("SciCalc", vbNullString)
  Call SendMessage(handle, &HC, 0, ByVal "CLAUSURADO")
  Call EnableWindow(handle, 0)
  Dim handle2  As Long
  handle2 = FindWindowEx(handle, 0, "Edit", vbNullString)
  Call SendMessage(handle2, &HC, 0, ByVal "POR EH")
End Sub



Ese código esta mal, en primera no debe pasarse una api que devuelve cosas inestables directamente en otra en este caso findwindow dentro de Enablewindow
NI TAMPOCO directamente pasar el handle devuelto, directamente a procesar en la siguiente linea.
En pocas palabras debe verificarse que se a obtenido lo deseado y evitar jaladas de pelos posteriores.

P.D.: No es necesario que Drinky use a huevo findwindow pero con la clase de ventana... así que... dejen que aprende a su modo, tampoco es de recalcarse lo en cada post...

Sangrientas Lunas!¡.
The Dark Shadow is my passion.