it's 2016, why do I still have to use P/Invoke? : <p>I've been out of the programming game for almost 20 years now but every once in a while I write a app with Visual Studio.  </p>

<p>My question is, given .NET has been with us for about 13 years, why should I <strong><em>ever</em></strong> have to use the native API aka P/Invoke?  Why hasn't everything been converted to official .NET managed assemblies?</p>

<p>Just recently I ran into a situation where I simply want to toggle my Wifi connection on and off without using the mouse.  The keyboard is always faster (for me), yet there is no standard Windows keyboard shortcut for it.  So great, a very simple C# program for me to write.  Imagine my surprise when I found I would have to dip into the native API to this.   I remember having to do this in the early days of .NET --sure, a new technology needs a few years to catch up, right?  Well now it's 2016.  </p>

<p>I suppose I just don't see the big picture.  Someone please illuminate me.</p>
