elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [Python] Problema Message box con la librería ctypes
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Python] Problema Message box con la librería ctypes  (Leído 2,263 veces)
123456

Desconectado Desconectado

Mensajes: 79


Ver Perfil
[Python] Problema Message box con la librería ctypes
« en: 22 Junio 2015, 09:12 am »

Buenas, tengo un problema, estoy tratando de hacer un mensaje de alerta en el sistema y que imprima un texto, para eso estoy utilizando la librería ctypes, que viene incluida por defecto en python, el problema es que en lugar de mostrar el texto de mensaje completo solo muestra la primera letra. ¿Alguna idea?

Código:
import ctypes
ctypes.windll.user32.MessageBoxA(0, "Your text", "Your title", 0)

Uso Python 3.4 para Windows.

Un saludo y gracias por vuestro tiempo. ;)


« Última modificación: 22 Junio 2015, 09:21 am por 123456 » En línea

tincopasan


Desconectado Desconectado

Mensajes: 1.287

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: [Python] Problema Message box con la librería ctypes
« Respuesta #1 en: 22 Junio 2015, 10:46 am »

es fácil:
MessageBoxA es más para python 2.7
ahora probá con MessageBoxW


En línea

123456

Desconectado Desconectado

Mensajes: 79


Ver Perfil
Re: [Python] Problema Message box con la librería ctypes
« Respuesta #2 en: 22 Junio 2015, 10:49 am »

Perfecto muchas gracias :)
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.700



Ver Perfil
Re: [Python] Problema Message box con la librería ctypes
« Respuesta #3 en: 22 Junio 2015, 12:00 pm »

es fácil:
MessageBoxA es más para python 2.7
ahora probá con MessageBoxW

Las funciones MessageBoxA y MessageBoxW son practicamente lo mismo, la diferencia es que la primera es la versión ANSI (A), y la segunda es la versión Unicode (W) (esto es así por norma general para cualquier función que tenga su adaptación ANSI plus Unicode, no solo con esta función),
el tratamiento de los caracteres de entrada y de retorno cambia (y eso ya debería daros una pista de donde está el problema real, ya que los strings unicodes de py2.7 cambiaron a py3.x), pero una función de Python no tiene por que funcionar en py2.X/py3.X mientras que la otra deja de funcionar, ya que particulármente esas funciones son un simple wrapper de las funciones de la API de Windows; por ende, ambas funciones deberían funcionar correctamente siempre que se esté utilizando la codificación adecuada en los parámetros que recibe la función, y ese es el fallo que aquí se está cometiendo, una manera de solucionarlo sería usando la función str.encode() para codificar el string usando el código de página apropiado para la cultura ANSI específica (CP1252):

Código
  1. # -*- coding: Windows-1252 -*-
  2.  
  3. import ctypes
  4. ctypes.windll.user32.MessageBoxA(0, "Your text".encode('Windows-1252'), "Your title".encode('Windows-1252'), 0)

Saludos!
« Última modificación: 22 Junio 2015, 12:22 pm por Eleкtro » En línea


123456

Desconectado Desconectado

Mensajes: 79


Ver Perfil
Re: [Python] Problema Message box con la librería ctypes
« Respuesta #4 en: 22 Junio 2015, 12:24 pm »

Gracias por la aclaración Elektro  ;) aunque con el messageboxw me funcionó perfecto sin tener que tocar nada más.
Un saludo y gracias por la ayuda
« Última modificación: 22 Junio 2015, 12:30 pm por 123456 » En línea

tincopasan


Desconectado Desconectado

Mensajes: 1.287

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: [Python] Problema Message box con la librería ctypes
« Respuesta #5 en: 22 Junio 2015, 13:07 pm »

Elektro:
            sin lugar a dudas tu respuesta es más completa y correcta, pero... python 3.x viene con codificación unicode por defecto, por lo tanto es más fácil solo cambiar la A por W y no hay que aclarar la codificación, porque sino no los resultados de la función no son los mismos en 2.7 y 3.x
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema de seguridad en librería XMLRPC de Python
Scripting
Aberroncho 0 2,455 Último mensaje 26 Febrero 2005, 05:49 am
por Aberroncho
Python, funciones o libreria ?
Scripting
EvilGoblin 2 5,585 Último mensaje 11 Julio 2010, 20:35 pm
por xーいぱ
[Python] ctypes, SetConsoleTextAttribute...
Scripting
S3kh 0 1,716 Último mensaje 11 Septiembre 2011, 20:01 pm
por S3kh
[AYUDA][PYTHON] como se usa la libreria WAVE en python?
Scripting
Noxware 2 2,548 Último mensaje 5 Mayo 2014, 09:03 am
por Intrus0
problema con la libreria de nmap en python v 3.7.4 « 1 2 »
Scripting
dash166 10 1,995 Último mensaje 16 Noviembre 2019, 03:33 am
por tincopasan
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines