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!