2017-06-18 1 views
-1

La fonction WinAPI GetDpiForMonitor ne dispose pas d'une traduction d'en-tête pour Delphi 7 et de la recherche sur Internet, je ne pouvais pas en trouver un.GetDpiForMonitor avec Delphi 7 pour la reconnaissance PPP par moniteur

Si quelqu'un a un exemple de code montrant comment utiliser cette fonction WinAPI de Delphi 7, cela aiderait grandement.

+1

Cette fonction est particulièrement simple à traduire. Avez-vous fait une tentative? Si c'est trop dur pour vous, il y a le projet jedi de traduction d'en-tête. –

+0

@DavidHeffernan J'ai posté cela comme une recherche sur Internet n'a pas résolu le code Delphi clair et puisque d'autres peuvent également en avoir besoin, j'ai posté cette question afin que les recherches futures se traduira par une réponse. J'ai regardé dans la bibliothèque d'API JEDI et il ne contient aucune référence à "GetDpiForMonitor". – bLight

+0

Pourquoi n'écrivez-vous pas la traduction vous-même? C'est vraiment facile. Pourquoi n'essaies-tu pas? S'il vous plaît faire une tentative. –

Répondre

0

Voici comment charger dynamiquement la DLL et appeler la fonction Delphi 7:

Type 
    TMONITOR_DPI_TYPE = (
    MDT_EFFECTIVE_DPI {= 0}, 
    MDT_ANGULAR_DPI {= 1}, 
    MDT_RAW_DPI  {= 2}, 
    MDT_DEFAULT  {= MDT_EFFECTIVE_DPI }); 

var 
    dpiX    : UINT; 
    dpiY    : UINT; 
    ErrCode   : HResult; 
    hShcore   : THandle; 
    GetDpiForMonitor : function(monitor: HMONITOR; dpiType: TMONITOR_DPI_TYPE; var dpi, dpiY: UINT): HRESULT; stdcall; 

begin 
    hShcore := GetModuleHandle('Shcore'); 
    If hShcore <> 0 then GetDpiForMonitor := GetProcAddress(hShcore,'GetDpiForMonitor'); 
    If @GetDpiForMonitor <> nil then 
    ErrCode := GetDpiForMonitor(Monitor.Handle,MDT_EFFECTIVE_DPI,dpiX,dpiY); 
end; 
+0

C'est bien. Bien joué. Vous devez vous assurer que l'énumération est déclarée avec MINENUMSIZE de 4 –

+0

Mon autre commentaire est que vous devriez utiliser LoadLibrary pour obtenir le handle du module. Il pourrait être beaucoup chargé. Ou, pire, il peut être déchargé avant d'appeler la fonction. –