C# windows API

本文介绍如何在Windows环境中通过C#代码实现对窗体的查找、显示控制及模拟鼠标键盘操作的方法。具体包括根据窗体标题获取句柄、调整窗体显示状态、模拟鼠标点击及键盘输入等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 获取所有进程,根据窗体标题获取 窗体句柄

//MainWindowHandle 进程窗体句柄

  Process[] ps = Process.GetProcesses();


            foreach (Process pr in ps)
            {
              
                if (pr.MainWindowTitle.IndexOf(" 电子客票报销凭证") != -1)
                {


                    ShowWindow(pr.MainWindowHandle, 3);//全屏显示
                    SetWindowPos(pr.MainWindowHandle, HWND_TOPMOST, 1, 1, 1, 1, SWP_NOMOVE | SWP_NOSIZE);//让窗体置顶显示


                    break;
                }


            }


//屏幕 最小,最大,最合适 和 关闭 

  [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
        public static extern int ShowWindow(IntPtr hwnd, int nCmdShow);

//让窗体置顶显示

 [DllImport("user32.dll")]
        public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int x, int y, int cx, int cy, uint uFlags);


//移动鼠标坐标    SetCursorPos(166, 150);//定位鼠标

 [DllImport("user32.dll")]
        static extern bool SetCursorPos(int X, int Y);



//模拟鼠标  mouse_event((int)(MouseEventFlags.LeftDown | MouseEventFlags.LeftUp), 166, 150, 0, IntPtr.Zero);//鼠标事件

  public enum MouseEventFlags
        {
            Move = 0x0001,
            LeftDown = 0x0002,
            LeftUp = 0x0004,
            RightDown = 0x0008,
            RightUp = 0x0010,
            MiddleDown = 0x0020,
            MiddleUp = 0x0040,
            Wheel = 0x0800,
            Absolute = 0x8000
        }

   [DllImport("User32")]
        public extern static void mouse_event(int dwFlags, int dx, int dy, int dwData, IntPtr dwExtraInfo);


//模拟键盘

       [System.Runtime.InteropServices.DllImport("user32")]
        static extern void keybd_event(
            byte bVk,
            byte bScan,
            uint dwFlags,
            uint dwExtraInfo
            );
        const uint KEYEVENTF_EXTENDEDKEY = 0x1;
        const uint KEYEVENTF_KEYUP = 0x2;




//获取鼠标坐标

 [DllImport("user32.dll", EntryPoint = "GetCursorPos")]
        public static extern bool GetCursorPos(out Point pt);


//获取鼠标处的窗体句柄

 [DllImport("user32.dll", EntryPoint = "WindowFromPoint")]
        public static extern IntPtr WindowFromPoint(Point pt);



  // 改变窗口的标题
        [DllImport("user32.dll", EntryPoint = "SendMessage")]
        private static extern int SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, string lParam);





        private const int WM_SETTEXT = 0x000C;
        /// <summary>
        /// 给窗口发送内容
        /// </summary>
        /// <param name="hWnd">句柄</param>
        /// <param name="lParam">要发送的内容</param>
        public static void SetText(IntPtr hWnd, string lParam)
        {
            SendMessage(hWnd, WM_SETTEXT, IntPtr.Zero, lParam);
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值