#region Disclaimer / License // Copyright (C) 2015, The Duplicati Team // http://www.duplicati.com, info@duplicati.com // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA // #endregion using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServices; namespace Duplicati.Library.Utility { //The signatures in this file are from http://pinvoke.net /// /// Various Windows specific calls /// public static class Win32 { #region Consts public const int ATTACH_PARENT_PROCESS = -1; #endregion #region Enums [FlagsAttribute] public enum EXECUTION_STATE : uint { ES_AWAYMODE_REQUIRED = 0x00000040, ES_CONTINUOUS = 0x80000000, ES_DISPLAY_REQUIRED = 0x00000002, ES_SYSTEM_REQUIRED = 0x00000001 // Legacy flag, should not be used. // ES_USER_PRESENT = 0x00000004 } #endregion #region Function calls [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] public static extern EXECUTION_STATE SetThreadExecutionState(EXECUTION_STATE esFlags); /// /// Attaches the calling process to the console of the specified process. /// /// [in] Identifier of the process, usually will be ATTACH_PARENT_PROCESS /// If the function succeeds, the return value is nonzero. /// If the function fails, the return value is zero. /// To get extended error information, call Marshal.GetLastWin32Error. [DllImport("kernel32.dll", SetLastError = true)] public static extern bool AttachConsole(int dwProcessId); #endregion } }