Silverwind Posted August 10, 2012 Posted August 10, 2012 What's P/Invoke? P/Invoke aka Platform Invocation is a feature of Common Language Infrastructure implementations, like Microsoft's Common Language Runtime, that enables managed code to call native code. How do I use it? There are currently two ways to use P/Invoke. But in this thread I will cover the most used way, which is the DllImport feature: You use DllImport, like this: <DllImport("dwmapi.dll")> _ Public Shared Function DwmExtendFrameIntoClientArea(ByVal hWnd As IntPtr, ByRef pMarinset As MARGINS) As Integer End Function This lets us use the DwmExtendFrameIntoClientArea function from the dwmapi library. Let's use DllImport to give to our Windows form the Aero effect. (This only works in Windows7/Vista.). Step one: Open VS and create a new Windows Form project. Step two: Set Form1's BackColor property to "Black" Step three: Add this code: <StructLayout(LayoutKind.Sequential)> _ Public Structure MARGINS Public cxLeftWidth As Integer Public cxRightWidth As Integer Public cyTopHeight As Integer Public cyButtomheight As Integer End Structure <DllImport("dwmapi.dll")> _ Public Shared Function DwmExtendFrameIntoClientArea(ByVal hWnd As IntPtr, ByRef pMarinset As MARGINS) As Integer End Function Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load On Error Resume Next Dim margins As MARGINS = New MARGINS margins.cxLeftWidth = -1 margins.cxRightWidth = -1 margins.cyTopHeight = -1 margins.cyButtomheight = -1 Dim hwnd As IntPtr = Me.Handle Dim result As Integer = DwmExtendFrameIntoClientArea(hwnd, margins) End Sub Make sure you import the System.Runtime.InteropServices namespace. Debug your project. It should look like this: Thanks for reading! Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.