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