[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.

Hasseds

#10
Cita de: BlackZeroX▓▓▒▒░░ en  1 Marzo 2010, 06:38 AM

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


Si te referis a esto

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

Es solo una puerta de escape para que no tenga que usar el administrador de tareas para cerrar la calculadora,  y si vamos a hilar fino que nay que usar de hwnd en Enablewindow ?, una variable como devuelve FindWindows  en este caso ? ... si no es asi entonces estas diciendo que en hwnd de Enablewindow o de cualquier API van Constantes  ? ...  bueno, si es así no lo sabia, me estoy enterando en este momente que la variable hwnd as Long es una constante.



Cita de: BlackZeroX▓▓▒▒░░ en  1 Marzo 2010, 06:38 AM

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.


 handle = FindWindow("SciCalc", vbNullString)
 Call SendMessage(handle, &HC, 0, ByVal "CLAUSURADO")
 Call EnableWindow(handle, 0)

En esta si,  estamos de acuerdo , falta el "if handle <> 0 Then"



Cita de: BlackZeroX▓▓▒▒░░ en  1 Marzo 2010, 06:38 AM

No es necesario que Drinky use a huevo findwindow pero con la clase de ventana,,,


creo que te referis a esto :

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

Para mi es logico, no tengo dudas. No es a huevo porque en este caso se ejecuta  la calculadora en la linea anterior y el Hwnd es el correcto (aunque haya mas calculadoras abiertas) .


PD: En este post hice solo dos acotaciones a Drinky, una que el valor de Hwnd es Long y no String y  la otra acotacion fue el uso de FindWindows. Ninguna de las dos con "mala leche"
















Sergio Desanti

Karcrack

#11
B0X se refiere a que tienes que comprobar que el Handle sea distinto a 0, sino la cosa no funcionara...


Respecto al codigo inicial que presento Drinky:
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

SetWindowText(): Devuelve un Boolean, no una cadena de texto... asi que la cadena 'drinky' ademas no volver a ser usada es del tipo incorrecto...
FindWindow(): Como te dije por MSN hace tiempo mejor que trabajes con el ClassName :P

Y en general, cuando compartas codigos mejor que los prepares en forma de funcion, y no en funcion a un command y a ser posible que tenga parametros, como en este caso la ventana (Hwnd) y el titulo nuevo...

fary

Puse lacalculador ade ejemplo... podria haber puesto cualquier otro programa..
Un byte a la izquierda.

Karcrack

Cita de: Drinky94 en  1 Marzo 2010, 12:49 PM
Puse lacalculador ade ejemplo... podria haber puesto cualquier otro programa..
Pues eso te comento, que es mejor hacerlo en forma de funcion... Y luego si quieres pones un ejemplo con la calculadora (SciCalc)

BlackZeroX

Cita de: Hasseds en  1 Marzo 2010, 10:25 AM
Cita de: BlackZeroX▓▓▒▒░░ en  1 Marzo 2010, 06:38 AM

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


creo que te referis a esto :
Private Sub Command1_Click()
  Call EnableWindow(FindWindow("SciCalc", vbNullString), 1)
End Sub

Es solo una puerta de escape para que no tenga que usar el administrador de tareas para cerrar la calculadora,  y si vamos a hilar fino que nay que usar de hwnd en Enablewindow ?, una variable como devuelve FindWindows  en este caso ? ... si no es asi entonces estas diciendo que en hwnd de Enablewindow o de cualquier API van Constantes  ? ...  bueno, si es así no lo sabia, me estoy enterando en este momente que la variable hwnd as Long es una constante.


1. KarCrack ya te respondió por mi.
2. Me reservo gran parte {Drinky no hace mucho que inicio con el uso de las APIS tengo entendido}, aun que se tiene razón con buscar por la clase de form, solo que es la segunda vez que lo veo de tu parte {la 1era fue en un off en un tema nada q ver}.

Por que B0X ... Maldito SharKI, me puso el diminutivo y ya se expandió.

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

Karcrack

Cita de: BlackZeroX▓▓▒▒░░ en  1 Marzo 2010, 19:26 PMPor que B0X ... Maldito SharKI, me puso el diminutivo y ya se expandió.
SharkI te puso ese diminutivo? :laugh: Que casualidad... no? :xD

He puesto eso pues por que como ha Hacker_Zero lo llamo H0... y soy muy vago... :P
Si te moelsta tranquilo, copiare tu nick tal cual, tampoco es tanto esfuerzo ;)

Hasseds

#16
Cita de: BlackZeroX▓▓▒▒░░ en  1 Marzo 2010, 19:26 PM

1. KarCrack ya te respondió por mi.
2. Me reservo gran parte {Drinky no hace mucho que inicio con el uso de las APIS tengo entendido}, aun que se tiene razón con buscar por la clase de form, solo que es la segunda vez que lo veo de tu parte {la 1era fue en un off en un tema nada q ver}.


Si, "se tiene razon" con buscar por la clase de form" y Tambien que HWnd es long
Si,  "es la segunda vez que lo vez de mi parte", es porque nuevamente no se usó la clase (SciCalc)
Si, "la 1era fue en un off en un tema nada q ver"...  tal vez para mi si tenia sentido (no tengo que pedirte permiso para meter un comentario off o in)

No me quedó claro si a lo que te referis en el primer parrafo de mi anterior post es lo que respondio KarCrack sobre checar el cero o fue la "sentencia" de : "no debe pasarse una api que devuelve cosas inestables directamente en otra "  

No tengo ganas de sueguir gastando energia en esto







Sergio Desanti

BlackZeroX

Cita de: Karcrack en  1 Marzo 2010, 12:34 PM
B0X se refiere a que tienes que comprobar que el Handle sea distinto a 0, sino la cosa no funcionara...


The Dark Shadow is my passion.