Cerrar programas con visual basic
Este ejemplo muestra cómo cerrar un proceso con la API de Windows, y utilizando el nombre del EXE a cerrar. Código: Crear un proyecto nuevo de Visual Basic y en el Form1 colocar un TextBox y CommandButton, luego pegar el siguientecódigo. dwIDProceso = -1 hSnapShot = CreateToolhelpSnapshot(2&, 0&) 'Si el proceso no está abierto... Else ……………….::::::::::::: *1 - Esta rutina utiliza las funciones Api EnumWindows*, *GetWindowText* y *SendMessage*. La primer función se encarga de enumerar y listar las ventanas. GetWindowText devuelve el caption de la misma y SendMessage para cerrarla También hay otra función a la cual sele envía el texto que debe contener la misma para determinar si se cierra o no, por ejemplo si enviamos Se necesita: un módulo bas para declarar el procedimiento que enumera las ventanas, y un CommandButton en el Formulario. Nota: asi como está planteado el ejemplo, el título a cerrar distingue de mayúsculas y minúsculas. Para que no haga caso de esto, una forma es colocando en el módulo bas lainstrucción Option Compare Text Código fuente en el Form: misma contenga la palabra Google 10. 11. 12. 13. 14. 15. 16. Código a colocar en el módulo BAS 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.ConstWM_SYSCOMMAND = &H112 28.ConstSC_CLOSE = &HF060& 29. 30. 31. 32. 33. 34. 35.36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. …………….::::::::::::::::::::::: Cerrar programa o ventana a partir del Class Name Este otro proyecto de ejemplo, es muy similar al anterior, es decir enumera las ventanas abiertas en windows con el Api EnumWindows Pero en ves de cerrarlas apartir del título de la ventana como en el caso anterior, lo hace a partir del nombre de clase de la misma, que se recupera con Api getClassName. El código , chequea mediante un timer, si la clase es IeFrame, que es la del internet explorer, y se encuentra abierta la cierra Código fuente en un formulario ( Agregar un control timer ) Timer1.Interval = 50 Este otro códigoen un módulo bas 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.ConstWM_SYSCOMMAND = &H112 25.ConstSC_CLOSE = &HF060& 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48.` ret = SendMessage(A_hwnd, WM_SYSCOMMAND, SC_CLOSE, ByVal 0&) ` 49. 50. 51. 52. 53. 54. 55. 56. 57.58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. ……………….:::::::::::::::::::::::::: podemos usar las funciones findwindow y postmessage para encontrar una ventana y cerrarla. en el ejemplo veremos cóm cerrar una ventana que tenga como título calculadora. podemos usar las funciones findwindow y postmessage para encontrar una ventana y cerrarla. en el ejemplo veremos cóm cerrar unaventana que tenga como título "calculadora".
declaramos en un formulario :
declare function findwindow lib "user32" alias _
"findwindowa" (byval lpclassname as string, _
byval lpwindowname as string) as long
declare function postmessage lib "user32" alias _
"postmessagea" (byval hwnd as long, byval wmsg as long, _
byval wparam as long, lparam as any) as long
public constwm_close = &h10
y para encontrar la ventana y cerrarla :
dim winhwnd as long
dim retval as long
winhwnd = findwindow(vbnullstring, "calculadora")
debug.print winhwnd
if winhwnd 0 then
retval = postmessage(winhwnd, wm_close, 0&, 0&)
if retval = 0 then
msgbox "error enviando mensaje."
end if
else
msgbox "la calculadora no está abierta."
end if
estamos empleando el...
Regístrate para leer el documento completo.