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(); }
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); }