Windows 7 y programas ejecutados con privilegios elevados

En los últimos meses estoy empezando a usar Windows 7 64 bits y dado que no he llegado a usar Windows Vista estoy encontrando bastantes cambios respecto al viejo Windows XP.

Uno de ellos es todo lo relacionado con UAC y con la posibilidad de que diferentes procesos en el mismo Desktop se ejecuten diferentes niveles de aislamiento de privilegios.

Una de las consecuencias de esta separación es que cuando abres un programa con privilegios elevados para realizar alguna tarea de administración, por ejemplo una linea de comandos como administrador, no funciona el arrastar y soltar ni el copiar y pegar.

Como se puede ver en este artículo Windows bloquea los mensajes entre procesos que se ejecutan con un nivel a otros que se ejecutan en un nivel superior.

Eso hace que el proceso con privilegios elevados ignore los mensajes de drag and drop, de copiar y pegar o que Winsplit no me recoloque las ventanas que están en “modo administrador”.

La Cara Oculta de Delphi 6. Programación COM

He terminado de leer la primera sección de este libro y me ha dejado con un sabor un poco agridulce. Por un lado, una cosa que me encanta de este libro (y de este autor) es que no solo expone la forma de hacer las cosas sino que te va guiando a cómo están implementadas, mostrandote en muchas ocasiones el código de funciones de la VCL para que veamos que pasa cuando hacemos esta u otra cosa, o el código ensamblador generado al realizar tal llamada a un método de un interfaz, etc. En concreto la explicación de las v-tables y su relación con la implementación de interfaces junto con una pequeña incursión al trabajo que hacen los proxies COM me parece muy interasante y te ayuda a ver el por qué de las cosas y el cómo funcionan.

Por otro lado el avance requiere cierto esfuerzo para ir fijando conceptos nuevos (nuevos para mi) que quedan de todas maneras muy en el aire. En mi opinión por un lado cuenta muchos detalles de implementación de ciertas cosas pero por otro no llegas a tener un concepto global del uso de COM.

A mi parecer el autor ha conseguido hacer una introducción a la programación COM pero dando en ella muchos detalles de cómo se implementa, con lo que disfrutas de información muy interesante pero no tienes muy claro al final si sabrás poner algo de eso en práctica. De todas maneras, me da la impresión de que más adelánte a lo largo del libro al programar para bases de datos o internet, etc. se utilizarán algunas de las cosas que se han explicado en estos capítulos así que esperemos y sigamos leyendo.

Me toca ahora empezar la sección El lenguaje SQL con el capítulo 7. Sistemas de Bases de Datos.

Impresión de papeles pequeños

¿Has tenido que imprimir alguna vez con tamaños de papel pequeños en tu impresora? Entonces sabrás que aunque la mayoría de las impresoras manejan bien los tamaños habituales de papel, muy pocas manejan muy bien los papeles muy pequeños y muy delgados.

El problema con estos papeles suele estar relacionado con la alimentación de papel; como es muy pequeños algunas lo cargan torcido, cuando son muy delgaditos suelen coger varias hojas a la vez desplazadas quizas unos centimetros e imprimir parte de la página en una hoja y parte en otra, etc.

Hoy me ha tocado imprimir por la parte de atrás de unas hojitas ya impresas (de imprenta) en un papel bastante finito y con un tamaño de 14cmx8,5cm, con mi impresora una HP Deskjet 5151. El problema que he tenido con esta es el de coger dos hojas a la vez con bastante frecuencia, lo que suele obligarte a primero estar pendiente de ella y por otro a tirar las dos hojas mal impresas.

Pero he descubierto una cosa muy interesante que por lo menos no tenían las impresoras que yo he usado hasta el momento. Si en las propiedades de impresión elijo un papel como “papel mate para folletos y prospectos hp la impresora actua teniendo en cuenta que es un papel dificil de cargar y lo carga mucho más despacio y con mas cuidado de forma que ya no coge dos hojas a la vez.

Cada vez estoy más contento con esta impresora. No puedo hablar de calidad en foto porque nunca imprimo nada en papel fotográfico, pero para el uso diario una impresora muy recomendable y con un coste de impresión bastante contenido.

La Cara Oculta de Delphi 6. Capítulo 2: Interfaces: ejemplos

En este capítulo se utilizan varios ejemplos del uso de interfaces, siempre como recurso de programación en general y no como una herramienta pare crear/utilizar componentes COM. En los ejemplos se emplean muchas más técnicas que las interfaces, el primero es crear una extensión para el IDE de Delphi, mientras que los otros están relacionados con el uso de interfaces como medio flexible y genérico para la propagación de eventos. Se ejemplifica también la implementación de interfaces por delegación.

En este capítulo también se detalla como implementa Delphi los interfaces, es decir, como se representan en memoria y que código ensamblador genera delphi para implementar las llamadas a un método cuando usamos una variable de interfaz. Para los que nos gusta saber como funcionan las cosas es muy interesante.

La Cara Oculta de Delphi 6

Aquí estoy yo poniendome al día en Delphi 7 y en programación Win32. Después de buscar bastante por ahí para elegir un libro, y teniendo en cuenta que me interesa especiamente el tema de las bases de datos me he decantado por La Cara Oculta de Delphi 6, de Ian Marteens.

Lo pedí directamente en la web del autor por 44€ incluido el precio del transporte 24h. Al día siguiente era festivo (Reyes) así que a los dos días cuando volví del trabajo allí estaba esperandome. Tube que intercambiar un par de correos con ellos por un problemilla con el bloqueo de popups al hacer el pedido y el trato fue muy personal y rápido.

Ya había leído la versión anterior La Cara Oculta de Delphi 4 que se puede descargar en PDF completo y la verdad es que me había gustado mucho.

Un vistazo a su Indice deja ver claramente que es un libro dedicado exclusivamente a la creación de aplicaciones de gestión de bases de datos, con capítulos dedicados a Interbase, SQL Server, Oracle, procedimientos almacenados, triggers, datasnap, internet, etc. No espereis aquí ningún tipo de introducción al lenguaje ni al entorno de Delphi.

Tan solo acabo de empezar a leerlo pero tiene buena pinta. El libro empieza tratando la programación COM con un primer capítulo hablando de los interfaces un recurso reciente del lenguaje de Delphi que no conocía y que viene de exigencia de la programación COM. El primer capítulo, que acabo de leer, es una introducción a este recurso del lenguaje, a medio camino entre un recurso de programación general y una herramienta específica de la programación COM.

Este libro da por sabidas muchas cosas y yo hace mucho tiempo que no hago nada en Delphi, para ello es muy útil la versión anterior del libro que incluye más información general sobre el lenguaje.