J'appelle un appel à la fonction Windows SetProcessDpiAwareness comme première chose dans mon application Delphi XE7 (après le chargement dynamique de la DLL shcore). Je sais qu'il est préférable d'utiliser un manifeste pour définir la valeur de DPIAware et je l'ai fait fonctionner séparément et je l'utiliserai éventuellement. Cependant, pendant le développement, je veux utiliser un paramètre de ligne de commande pour définir la valeur DPIAwareness, sinon je dois reconstruire l'application pour changer cet état.Code d'erreur SetProcessDpiAwareness
Le problème est que SetProcessDpiAwareness renvoie le code d'erreur $ 800700A0. Cela n'est pas documenté dans la description de la fonction, que signifie le code?
Ah je l'ai trouvé, grâce à la réponse à regarder le paramètre, je l'avais déclaré le type de fonction mal, j'avais:
TSetDPIFunc = function (const PROCESS_DPI_AWARENESS): HRESULT; stdcall;
mais PROCESS_DPI_AWARENESS n'a pas été défini comme une énumération. Modifié pour le suivant et il fonctionne maintenant bien:
TSetDPIFunc = fonction (const x: Entier): HRESULT; stdcall;
Appelez-vous 'SetProcessDPIAwareness' ou' SetProcessDPIAware'? Le titre suggère le premier. Ce dernier ne renvoie aucun code d'erreur, un retour non nul signifie que la fonction a réussi. S'il vous plaît modifier la question pour effacer. –
Si vous appelez en effet SetProcessDPIAwareNESS, veuillez nous indiquer avec quel argument vous l'appelez! – CherryDT
La fonction est SetProcessDpiAwareness, désolé typo dans la publication originale. – kaj66