@msdn=http://social.msdn.microsoft.com/search/en-US/windows?refinement=183&refinementChanges=117&query=$$$ @pinvoke=http://pinvoke.net/$$$.htm Summary: The GetClassName API !!!!C# Signature: [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)] static extern int GetClassName(IntPtr hWnd, StringBuilder lpClassName,int nMaxCount); !!!!VB.NET Signature: <DllImport("user32.dll", CharSet:=CharSet.Auto)> _ Private Shared Function GetClassName(ByVal hWnd As System.IntPtr, _ ByVal lpClassName As System.Text.StringBuilder, _ ByVal nMaxCount As Integer) As Integer ' Leave function empty End Function !!!! Alternate VB.NET Signature: Public Declare Auto Function GetClassName Lib "User32.dll" (ByVal hwnd As IntPtr, _ <Out()> ByVal lpClassName As System.Text.StringBuilder, _ ByVal nMaxCount As Integer) As Integer !!!!VB Signature Public Declare Function GetClassName Lib "user32" Alias "GetClassNameA" _ (ByVal hWnd As Long, _ ByVal lpClassName As String, _ ByVal nMaxCount As Long) As Long !!!!Notes: In .NET Framework 4.0, only CharSet.Ansi seems to produce the result. The return type int seems to crash the .NET application in 64-bit mode (occasionally), long seems to work better. Maybe it should even be IntPtr? Please modify this note if you have more insights. !!!!Tips & Tricks: Please add some! !!!!Sample Code: '''C# Sample Code''' private static bool isIEServerWindow(IntPtr hWnd) { int nRet; // Pre-allocate 256 characters, since this is the maximum class name length. StringBuilder ClassName = new StringBuilder(256); //Get the window class name nRet = GetClassName(hWnd, ClassName, ClassName.Capacity); if(nRet != 0) { return (string.Compare(ClassName.ToString(), "Internet Explorer_Server",true,CultureInfo.InvariantCulture) == 0); } else { return false; } } '''VB.NET Sample Code''' Create a new VB .NET form and add a button Button1 to it. Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Dim sClassName As New StringBuilder("", 256) 'pass in the handle of the object for which to get 'the class name; for example, the form's handle Call GetClassName(Me.Handle, sClassName, 256) MessageBox.Show(sClassName.ToString) End Sub !!!!Alternative Managed API: The ManagedWindowsApi project (http://mwinapi.sourceforge.net) provides a class ManagedWinapi.SystemWindow that has a ClassName property. Documentation: GetClassName@msdn on MSDN
Edit user32.getclassname
You do not have permission to change this page. If you feel this is in error, please send feedback with the contact link on the main page.