コード例 #1
0
ファイル: Win32.cs プロジェクト: bitzhuwei/CSharpGL
 internal static extern IntPtr CreateWindowEx(
    WindowStylesEx dwExStyle,
    string lpClassName,
    string lpWindowName,
    WindowStyles dwStyle,
    int x,
    int y,
    int nWidth,
    int nHeight,
    IntPtr hWndParent,
    IntPtr hMenu,
    IntPtr hInstance,
    IntPtr lpParam);
コード例 #2
0
 public static extern int SetWindowLong(IntPtr hWnd, GWL nIndex, WindowStylesEx dwNewLong);
コード例 #3
0
ファイル: User32.cs プロジェクト: oysteinkrog/MonitorControl
 public static extern IntPtr CreateWindowEx(
    WindowStylesEx dwExStyle,
    [MarshalAs(UnmanagedType.LPWStr)]
    string lpClassName,
    [MarshalAs(UnmanagedType.LPWStr)]
    string lpWindowName,
    WindowStyles dwStyle,
    Int32 x,
    Int32 y,
    Int32 nWidth,
    Int32 nHeight,
    IntPtr hWndParent,
    IntPtr hMenu,
    IntPtr hInstance,
    IntPtr lpParam);
コード例 #4
0
 //取消标志位
 public static IntPtr UnsetWindowStylesEx(IntPtr hWnd, WindowStylesEx wse)
 {
     var style = GetWindowLongPtr(hWnd, WindowLongFlags.GWL_EXSTYLE);
     return SetWindowLongPtr(hWnd, WindowLongFlags.GWL_EXSTYLE, IntPtrEnumHelper.UnsetFlag(style, wse));
 }
コード例 #5
0
ファイル: Window.cs プロジェクト: CuteITGuy/CB.Win32
 public static extern bool AdjustWindowRectEx(ref Rect lpRect, WindowStyles dwStyle, bool bMenu,
     WindowStylesEx dwExStyle);
コード例 #6
0
        private static IntPtr CreateWindow(ushort regResult, int x, int y, int width, int height, WindowStyles ws, WindowStylesEx wsEx)
        {
            var hWnd = User32.CreateWindowEx(wsEx, regResult, string.Empty, ws, x, y, width, height, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero);

            hWnd.Validate(true);

            return(hWnd);
        }
コード例 #7
0
ファイル: Functions.cs プロジェクト: Shoepon/Galateia
 public static extern IntPtr CreateWindowEx(WindowStylesEx dwExStyle,
                                            [MarshalAs(UnmanagedType.LPWStr)] string lpClassName, [MarshalAs(UnmanagedType.LPWStr)] string lpWindowName,
                                            WindowStyles dwStyle, int x, int y, int nWidth, int nHeight, IntPtr hWndParent, IntPtr hMenu,
                                            IntPtr hInstance, IntPtr lpParam);
コード例 #8
0
ファイル: Functions.cs プロジェクト: Shoepon/Galateia
 public static extern WindowStylesEx SetWindowLong(IntPtr hWnd, int nIndex, WindowStylesEx styles);
コード例 #9
0
 public static void SetWindow(IntPtr hWnd, IntPtr hWndInsertAfter, int x, int y, int cx, int cy, WindowStyles styles, WindowStylesEx stylesEx, SetWindowPositionOptions windowPositionOptions)
 {
     SetWindowStyles(hWnd, styles);
     SetWindowStylesEx(hWnd, stylesEx);
     SetWindowPos(hWnd, hWndInsertAfter, x, y, cx, cy, windowPositionOptions);
 }
コード例 #10
0
 public static extern IntPtr CreateWindowEx(WindowStylesEx dwExStyle, string lpClassName, string lpWindowName, WindowStyles dwStyle,
                                            int x, int y, int nWidth, int nHeight, IntPtr hWndParent, IntPtr hMenu, IntPtr hInstance, IntPtr lpParam);
コード例 #11
0
 public static extern bool AdjustWindowRectEx(ref Rect lpRect, [In] WindowStyles dwStyle, [In] bool bMenu, [In] WindowStylesEx dwExStyle);
コード例 #12
0
ファイル: WinMsgLoop.cs プロジェクト: vicmatmarssi/ntwain
 public static extern IntPtr CreateWindowExW(WindowStylesEx dwExStyle,
                                             ushort lpszClassName,
                                             [MarshalAs(UnmanagedType.LPTStr)] string lpszWindowName,
                                             WindowStyles style,
                                             int x, int y, int width, int height,
                                             IntPtr hWndParent, IntPtr hMenu, IntPtr hInst, IntPtr lpParam);
コード例 #13
0
ファイル: ProcessWin32Check.cs プロジェクト: radtek/CtrlUI
        //Check if process has multiple windows
        async Task <IntPtr> CheckProcessWindowsWin32AndWin32Store(DataBindApp dataBindApp, ProcessMulti processMulti)
        {
            try
            {
                //Get threads from process
                ProcessThreadCollection processThreads = GetProcessThreads(processMulti);

                //Check threads from process
                int processThreadCount = processThreads.Count;
                if (processThreadCount > 1)
                {
                    Debug.WriteLine("Found window threads: " + processThreadCount);

                    List <DataBindString> multiAnswers   = new List <DataBindString>();
                    List <IntPtr>         multiVariables = new List <IntPtr>();
                    foreach (ProcessThread threadProcess in processThreads)
                    {
                        foreach (IntPtr threadWindowHandle in EnumThreadWindows(threadProcess.Id))
                        {
                            try
                            {
                                //Check if window handle is already added
                                string windowHandleString = threadWindowHandle.ToString();
                                if (multiAnswers.Any(x => x.Data1.ToString() == windowHandleString))
                                {
                                    //Debug.WriteLine("Duplicate window handle detected, skipping.");
                                    continue;
                                }

                                //Validate the window handle
                                if (threadWindowHandle == processMulti.WindowHandle || ValidateWindowHandle(threadWindowHandle))
                                {
                                    //Get the window state
                                    WindowPlacement processWindowState = new WindowPlacement();
                                    GetWindowPlacement(threadWindowHandle, ref processWindowState);

                                    //Get the window title
                                    string windowTitleString = GetWindowTitleFromWindowHandle(threadWindowHandle);
                                    string windowSubString   = windowHandleString;

                                    //Check window main
                                    if (threadWindowHandle == processMulti.WindowHandle)
                                    {
                                        windowSubString += " (Main)";
                                    }

                                    //Check window style
                                    WindowStylesEx windowStyle = (WindowStylesEx)GetWindowLongAuto(threadWindowHandle, (int)WindowLongFlags.GWL_EXSTYLE).ToInt64();
                                    if (windowStyle.HasFlag(WindowStylesEx.WS_EX_TOOLWINDOW) || windowStyle.HasFlag(WindowStylesEx.WS_EX_LAYERED))
                                    {
                                        windowSubString += " (Tool)";
                                    }
                                    else
                                    {
                                        windowSubString += " (Window)";
                                    }

                                    //Check window state
                                    if (processWindowState.windowShowCommand == WindowShowCommand.Minimized)
                                    {
                                        windowSubString += " (Minimized)";
                                    }

                                    //Check explorer window
                                    if (dataBindApp.NameExe.ToLower() == "explorer.exe")
                                    {
                                        if (windowTitleString == "Unknown" || windowStyle.HasFlag(WindowStylesEx.WS_EX_TOOLWINDOW) || windowStyle.HasFlag(WindowStylesEx.WS_EX_LAYERED))
                                        {
                                            continue;
                                        }
                                    }

                                    DataBindString Answer1 = new DataBindString();
                                    Answer1.ImageBitmap = FileToBitmapImage(new string[] { "Assets/Default/Icons/AppMiniMaxi.png" }, vImageSourceFolders, vImageBackupSource, IntPtr.Zero, -1, 0);
                                    Answer1.Name        = windowTitleString;
                                    Answer1.NameSub     = windowSubString;
                                    Answer1.Data1       = windowHandleString;

                                    //Add window to selection
                                    if (threadWindowHandle == processMulti.WindowHandle)
                                    {
                                        multiAnswers.Insert(0, Answer1);
                                        multiVariables.Insert(0, threadWindowHandle);
                                    }
                                    else
                                    {
                                        multiAnswers.Add(Answer1);
                                        multiVariables.Add(threadWindowHandle);
                                    }
                                }
                            }
                            catch
                            {
                                Debug.WriteLine("Failed checking window handle: " + threadWindowHandle);
                            }
                        }
                    }

                    //Check if there are multiple answers
                    if (multiVariables.Count == 1)
                    {
                        Debug.WriteLine("There is only one visible window, returning the default window.");
                        return(multiVariables.FirstOrDefault());
                    }
                    else if (multiVariables.Count == 0)
                    {
                        return(IntPtr.Zero);
                    }

                    DataBindString AnswerClose = new DataBindString();
                    AnswerClose.ImageBitmap = FileToBitmapImage(new string[] { "Assets/Default/Icons/AppClose.png" }, vImageSourceFolders, vImageBackupSource, IntPtr.Zero, -1, 0);
                    AnswerClose.Name        = "Close application";
                    multiAnswers.Add(AnswerClose);

                    DataBindString AnswerLaunch = new DataBindString();
                    AnswerLaunch.ImageBitmap = FileToBitmapImage(new string[] { "Assets/Default/Icons/AppLaunch.png" }, vImageSourceFolders, vImageBackupSource, IntPtr.Zero, -1, 0);
                    AnswerLaunch.Name        = "Launch new instance";
                    multiAnswers.Add(AnswerLaunch);

                    DataBindString AnswerRestartCurrent = new DataBindString();
                    if (!string.IsNullOrWhiteSpace(processMulti.Argument))
                    {
                        AnswerRestartCurrent.ImageBitmap = FileToBitmapImage(new string[] { "Assets/Default/Icons/AppRestart.png" }, vImageSourceFolders, vImageBackupSource, IntPtr.Zero, -1, 0);
                        AnswerRestartCurrent.Name        = "Restart application";
                        AnswerRestartCurrent.NameSub     = "(Current argument)";
                        multiAnswers.Add(AnswerRestartCurrent);
                    }

                    DataBindString AnswerRestartWithout = new DataBindString();
                    AnswerRestartWithout.ImageBitmap = FileToBitmapImage(new string[] { "Assets/Default/Icons/AppRestart.png" }, vImageSourceFolders, vImageBackupSource, IntPtr.Zero, -1, 0);
                    AnswerRestartWithout.Name        = "Restart application";
                    if (!string.IsNullOrWhiteSpace(dataBindApp.Argument) || dataBindApp.Category == AppCategory.Shortcut || dataBindApp.Category == AppCategory.Emulator || dataBindApp.LaunchFilePicker)
                    {
                        AnswerRestartWithout.NameSub = "(Default argument)";
                    }
                    else
                    {
                        AnswerRestartWithout.NameSub = "(Without argument)";
                    }
                    multiAnswers.Add(AnswerRestartWithout);

                    //Ask which window needs to be shown
                    DataBindString messageResult = await Popup_Show_MessageBox(dataBindApp.Name + " has multiple windows open", "", "Please select the window that you wish to be shown:", multiAnswers);

                    if (messageResult != null)
                    {
                        if (messageResult == AnswerLaunch)
                        {
                            return(new IntPtr(-50));
                        }
                        else if (messageResult == AnswerRestartCurrent)
                        {
                            return(new IntPtr(-75));
                        }
                        else if (messageResult == AnswerRestartWithout)
                        {
                            return(new IntPtr(-80));
                        }
                        else if (messageResult == AnswerClose)
                        {
                            return(new IntPtr(-100));
                        }
                        else
                        {
                            return(multiVariables[multiAnswers.IndexOf(messageResult)]);
                        }
                    }
                    else
                    {
                        //Cancel the selection
                        return(new IntPtr(-200));
                    }
                }
                else
                {
                    Debug.WriteLine("Single window thread process: " + processMulti.WindowHandle);
                    return(processMulti.WindowHandle);
                }
            }
            catch
            {
                return(IntPtr.Zero);
            }
        }