Foros del Web » Programando para Internet » Python »

SendMessage y SendKeys

Estas en el tema de SendMessage y SendKeys en el foro de Python en Foros del Web. Buenas, les cuento que estoy comenzando Python, luego de haber programado demasiado VB 6.0. El tema es que estoy usando sendmessage y averiguando el hWnd ...
  #1 (permalink)  
Antiguo 12/02/2011, 14:36
 
Fecha de Ingreso: septiembre-2010
Mensajes: 21
Antigüedad: 14 años, 2 meses
Puntos: 0
SendMessage y SendKeys

Buenas, les cuento que estoy comenzando Python, luego de haber programado demasiado VB 6.0. El tema es que estoy usando sendmessage y averiguando el hWnd de una ventana de bloc de notas, y cuando abro el programa que he hecho, se me cierra sin tiempo a que pueda llegar a leer lo que dice, les muestro:

Código:
 #### Script to try to write something down in notepad
> import win32api
> import win32gui
> import win32con
> import time
> 
> # get the window handle of the blank, minimized notepad window
> hwnd = win32gui.FindWindowEx(0, 0, 0, "Probando - Bloc de notas")
> 
> # print it just for kicks
> print hwnd
> 
> win32gui.ShowWindow(hwnd, win32con.SW_SHOWNORMAL)
> #this restores the proper window, so we know we have correct handle
> 
> #just to give it a little pause
> time.sleep(2)
> 
> print "trying to post message"
> 
> #try to send it a return key
> win32api.SendMessage(hwnd, win32con.WM_KEYDOWN, win32con.VK_RETURN, 0)
> win32api.SendMessage(hwnd, win32con.WM_KEYUP, win32con.VK_RETURN, 0)
>
Como ven, obtengo el hWnd de la ventana y envío pulsaciones de tecla ENTER (return), pero tengo el problema que explico antes, se me cierra rápidamente el programa, que su extencion es .py.

Más allá de la ventana que sea, porque con un programa que he hecho con VB, al pasar el mouse por X posición detecta el hWnd de la ventana donde se encuentra el mouse, yo averiguo el hwnd del bloc de notas, pero sigue sin funcionar.

Además de esto (perdón que pida tanto), necesito saber como usar SendKeys en Python, he buscado en Google pero ninguno me funciona bien y se me cierra el programa también! Por ejemplo, yo en VB uso: SendKeys"{enter}", en realidad suelo usar un API de windows, pero no es el tema ese, quiero saber como usarlo en Python.

Bueno señores, muchas gracias desde ya, me ha servido mucho este foro a la hora de buscar respuestas y preguntar :D

Saludos.
  #2 (permalink)  
Antiguo 12/02/2011, 15:17
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: SendMessage y SendKeys

Código Python:
Ver original
  1. #### Script to try to write something down in notepad
  2. import win32api
  3. import win32gui
  4. import win32con
  5. import time
  6.  
  7. # get the window handle of the blank, minimized notepad window
  8. hwnd = win32gui.FindWindowEx(0, 0, 0, "probando.txt: Bloc de notas")
  9.  
  10. # print it just for kicks
  11. print hwnd
  12.  
  13. win32gui.ShowWindow(hwnd, win32con.SW_SHOWNORMAL)
  14. #this restores the proper window, so we know we have correct handle
  15.  
  16. #just to give it a little pause
  17. time.sleep(2)
  18.  
  19. print "trying to post message"
  20.  
  21. #try to send it a return key
  22. for i in range(26):
  23.     win32api.keybd_event(ord('A')+i, 0) #see http://msdn.microsoft.com/en-us/library/ms646304(VS.85).aspx

No se que trates de hacer pero hay mejores formas de trabajar con archivos.
  #3 (permalink)  
Antiguo 12/02/2011, 16:55
 
Fecha de Ingreso: septiembre-2010
Mensajes: 21
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: SendMessage y SendKeys

Es un ejemplo que encontré en un página, te agradecería si me podrías decir como es una mejor forma de trabajar con archivos, enviando mensajes con sendmessage, y decirme porque es que se me cierra, aclaro que estoy programando con Bloc de Notas, nose si tendrá algo que ver, y también necesitaria saber lo que pregunté de SendKeys, gracias igual.

Saludos.
  #4 (permalink)  
Antiguo 12/02/2011, 22:09
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: SendMessage y SendKeys

1.- No uses block de notas para programar. Usa algo mas decente al menos con resalto de sintaxis. Inclusive el mismo editor que viene por defecto con python (en windows) es mas decente.
2.- Trabajar con archivos en python es algo muy sencillo.
Ejemplos:
Código Python:
Ver original
  1. #Leer archivo
  2. f = open("D:\\temp.txt", "r")
  3. for line in f:
  4.     print line,
  5. f.close()
  6.  
  7. #Escribir archivos
  8. f = open("D:\\temp.txt", "w")
  9. f.write("Holaaaaaa\nMuuuundo!!!!\n")
  10. f.close()
  11.  
  12. #Añadir a un archivo
  13. f = open("D:\\temp.txt", "a")
  14. f.write("1\n2\n3")
  15. f.close()
Para mas ejemplos checa las FAQs

3.- Sigo sin saber para necesitas SendMessage y SendKeys.

4.- Si el programa se ejecuta y se cierra es por que seguramente estas haciendo doble click en el. Recomendación puedes usar raw_input() al final del archivo para que no se cierre O ejecutarlo desde la linea de comandos (cmd) y poder ver que imprimio O Utilizar un IDE (como el que trae python por defecto).
  #5 (permalink)  
Antiguo 13/02/2011, 10:14
 
Fecha de Ingreso: septiembre-2010
Mensajes: 21
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: SendMessage y SendKeys

Muchas gracias, voy a usar el que trae Python para programar, y voy a probar abriéndolo desde cmd, gracias por todo, pero te agradecería que me comentes un poco de SendMessage y SendKeys, estoy intentando hacer un programa parecido a uno que hice en VB 6.0, pero en Python, el cual hace algunas acciones automáticas.

Saludos.

Etiquetas: sendkeys, sendmessage
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:22.