代码开箱即用,唯一需要处理的就是要提供一个进程的pid。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime; using System.Runtime.InteropServices; using System.Diagnostics; namespace EnumPTW { class Program { [DllImport("user32.dll", SetLastError = true)] static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId); // Callback Declaration public delegate bool EnumWindowsCallback(IntPtr hwnd, int lParam); [DllImport("user32.dll")] private static extern int EnumWindows(EnumWindowsCallback callPtr, int lParam); [DllImport("user32.dll", SetLastError = true)] internal static extern bool MoveWindow(IntPtr hWnd, int X, int Y, int nWidth, int nHeight, bool bRepaint); public static bool ReportWindow(IntPtr hwnd, int lParam) { uint processId = 0; uint threadId = GetWindowThreadProcessId(hwnd, out processId); if(processId == 23272) //23272: another program pid { Console.WriteLine(string.Format("Enumerated Window Handle 0x{0:X8}, Process {1}, Thread {2}", hwnd.ToInt32(), processId, threadId)); MoveWindow(hwnd, 100, 100, 800, 600, true); } return true; } static void Main(string[] args) { // Have to declare a delegate so that a thunk is created, so that win32 may call us back. EnumWindowsCallback callBackFn = new EnumWindowsCallback(ReportWindow); EnumWindows(callBackFn, 0); Console.WriteLine("Finished. Press any key to continue."); Console.ReadKey(); } } }
一些github上的例子:
原文链接: https://www.cnblogs.com/strive-sun/p/14578328.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;
也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/404650
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!