Пример #1
0
        private static IntPtr GetMinesweeperWindowPtr(IEnumerable <string> gameWindowNames)
        {
            foreach (var wndName in gameWindowNames)
            {
                var hWnd = WinApiHelper.FindWindow(null, wndName);
                if (hWnd != IntPtr.Zero)
                {
                    return(hWnd);
                }
            }

            throw new WindowCannotBeFoundException();
        }
Пример #2
0
        static void T2()
        {
            while (true)
            {
                IntPtr mwh = WinApiHelper.FindWindow(null, "向日葵远程控制");  //主窗口句柄
                WinApiHelper.SetActiveWindow(mwh);

                WinApiHelper.ShowWindow(mwh, WindowState.SW_RESTORE);
                WinApiHelper.Click(mwh, 328, 335);
                Thread.Sleep(500);
                Bitmap data = WinApiHelper.CutControlBitmap(mwh);
                data.Save(DateTime.Now.ToFileTime() + ".png");
                WinApiHelper.Click(mwh, 310, 335);
                Thread.Sleep(500);
                WinApiHelper.ShowWindow(mwh, WindowState.SW_MINIMIZE);
                WinApiHelper.Click(mwh, 1, 1);
                Thread.Sleep(1000 * 5);
            }
        }
        public void SendMsg(string windowName)
        {
            IntPtr hWnd = WinApiHelper.FindWindow(null, windowName);

            if (hWnd == IntPtr.Zero)
            {
                return;
            }
            // WinApiHelper.SetWindowText(hWnd, "Hello");
            // WinApiHelper.ShowWindow(hWnd, 5);
            // WinApiHelper.SetForegroundWindow(hWnd);
            // WinApiHelper.SendMessage(hWnd, 0x1081, 0, "msg");

            LONGDATASTRUCT longData = new LONGDATASTRUCT()
            {
                sender  = System.Windows.Application.Current.MainWindow.Title,
                content = "你好。",
                tag     = "来自 C# WPF"
            };
            // 将数据拷贝至非托管内存
            IntPtr longDataPtr = Marshal.AllocHGlobal(Marshal.SizeOf(longData));

            Marshal.StructureToPtr <LONGDATASTRUCT>(longData, longDataPtr, true);

            COPYDATASTRUCT copyData = new COPYDATASTRUCT()
            {
                dwData = IntPtr.Zero,
                cbData = Marshal.SizeOf(longData),
                lpData = longDataPtr,
            };

            IntPtr cpDataPtr = Marshal.AllocHGlobal(Marshal.SizeOf(copyData));

            Marshal.StructureToPtr(copyData, cpDataPtr, true);

            WinApiHelper.SendMessage(hWnd, MSG_DEF.WM_COPYDATA, IntPtr.Zero, cpDataPtr);

            // 释放掉相应的非托管内存数据
            Marshal.FreeHGlobal(longDataPtr);
            Marshal.FreeHGlobal(cpDataPtr);
        }