I still cannot reproduce this...
Maybe you can test by sending the message only to the Desktop :
DefWindowProc(GetDesktopWindow(), WM_SYSCOMMAND, (int)SC_MONITORPOWER, (IntPtr)2);
with :
[DllImport("User32.dll", SetLastError = false)]
public static extern IntPtr GetDesktopWindow();
[DllImport("User32.dll", SetLastError = true, CharSet = CharSet.Auto)]
public static extern int DefWindowProc(IntPtr hWnd, uint uMsg, int wParam, IntPtr lParam);