Entradas

Mostrando las entradas etiquetadas como Windows

Qt cross platform UI scaling ( Android / Windows / Linux )

Sé que Qt tiene otros métodos para disfrutar de una escala apropiada en cualquier plataforma, pero es bastante común el trabajar sobre un proyecto en el cual no puedes hacer uso de esos métodos y necesitas al final usar un factor común de escala para todos los elementos. Tras mucho investigar y hacer pruebas empíricas he conseguido tener un factor de escala que realmente funcione en todas las plataformas ( he probado en Android, Windows y linux ) resultando en un mismo aspecto en cualquier dispositivo sin importar de su resolución o densidad.   Aquí os cuento como hacerlo.   1.- El primer paso es obtener los dpi en los que el dispositivo está funcionando realmente   - Android - // Android tiene density baseline de 160dpi ( mdpi )  QAndroidJniObject qtActivity =  QAndroidJniObject::callStaticObjectMethod("org/qtproject/qt5/android/QtNative", "activity", "()Landroid/app/Activity;");  QAndroidJniObject resources = qtActivity.callObjectMetho...

XSMS – Nuevo proyecto.

Buenas, hace tiempo que no escribo, lo sé; pero peor sería escribir sin tener nada que contar. Hace unas semanas me encargaron desarrollar una aplicación que pudiese conectarse a varios móviles de una marca concreta, recibiese los sms y los introdujese en una base de datos estándar ( o en XML ). Tras intentarlo a la antigua usanza utilizando comandos AT, caí en la cuenta de que los móviles de esta marca modernos no utilizan comandos AT cuando se trata de los buzones, por unos motivos que no voy a tocar aquí. El caso es que ya teniendo el código finiquitado me tocó volver a programarlo desde cero, esta vez disparando con pólvora de rey; directamente con la api de la marca concreta en cuestión, así me aseguré la conectividad con cualquier dispositivo de esa marca, pero no sólo esto, sino con un número ilimitado de los mismos. El proyecto pudo ser entregado a tiempo y ahora mismo es lo que se está utilizando para la recepción de los mensajes en el proyecto Vodafone Infinity . Ni ...

Cambiar IP,NETMASK y Puerta de enlace por script.

Alguna vez os habéis encontrado en la tesitura de necesitar cambiar estos datos en un ordenador al iniciar en un dominio o simplemente para que un amigo los cambie por los datos correctos o similar? Pues con el siguiente script podréis hacerlo fácilmente, es muy sencillo y va en VBScript. strComputer = "." Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colNetAdapters = objWMIService.ExecQuery ("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE") ip = Array("192.168.1.2") mascara = Array("255.255.255.0") gw = Array("192.168.1.1") gwmetric = Array(1) dns = Array("192.168.1.20", "212.145.4.98") For Each objNetAdapter in colNetAdap...

WMIC Habilitar escritorio remoto remotamente x’D

Bien, mas de una vez los administradores de sistemas nos vemos en la tesitura de querer administrar por escritorio remoto una maquina que previamente no lo tiene activado. ¿Y como solucionamos esto si estamos a 80km de el ordenador en cuestión? Pues con Windows Management Instrumentation Command-line (WMIC) . Si no conocéis esta estupenda herramienta, estáis tardando en empezar a trastearla porque su potencial es muy alto y es algo desconocida. Os recomiendo WMI CMI Studio para poder navegar por el árbol WMI porque es muy extenso y no es plan de sabérselo de memoria jeje. Bien, en concreto para habilitar remotamente el servicio de escritorio remoto se utilizaría la siguiente instrucción: wmic /node:"PcDestino" /user:"dominio\UsuarioAdministrador" /password:"contraseña" RDToggle where servername="PcDestino" call SetAllowTSConnections 1 Donde PCDestino es el nombre NetBIOS del ordenador en el que queremos activar el escritorio remoto, Usua...

VS2008 C# Centrar un formulario en pantalla.

Seguro que os toca las narices como a mi que cuando arrancais vuestra flamante app se carguen los formularios por la parte de la pantalla que le sale de ahí, pues bien, para que salga centrado en la pantalla hacéis lo siguiente: En el evento Load del form que queráis centrar en pantalla: this.Top = (Screen.PrimaryScreen.WorkingArea.Height - this.Height) / 2; this.Left = (Screen.PrimaryScreen.WorkingArea.Width - this.Width) / 2;

VS2008 C# Ocultar la primera fila de un DataGridView ( solución para cuando no se deja )

Pues bien, otro error con los controles autogenerados, resulta que a veces según la alineación de los planetas cuando agregas un DataGridView desde la pestaña de Data Sources y luego pones la primera columna que suele ser la del ID en visible=false; en el diseñador se te ve oculta pero en tiempo de ejecución no. Ésto es porque el mismo se raya y hace la asignación de la propiedad cuando no debe (la hace antes de asignar el Data Binding, y claro al asignarlo después pues vuelve a aparecer la columna), la solución a ésto es controlar el evento BindingContextChanged del DataGridView en cuestión y añadirle dentro la instrucción para ocultar la columna, ejemplo: clienteDataGridView.Columns[0].Visible = false;

VS2008 C# Combobox enlazado a datos que no devuelve el foco.

Bien, sigo con mi empeño de ir colocando todos los problemas absurdos que me van ocurriendo para que a alguien que le ocurra lo mismo le pueda servir de ayuda; el problema en éste caso es el siguiente: Colocamos un combobox a pelo en un formulario arrastrandolo desde la pestaña de Data Sources ( si, lo tengo en inglés porque yo lo valgo ), y al ejecutar el form nos encontramos con que, al ir a seleccionar en el combobox, seleccionamos el item que queremos pero no podemos salir del combobox; pues eso es por lo siguiente: Hay veces que al añadirlo de forma automática, la propiedad que pone como databinding es la propiedad "Text" cuando debería ser "SelectedValue". Solución: Vamos a las propiedades y en la sección "DataBindings" quitamos el binding de la propiedad "Text" y lo ponemos en la propiedad "SelectedValue" et voilá .

VS2008 C# ComboBox enlazado a datos con primer elemento en blanco

Como he visto que la información que hay en internet sobre ésto es confusa, tosca y poco útil, he decidido ponerlo aquí por si a alguien le es de ayuda puesto que he visto burradas como añadir nuevos elementos en blanco al dataset y demás. Bien, si lo único que quieres es que cuando se cargue tu flamante formulario con tu ComboBox sin ningún elemento seleccionado, osea en blanco pero con todos los de la base de datos en la lista; lo único que debes hacer es lo siguiente: comboBoxTuComboBox.selectedIndex = -1; ¡¡Y así de simple!! ¡¡COJONES!! P.D.: Añado el error típico que suele sufrir la gente para que si alguien busca por ello aparezca en google: "No se puede modificar la colección Items cuando está establecida la propiedad DataSource."

Unidades de red que se montan al inicio y no piden contraseña.

Éste es un pequeño problemilla con el que un administrador de sistemas de una red cutre se encuentra antes o después, sobre todo cuando no trabaja sobre un dominio sino contra un grupo de trabajo. Problema: Quiere colocar una o unas unidades de red que se monten al inicio ( o mapeen o como narices le quieran llamar ) y que no pidan contraseña para entrar en ellas por primera vez en cada reinicio ( más que nada porque al pedirla, si hay accesos directos que tiran de la unidad de red, no funcionarán ). Solución: Crear un pequeño script de proceso por lotes que se cargue al inicio y las monte identificándose adecuadamente, el ejemplo es el siguiente. @echo off echo "Montando unidad de Red para contabilidad" net use Z: file://servidor/carpetacompartida1 /USER:usuario contraseña echo "Montando unidad de Red para ContaPlus y FacturaPlus" net use Y: file://servidor/carpetacompartida2 /USER:usuario contraseña Todo esto lo colocamos en un archivo en plan "montaUnida...

Putas impresoras matriciales ( Epson LX300+II y Pagarés )

Pues eso, hoy he tenido el magnífico placer de hacerme un hombre gracias a una impresora matricial que ha tenido a bien hacerme el amor media mañana. La cosa es que el numerillos de contabilidad quería imprimir los pagarés y cheques directamente en una impresora por aquello de dar imagen corporativa y que no estén hechos de puño y letra, en aproximadamente cero coma le había colocado una potente Epson LX300+II con mas interfaces que la peluca de la bruja avería sobre la mesa, pero lo peor estaba por venir. Pues bien, ahora paso a relatar el problema y la solución puesto que me he dado cuenta buscando por internet que mayoritariamente hay dos tipos de persona englobables en otro grupo mucho más extenso que podríamos precisar como “Grupo Global”. A este último grupo global le llamaremos “Gilipollas” y creedme, estamos todos incluidos en él. Los otros tres subgrupos son “Gente que es gilipollas y no sabe preguntar o no sabe lo que pregunta”, “Gente que es gilipollas y responde por aburrim...