2010-08-03 6 views
3

J'ai une application de console dans .net que je suis en train de faire un traitement de polices. J'utilise Win32APIs pour cela et l'un d'entre eux nécessite un contexte de périphérique pour le chargement d'une police - en fait un IntPtr hdc = GetDC(handle of screen element). Évidemment, mon application n'a pas ces poignées car c'est une application de console. Y a-t-il un moyen de contourner ceci?Gérer dans une application de console

+0

@TCLo - Quelle API win32 avez-vous besoin de passer la poignée? La documentation MSDN peut nous donner plus d'informations sur le DC qui fonctionnera pour vous, ainsi nous pouvons vous dire comment l'attraper. –

Répondre

1

IntPtr hdc = GetDC(System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle); fonctionne dans les applications console .Net très bien.

Je ne crois pas null fonctionnera en .Net comme il donne le coup Erreur, Argument: ne peut pas convertir '<null>' à 'System.IntPtr'

+0

merci, fonctionne bien. – Stan

3

En win32 GetDC (null) devraient donner un contexte de retour (pour l'écran entier)

MSDN

donc vous devriez être en mesure de faire quelque chose comme

IntPtr hdc = GetDC(null); 
if(hdc == null) 
{ 
    OopsError(); 
} 
1

GetConsoleWindow() (http://msdn.microsoft.com/en-us/library/ms683175.aspx) :

Récupère la poignée de la fenêtre utilisée par la console associé au processus d'appel.

Alternativement, passer NULL pourrait fonctionner. A partir des documents GetDC() (http://msdn.microsoft.com/en-us/library/dd144871.aspx):

Une poignée pour la fenêtre dont DC doit être récupérée. Si cette valeur est NULL, GetDC récupère le contrôleur de domaine pour l'intégralité de l'écran.

Questions connexes