Desktop Functions: Smart Device Functions:
|
GetWindowInfo (user32)
C# Signature:
[DllImport("user32.dll",SetLastError = true)] VB Signature:
Public Declare Auto Function GetWindowInfo Lib "user32" _ VB.Net Signature:
<DllImport("User32.dll",SetLastError = True)> _ User-Defined Types:None. Notes:You must assign the cbSize parameter prior to calling GetWindowInfo(). For example: In C#
WINDOWINFO info = new WINDOWINFO(); In VB
Dim instance As Process To get a WINDOWINFO see http://pinvoke.net/default.aspx/Structures.WINDOWINFO * WARNING * The size of this (http://pinvoke.net/default.aspx/Structures.WINDOWINFO) structure is 96 bytes, while what the function expects is 60 bytes. The structure format is wrong. The correct structure format is as follows:
[System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)] with tagRECT being:
[System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)] * UPDATE * The proposed "fixed" structure above is the same. The difference is in the fact that the default packing size in managed code is 8 bytes, while the default packing in unmanaged code is 4 bytes. So, when marshalled to the API, the struct size is 60. By the way, the StructLayoutAttribute is optional, because the C# compiler applies by default the Sequential layout kind on structures (but not on classes). Tips & Tricks:Note that the members of the RECT structure should be int, not long. In some other API functions they are long, so this can be confusing. Sample Code:Please add some! Alternative Managed API:Do you know one? Please contribute it! Please edit this page!Do you have...
Select "Edit This Page" on the right hand toolbar and edit it! Or add new pages containing supporting types needed for this API (structures, delegates, and more). |
|