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

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [Python] ctypes, SetConsoleTextAttribute...
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Python] ctypes, SetConsoleTextAttribute...  (Leído 2,724 veces)
S3kh

Desconectado Desconectado

Mensajes: 58


Ver Perfil
[Python] ctypes, SetConsoleTextAttribute...
« en: 11 Septiembre 2011, 20:01 pm »

 Hola gente, estoy intentando entender por qué el siguiente código no me da resultado, ni error siquiera.
 Estyo realizando mi propio módulo de funciones "útiles", aunque de novato, y una de ellas es para cambiar el fondo y color de un texto. Mi módulo es llama "jazzer", y dentro de este estoy implementando funciones de marquesina, efectos de texto (en consola), etc. El módulo contiene definidas algunas variables que hacen referencia a los colores y sus valores correspondientes. Cada una tiene un prefijo (l o d) que hace referencia a la intensidad (l para light o brillante, y d para dark u oscuro), y el nombre del color. Dejo el código (Sacando lo que no intefiere), y posteriormente mi duda:

Código:
import ctypes
#-- DATOS --#
#--Constantes de colores--
#--Variantes oscuras
BLACK   ='0'
dBLUE   ='1'
dGREEN  ='2'
dCYAN   ='3'
dRED    ='4'
dPURPLE ='5'
dYELLOW ='6'
dWHITE  ='7'
dGREY   ='8'
#--Variantes claras
lBLUE   ='9'
lGREEN  ='A'
lCYAN   ='B'
lRED    ='C'
lPURPLE ='D'
lYELLOW ='E'
lWHITE  ='F'

#-Manejo de colores en consola
def hValColor(Color):
        #WinAPI (kernel32.dll). GetStdHandle
        STD_INPUT_HANDLE  = -10
        STD_OUTPUT_HANDLE = -11
        STD_ERROR_HANDLE  = -12
        std_out_handle = ctypes.windll.kernel32.GetStdHandle(STD_OUTPUT_HANDLE)
        bool = ctypes.windll.kernel32.SetConsoleTextAttribute(std_out_handle, Color)
        return bool

def cValColor(FOREGROUND, BACKGROUND):
        Color = '0x'+FOREGROUND+BACKGROUND
        hValColor(Color)

 Verán, uso dos funciones para definir el color hValColor y cValColor. La diferencia radica en que hValColor recibe un parámetro hexadecimal correspondiente al color (0xA por ejemplo), mientras que la otra recibe los colores en el formato <prefijo><Color>, (lBLUE por ejemplo). Esto lo hize pensando en un usuario que desconozca el código hexadecimal, de modo que pueda especificar el color de otra forma.
 SetConsoleTextAttribute admite un código hexadecimal sea o no sea string, hize la prueba pasando un parámetro cadena ('0xA') y otro hex (0xA). Ambos dieron resultado.
 Ahora bien, implementando eso en cValColor, en teoría debería concatenar 0x, FOREGROUND y BACKGROUND, almacenarlas en Color y pasarlas a hValColor, y este cambiaría el color. Explico mejor:

Código:
from jazzer import *
cValColor(lBLUE, dGREEN)

 En cValColor se reemplazaría lBLUE por su cadena correspondiente; pasando lo mismo con dGREEN, y luego, concatenando ambos a "'0x". El tema es que el ejecutarse esto, el color sigue igual, y no devuelve ningún error. ¿Por qué? Es decir, SetConsoleTextAttributes SEGÚN LO QUE PROBÉ puede recibir un hexadecimal en cadena o no, y da el mismo resultado. Acá, el traspaso debería ser una cadena, y sin embargo, no da error ni resultado.
 Cualquier ayuda me serviría. DEsde ya muchas gracias si se tomaron el tiempo de leerlo.

Un abrazo.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Python] Sockets en Python [+Ejemplos y Ejercicios]
Scripting
Erik# 4 14,786 Último mensaje 4 Abril 2013, 16:43 pm
por SelTzeR
(Python)Existen ventanas de entrada y salida de datos en python « 1 2 »
Scripting
tonilogar 11 15,554 Último mensaje 29 Noviembre 2009, 00:49 am
por tonilogar
[Python] Abrir una página web con comandos de Python. « 1 2 3 4 »
Scripting
CaronteGold 31 39,533 Último mensaje 29 Mayo 2015, 15:02 pm
por antkk
[python]VideoTraining Aprende A Programar En Python desde 0 « 1 2 3 »
Scripting
juh 22 17,377 Último mensaje 16 Octubre 2010, 13:12 pm
por Pere Navarro
[Python] Problema Message box con la librería ctypes
Scripting
123456 5 3,678 Último mensaje 22 Junio 2015, 13:07 pm
por tincopasan
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines