Oharra
Baimena behar duzu orria atzitzeko. Direktorioetan saioa has dezakezu edo haiek alda ditzakezu.
Baimena behar duzu orria atzitzeko. Direktorioak alda ditzakezu.
Obtiene el identificador del modelo de usuario de la aplicación para el proceso especificado.
Sintaxis
LONG GetApplicationUserModelId(
[in] HANDLE hProcess,
[in, out] UINT32 *applicationUserModelIdLength,
[out] PWSTR applicationUserModelId
);
Parámetros
[in] hProcess
Identificador del proceso. Este identificador debe tener el derecho de acceso PROCESS_QUERY_LIMITED_INFORMATION . Para obtener más información, consulta Seguridad del proceso y derechos de acceso.
[in, out] applicationUserModelIdLength
En la entrada, el tamaño del búfer applicationUserModelId , en caracteres anchos. Si se ejecuta correctamente, el tamaño del búfer usado, incluido el terminador NULL.
[out] applicationUserModelId
Puntero a un búfer que recibe el identificador del modelo de usuario de la aplicación.
Valor devuelto
Si la función se realiza correctamente, devuelve ERROR_SUCCESS. De lo contrario, la función devuelve un código de error. Los posibles códigos de error incluyen lo siguiente.
| Código devuelto | Descripción |
|---|---|
|
El proceso no tiene ninguna identidad de aplicación. |
|
El búfer no es lo suficientemente grande como para contener los datos. El tamaño necesario se especifica mediante applicationUserModelIdLength. |
Comentarios
Para obtener información sobre los límites de tamaño de cadena, consulte Constantes de identidad.
Ejemplos
#define _UNICODE 1
#define UNICODE 1
#include <Windows.h>
#include <appmodel.h>
#include <malloc.h>
#include <stdlib.h>
#include <stdio.h>
int ShowUsage();
void ShowProcessApplicationUserModelId(__in const UINT32 pid, __in HANDLE process);
int ShowUsage()
{
wprintf(L"Usage: GetApplicationUserModelId <pid> [<pid>...]\n");
return 1;
}
int __cdecl wmain(__in int argc, __in_ecount(argc) WCHAR * argv[])
{
if (argc <= 1)
return ShowUsage();
for (int i=1; i<argc; ++i)
{
UINT32 pid = wcstoul(argv[i], NULL, 10);
if (pid > 0)
{
HANDLE process = OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION, FALSE, pid);
if (process == NULL)
wprintf(L"Error %d in OpenProcess (pid=%u)\n", GetLastError(), pid);
else
{
ShowProcessApplicationUserModelId(pid, process);
CloseHandle(process);
}
}
}
return 0;
}
void ShowProcessApplicationUserModelId(__in const UINT32 pid, __in HANDLE process)
{
wprintf(L"Process %u (handle=%p)\n", pid, process);
UINT32 length = 0;
LONG rc = GetApplicationUserModelId(process, &length, NULL);
if (rc != ERROR_INSUFFICIENT_BUFFER)
{
if (rc == APPMODEL_ERROR_NO_APPLICATION)
wprintf(L"Desktop application\n");
else
wprintf(L"Error %d in GetApplicationUserModelId\n", rc);
return;
}
PWSTR fullName = (PWSTR) malloc(length * sizeof(*fullName));
if (fullName == NULL)
{
wprintf(L"Error allocating memory\n");
return;
}
rc = GetApplicationUserModelId(process, &length, fullName);
if (rc != ERROR_SUCCESS)
wprintf(L"Error %d retrieving ApplicationUserModelId\n", rc);
else
wprintf(L"%s\n", fullName);
free(fullName);
}
Requisitos
| Requisito | Value |
|---|---|
| Plataforma de destino | Windows |
| Encabezado | appmodel.h |
| Library | Kernel32.lib |
| Archivo DLL | Kernel32.dll |