GetApplicationUserModelId, fonction (appmodel.h)
Obtient l’ID de modèle utilisateur de l’application pour le processus spécifié.
Syntaxe
LONG GetApplicationUserModelId(
[in] HANDLE hProcess,
[in, out] UINT32 *applicationUserModelIdLength,
[out] PWSTR applicationUserModelId
);
Paramètres
[in] hProcess
Handle du processus. Ce handle doit avoir le droit d’accès PROCESS_QUERY_LIMITED_INFORMATION . Pour plus d’informations, consultez Traiter les droits de sécurité et d’accès.
[in, out] applicationUserModelIdLength
En entrée, la taille de la mémoire tampon applicationUserModelId , en caractères larges. En cas de réussite, la taille de la mémoire tampon utilisée, y compris la terminaison null.
[out] applicationUserModelId
Pointeur vers une mémoire tampon qui reçoit l’ID de modèle utilisateur de l’application.
Valeur retournée
Si la fonction réussit, elle retourne ERROR_SUCCESS. Sinon, la fonction retourne un code d’erreur. Les codes d’erreur possibles sont les suivants.
Code de retour | Description |
---|---|
|
Le processus n’a pas d’identité d’application. |
|
La mémoire tampon n’est pas assez grande pour contenir les données. La taille requise est spécifiée par applicationUserModelIdLength. |
Remarques
Pour plus d’informations sur les limites de taille de chaîne, consultez Constantes d’identité.
Exemples
#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);
}
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Windows |
En-tête | appmodel.h |
Bibliothèque | Kernel32.lib |
DLL | Kernel32.dll |
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour