Ver Mensaje Individual
  #1  
Antiguo 20-08-2011
_cero_ _cero_ is offline
Miembro
 
Registrado: abr 2007
Posts: 147
Reputación: 18
_cero_ Va por buen camino
Manejo de características de Windows 7

Como están todos, hace tiempo hice una pregunta, que fue “Creación de jumplist en Windows 7”, como el win en ese entonces era relativamente nuevo, no había información en club Delphi (al menos no hasta donde busque), y esta característica no me urgía, pues simplemente abandone, pero aun así las ideas que incluían jumplist me seguían rondando por la cabeza y como tuve un par de días semi libres, ps decidí meterme y responderme a mí mismo, solo que preferí hacer otro hilo, en forma de tutorial sobre todas las nuevas características que nos trae el win 7 y de cómo manipularlas desde el buen amigo builder (esto es algo que debí haber hecho desde que salió el win 7, pero el tiempo me faltaba), bueno manos a la obra.

1 agrupación de los botones en la barra de tareas.
http://www.megapix.com/?p=1KQQFG7Y.jpg

Como ya sabrán en Windows 7 los botones de una misma aplicación se agrupan en uno solo, pero ¿Cómo es que Windows 7 identifica cada aplicación y la separa debidamente, incluso ejecutando barias instancias de una misma aplicación? La respuesta es, que cada aplicación consta de un identificador la cual es una cadena de formato libre de 128 caracteres, en la cual podemos introducir el nombre de la empresa, nombre y versión de la aplicación y cualquier otra cosa que se nos apetezca, si no es establecida por nosotros, el sistema le asignara una determinada por el identificador de proceso y el nombre de la aplicación, para establecer esta cadena contamos con el api “SetCurrentProcessExplicitAppUserModelID”, para el caso de un identificador de aplicación y “SHGetPropertyStoreForWindow” para el cambio del ID de una ventana. Una vez explicado esto procedo a dejar algo de código y el correspondiente ejemplo subido a MU.

Forma de uso de SetCurrentProcessExplicitAppUserModelID
Código:
SetCurrentProcessExplicitAppUserModelID( L"Identificador.MiAplicacion.MiVercion" );
Forma de uso de SHGetPropertyStoreForWindow
Código:
//Hay que tener en cuenta que “PKEY_AppUserModel_ID” está ya definida en “PropKey.h”, 
//pero la pongo porque muchas veces hay problemas al compilar
PROPERTYKEY PKEY_AppUserModel_ID;
CLSIDFromString( L"{9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}", &PKEY_AppUserModel_ID.fmtid );
PKEY_AppUserModel_ID.pid = 6;
   
PROPVARIANT pv;
pv.vt = VT_LPWSTR;
pv.pwszVal = L"Identificador.MiAplicacion.MiVercion";
   
IPropertyStore* pps;
SHGetPropertyStoreForWindow( this->Handle, IID_PPV_ARGS( &pps ) );
pps->SetValue( PKEY_AppUserModel_ID, pv );
pps->Commit();
Ejemplo: http://www.megaupload.com/?d=2T69EHMR
Responder Con Cita