How do I get a count of the gdi handles currently in use in my application?

Platform: WinForms| Category: Drawing Tips

You can do so using the native GetGuiResources api. Here is a sample:


		/// 
		/// uiFlags: 0 - Count of GDI objects
		/// uiFlags: 1 - Count of USER objects
		/// - Win32 GDI objects (pens, brushes, fonts, palettes, regions, device contexts, bitmap headers) 
		/// - Win32 USER objects:
		///	  - WIN32 resources (accelerator tables, bitmap resources, dialog box templates, font resources, menu resources, raw data resources, string table entries, message table entries, cursors/icons) 
		///   - Other USER objects (windows, menus) 
		/// 
		[DllImport('User32')]
		extern public static int GetGuiResources(IntPtr hProcess, int uiFlags);

		public static int GetGuiResourcesGDICount()
		{
			return GetGuiResources(Process.GetCurrentProcess().Handle, 0);
		}

		public static int GetGuiResourcesUserCount()
		{
			return GetGuiResources(Process.GetCurrentProcess().Handle, 1);
		}

		’ uiFlags: 0 - Count of GDI objects
		’ uiFlags: 1 - Count of USER objects
		’ - Win32 GDI objects (pens, brushes, fonts, palettes, regions, device contexts, bitmap headers) 
		’ - Win32 USER objects:
		’	  - WIN32 resources (accelerator tables, bitmap resources, dialog box templates, font resources, menu resources, raw data resources, string table entries, message table entries, cursors/icons) 
		’  - Other USER objects (windows, menus) 
		’ 
		 _ 
		extern Public static Integer GetGuiResources(IntPtr hProcess, Integer uiFlags)
 
		Public Shared Function GetGuiResourcesGDICount() As Integer
			Return GetGuiResources(Process.GetCurrentProcess().Handle,0)
		End Function
 
		Public Shared Function GetGuiResourcesUserCount() As Integer
			Return GetGuiResources(Process.GetCurrentProcess().Handle,1)
		End Function

Share with

Related FAQs

Couldn't find the FAQs you're looking for?

Please submit your question and answer.