示例#1
0
        private static string GetLayoutCode()
        {
            StringBuilder pwszKLID = new StringBuilder(9);

            InteropWindow.GetKeyboardLayoutName(pwszKLID);
            return(pwszKLID.ToString());
        }
示例#2
0
 public static void SetFullScreen(IntPtr hwnd, int X, int Y, int cx, int cy)
 {
     if (!InteropWindow.SetWindowPos(hwnd, InteropWindow.HWND_TOP, X, Y, cx, cy, 64U))
     {
         throw new SystemException("Cannot call SetWindowPos()", (Exception) new Win32Exception(Marshal.GetLastWin32Error()));
     }
 }
示例#3
0
        public static IntPtr BringWindowToFront(
            string name,
            bool _,
            bool isRetoreMinimizedWindow = false)
        {
            IntPtr window = InteropWindow.FindWindow((string)null, name);

            if (window == IntPtr.Zero)
            {
                throw new SystemException("Cannot find window '" + name + "'", (Exception) new Win32Exception(Marshal.GetLastWin32Error()));
            }
            if (!InteropWindow.SetForegroundWindow(window))
            {
                throw new SystemException("Cannot set foreground window", (Exception) new Win32Exception(Marshal.GetLastWin32Error()));
            }
            if (isRetoreMinimizedWindow)
            {
                InteropWindow.ShowWindow(window, 9);
            }
            else
            {
                InteropWindow.ShowWindow(window, 5);
            }
            return(window);
        }
示例#4
0
        public static IntPtr GetWindowHandle(string name)
        {
            IntPtr window = InteropWindow.FindWindow((string)null, name);

            if (!(window == IntPtr.Zero))
            {
                return(window);
            }
            throw new SystemException("Cannot find window '" + name + "'", (Exception) new Win32Exception(Marshal.GetLastWin32Error()));
        }
示例#5
0
        public static IntPtr MinimizeWindow(string name)
        {
            IntPtr window = InteropWindow.FindWindow((string)null, name);

            if (window == IntPtr.Zero)
            {
                throw new SystemException("Cannot find window '" + name + "'", (Exception) new Win32Exception(Marshal.GetLastWin32Error()));
            }
            InteropWindow.ShowWindow(window, 6);
            return(window);
        }
示例#6
0
 public void CustomMessageWindow_Loaded(object sender, RoutedEventArgs e)
 {
     if (this.Owner == null || InteropWindow.FindMainWindowState((Window)this) == WindowState.Minimized)
     {
         this.WindowStartupLocation = WindowStartupLocation.CenterScreen;
     }
     if (this.mButton2 == null)
     {
         return;
     }
     this.UpdateLayout();
 }
示例#7
0
        public static int GetAForegroundApplicationProcessId()
        {
            IntPtr foregroundWindow = InteropWindow.GetForegroundWindow();

            if (foregroundWindow == IntPtr.Zero)
            {
                return(0);
            }
            uint ProcessId             = 0;
            int  windowThreadProcessId = (int)InteropWindow.GetWindowThreadProcessId(foregroundWindow, ref ProcessId);

            return((int)ProcessId);
        }
示例#8
0
        public static int GetScreenDpi()
        {
            IntPtr dc = InteropWindow.CreateDC("DISPLAY", (string)null, (string)null, IntPtr.Zero);

            if (dc == IntPtr.Zero)
            {
                return(-1);
            }
            int num = InteropWindow.GetDeviceCaps(dc, 88);

            if (num == 0)
            {
                num = 96;
            }
            InteropWindow.DeleteDC(dc);
            return(num);
        }
示例#9
0
        public static string CurrentCompStr(IntPtr handle)
        {
            int    dwIndex = 8;
            IntPtr context = InteropWindow.ImmGetContext(handle);

            try
            {
                int compositionStringW = InteropWindow.ImmGetCompositionStringW(context, dwIndex, (byte[])null, 0);
                if (compositionStringW <= 0)
                {
                    return(string.Empty);
                }
                byte[] numArray = new byte[compositionStringW];
                InteropWindow.ImmGetCompositionStringW(context, dwIndex, numArray, compositionStringW);
                return(Encoding.Unicode.GetString(numArray));
            }
            finally
            {
                InteropWindow.ImmReleaseContext(handle, context);
            }
        }
示例#10
0
        public static Cursor CreateCursor(
            Bitmap bmp,
            int xHotSpot,
            int yHotSpot,
            float scalingFactor)
        {
            int width = (int)(32.0 * (double)scalingFactor);

            int height = (int)(32.0 * (double)scalingFactor);

            using (Bitmap bitmap = new Bitmap((Image)bmp, width, height))
            {
                IntPtr       hicon = bitmap.GetHicon();
                IconInfo     icon  = new IconInfo();
                ref IconInfo local = ref icon;
                InteropWindow.GetIconInfo(hicon, ref local);
                icon.xHotspot = (int)((double)xHotSpot * (double)scalingFactor * ((double)width / (double)bmp?.Width.Value));
                icon.yHotspot = (int)((double)yHotSpot * (double)scalingFactor * ((double)height / (double)bmp?.Height.Value));
                icon.fIcon    = false;
                return(new Cursor(InteropWindow.CreateIconIndirect(ref icon)));
            }
示例#11
0
        public static bool ForceSetForegroundWindow(IntPtr h)
        {
            if (h == IntPtr.Zero)
            {
                return(false);
            }
            IntPtr foregroundWindow = InteropWindow.GetForegroundWindow();

            if (foregroundWindow == IntPtr.Zero)
            {
                return(InteropWindow.SetForegroundWindow(h));
            }
            if (h == foregroundWindow)
            {
                return(true);
            }
            uint ProcessId             = 0;
            uint windowThreadProcessId = InteropWindow.GetWindowThreadProcessId(foregroundWindow, ref ProcessId);
            uint currentThreadId       = InteropWindow.GetCurrentThreadId();

            if ((int)currentThreadId == (int)windowThreadProcessId)
            {
                return(InteropWindow.SetForegroundWindow(h));
            }
            if (windowThreadProcessId != 0U)
            {
                if (!InteropWindow.AttachThreadInput(currentThreadId, windowThreadProcessId, true))
                {
                    return(false);
                }
                if (!InteropWindow.SetForegroundWindow(h))
                {
                    InteropWindow.AttachThreadInput(currentThreadId, windowThreadProcessId, false);
                    return(false);
                }
                InteropWindow.AttachThreadInput(currentThreadId, windowThreadProcessId, false);
            }
            return(true);
        }
示例#12
0
        public static string MapLayoutName(string code = null)
        {
            if (code == null)
            {
                code = InteropWindow.GetLayoutCode();
            }
            string str;

            switch (code)
            {
            case "00000401":
                str = "Arabic (101)";
                break;

            case "00000402":
                str = "Bulgarian(typewriter)";
                break;

            case "00000404":
                str = "Chinese (traditional) - us keyboard";
                break;

            case "00000405":
                str = "Czech";
                break;

            case "00000406":
                str = "Danish";
                break;

            case "00000407":
                str = "German";
                break;

            case "00000408":
                str = "Greek";
                break;

            case "00000409":
                str = "United States";
                break;

            case "0000040A":
                str = "Spanish";
                break;

            case "0000040B":
                str = "Finnish";
                break;

            case "0000040C":
                str = "French";
                break;

            case "0000040D":
                str = "Hebrew";
                break;

            case "0000040E":
                str = "Hungarian";
                break;

            case "0000040F":
                str = "Icelandic";
                break;

            case "00000410":
                str = "Italian";
                break;

            case "00000411":
                str = "Japanese";
                break;

            case "00000412":
                str = "Korean";
                break;

            case "00000413":
                str = "Dutch";
                break;

            case "00000414":
                str = "Norwegian";
                break;

            case "00000415":
                str = "Polish (programmers)";
                break;

            case "00000416":
                str = "Portuguese (brazillian abnt)";
                break;

            case "00000418":
                str = "Romanian (legacy)";
                break;

            case "00000419":
                str = "Russian";
                break;

            case "0000041A":
                str = "Croatian";
                break;

            case "0000041B":
                str = "Slovak";
                break;

            case "0000041C":
                str = "Albanian";
                break;

            case "0000041D":
                str = "Swedish";
                break;

            case "0000041E":
                str = "Thai Kedmanee";
                break;

            case "0000041F":
                str = "Turkish Q";
                break;

            case "00000420":
                str = "Urdu";
                break;

            case "00000422":
                str = "Ukrainian";
                break;

            case "00000423":
                str = "Belarusian";
                break;

            case "00000424":
                str = "Slovenian";
                break;

            case "00000425":
                str = "Estonian";
                break;

            case "00000426":
                str = "Latvian";
                break;

            case "00000427":
                str = "Lithuanian ibm";
                break;

            case "00000428":
                str = "Tajik";
                break;

            case "00000429":
                str = "Persian";
                break;

            case "0000042A":
                str = "Vietnamese";
                break;

            case "0000042B":
                str = "Armenian eastern";
                break;

            case "0000042C":
                str = "Azeri Latin";
                break;

            case "0000042E":
                str = "Sorbian standard (legacy)";
                break;

            case "0000042F":
                str = "Macedonian (fyrom)";
                break;

            case "00000432":
                str = "Setswana";
                break;

            case "00000437":
                str = "Georgian";
                break;

            case "00000438":
                str = "Faeroese";
                break;

            case "00000439":
                str = "Deanagari - inscript";
                break;

            case "0000043A":
                str = "Maltese 47-key";
                break;

            case "0000043B":
                str = "Norwegian with sami";
                break;

            case "0000043F":
                str = "Kazakh";
                break;

            case "00000440":
                str = "Kyrgyz cyrillic";
                break;

            case "00000442":
                str = "Turkmen";
                break;

            case "00000444":
                str = "Tatar";
                break;

            case "00000445":
                str = "Bengali";
                break;

            case "00000446":
                str = "Punjabi";
                break;

            case "00000447":
                str = "Gujarati";
                break;

            case "00000448":
                str = "Oriya";
                break;

            case "00000449":
                str = "Tamil";
                break;

            case "0000044A":
                str = "Telugu";
                break;

            case "0000044B":
                str = "Kannada";
                break;

            case "0000044C":
                str = "Malayalam";
                break;

            case "0000044D":
                str = "Assamese - inscript";
                break;

            case "0000044E":
                str = "Marathi";
                break;

            case "00000450":
                str = "Mongolian cyrillic";
                break;

            case "00000451":
                str = "Tibetan (prc)";
                break;

            case "00000452":
                str = "United Kingdom Extended";
                break;

            case "00000453":
                str = "Khmer";
                break;

            case "00000454":
                str = "Lao";
                break;

            case "0000045A":
                str = "Syriac";
                break;

            case "0000045B":
                str = "Sinhala";
                break;

            case "00000461":
                str = "Nepali";
                break;

            case "00000463":
                str = "Pashto (afghanistan)";
                break;

            case "00000465":
                str = "Divehi phonetic";
                break;

            case "00000468":
                str = "Hausa";
                break;

            case "0000046A":
                str = "Yoruba";
                break;

            case "0000046C":
                str = "Sesotho sa Leboa";
                break;

            case "0000046D":
                str = "Bashkir";
                break;

            case "0000046E":
                str = "Luxembourgish";
                break;

            case "0000046F":
                str = "Greenlandic";
                break;

            case "00000470":
                str = "Igbo";
                break;

            case "00000480":
                str = "Uyghur (legacy)";
                break;

            case "00000481":
                str = "Maroi";
                break;

            case "00000485":
                str = "Yakut";
                break;

            case "00000488":
                str = "Wolof";
                break;

            case "00000804":
                str = "Chinese (simplified) -us keyboard";
                break;

            case "00000807":
                str = "Swiss german";
                break;

            case "00000809":
                str = "United Kingdom";
                break;

            case "0000080A":
                str = "Latin america";
                break;

            case "0000080C":
                str = "Belgian French";
                break;

            case "00000813":
                str = "Belgian (period)";
                break;

            case "00000816":
                str = "Portuguese";
                break;

            case "0000081A":
                str = "Serbian (latin)";
                break;

            case "0000082C":
                str = "Azeri Cyrillic";
                break;

            case "0000083B":
                str = "Swedish with sami";
                break;

            case "00000843":
                str = "Uzbek cyrillic";
                break;

            case "00000850":
                str = "Mongolian (mongolian script)";
                break;

            case "0000085D":
                str = "Inuktitut - latin";
                break;

            case "00000C04":
                str = "Chinese (traditional, hong kong s.a.r.) - us keyboard";
                break;

            case "00000C0C":
                str = "Canada French (legacy)";
                break;

            case "00000C1A":
                str = "Serbian (cyrillic)";
                break;

            case "00001004":
                str = "Chinese (simplified, singapore) - us keyboard";
                break;

            case "00001009":
                str = "Canada French";
                break;

            case "0000100C":
                str = "Swiss french";
                break;

            case "00001404":
                str = "Chinese (traditional, macao s.a.r.) - us keyboard";
                break;

            case "00001809":
                str = "Irish";
                break;

            case "0000201A":
                str = "Bosnian (cyrillic)";
                break;

            case "00004009":
                str = "United States - india";
                break;

            case "00010401":
                str = "Arabic (102)";
                break;

            case "00010402":
                str = "Bulgarian (latin)";
                break;

            case "00010405":
                str = "Czech (qwerty)";
                break;

            case "00010407":
                str = "German (ibm)";
                break;

            case "00010408":
                str = "Greek (220)";
                break;

            case "00010409":
                str = "United States - dvorak";
                break;

            case "0001040A":
                str = "Spanish variation";
                break;

            case "0001040E":
                str = "Hungarian 101 key";
                break;

            case "00010410":
                str = "Italian (142)";
                break;

            case "00010415":
                str = "Polish (214)";
                break;

            case "00010416":
                str = "Portuguese (brazillian abnt2)";
                break;

            case "00010418":
                str = "Romanian (standard)";
                break;

            case "00010419":
                str = "Russian (typewriter)";
                break;

            case "0001041B":
                str = "Slovak (qwerty)";
                break;

            case "0001041E":
                str = "Thai Pattachote";
                break;

            case "0001041F":
                str = "Turkish F";
                break;

            case "00010426":
                str = "Latvian (qwerty)";
                break;

            case "00010427":
                str = "Lithuanian";
                break;

            case "0001042B":
                str = "Armenian Western";
                break;

            case "0001042E":
                str = "Sorbian extended";
                break;

            case "0001042F":
                str = "Macedonian (fyrom) - standard";
                break;

            case "00010437":
                str = "Georgian (qwerty)";
                break;

            case "00010439":
                str = "Hindi traditional";
                break;

            case "0001043A":
                str = "Maltese 48-key";
                break;

            case "0001043B":
                str = "Sami extended norway";
                break;

            case "00010445":
                str = "Bengali - inscript (legacy)";
                break;

            case "0001045A":
                str = "Syriac phonetic";
                break;

            case "0001045B":
                str = "Sinhala -Wij 9";
                break;

            case "0001045D":
                str = "Inuktitut - naqittaut";
                break;

            case "00010465":
                str = "Divehi typewriter";
                break;

            case "00010480":
                str = "Uyghur";
                break;

            case "0001080C":
                str = "Belgian (comma)";
                break;

            case "0001083B":
                str = "Finnish with sami";
                break;

            case "00011009":
                str = "Canada Multilingual";
                break;

            case "00011809":
                str = "Gaelic";
                break;

            case "00020401":
                str = "Arabic (102) Azerty";
                break;

            case "00020402":
                str = "Bulgarian (phonetic)";
                break;

            case "00020405":
                str = "Czech programmers";
                break;

            case "00020408":
                str = "Greek (319)";
                break;

            case "00020409":
                str = "United States - international";
                break;

            case "00020418":
                str = "Romanian (programmers)";
                break;

            case "0002041E":
                str = "Thai Kedmanee (non-shiftlock)";
                break;

            case "00020422":
                str = "Ukrainian (enhanced)";
                break;

            case "00020427":
                str = "Lithuanian standard";
                break;

            case "0002042E":
                str = "Sorbian standard";
                break;

            case "00020437":
                str = "Georgian (ergonomic)";
                break;

            case "00020445":
                str = "Bengali - inscript";
                break;

            case "0002083B":
                str = "Sami extended finland-sweden";
                break;

            case "00030402":
                str = "Bulgarian";
                break;

            case "00030408":
                str = "Greek (220) latin";
                break;

            case "00030409":
                str = "United States - dvorak left hand";
                break;

            case "0003041E":
                str = "Thai Pattachote (non-shiftlock)";
                break;

            case "00040402":
                str = "Bulgarian (phonetic traditional)";
                break;

            case "00040408":
                str = "Greek (319) latin";
                break;

            case "00050408":
                str = "Greek latin";
                break;

            case "00050409":
                str = "United States - dvorak right hand";
                break;

            case "00060408":
                str = "Greek polyonic";
                break;

            default:
                str = code;
                break;
            }
            return(str);
        }
示例#13
0
 public static bool IsWindowTopMost(IntPtr hWnd)
 {
     return((InteropWindow.GetWindowLong(hWnd, -20) & 8) == 8);
 }
示例#14
0
 public static void SetFullScreen(IntPtr hwnd)
 {
     InteropWindow.SetFullScreen(hwnd, 0, 0, InteropWindow.ScreenWidth, InteropWindow.ScreenHeight);
 }
示例#15
0
        public static void RemoveWindowFromAltTabUI(IntPtr handle)
        {
            int windowLong = InteropWindow.GetWindowLong(handle, -20);

            InteropWindow.SetWindowLong(handle, -20, windowLong | 128);
        }
示例#16
0
 public static WindowState FindMainWindowState(Window window)
 {
     return(window?.Owner == null ? window.WindowState : InteropWindow.FindMainWindowState(window.Owner));
 }