C# EnumWindows示例代码

代码开箱即用,唯一需要处理的就是要提供一个进程的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大佬

    C#  EnumWindows示例代码

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/404650

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年4月25日 下午4:39
下一篇 2023年4月25日 下午4:39

相关推荐