c# 获得一个程序的窗口句柄,并且修改它的标题

按下BUTTON1的时候以获取calc.exe将窗口标题计算器改成我的计算器最简单的代码提供一下,能用就给分了... 按下BUTTON1的时候
以获取calc.exe 将窗口标题计算器 改成 我的计算器
最简单的代码 提供一下 ,能用就给分了
展开
 我来答
小羊说编程
2017-06-28 · 专注编程模式教学,提升大家实战经验
小羊说编程
采纳数:406 获赞数:1394

向TA提问 私信TA
展开全部

第一步:获取目标窗口句柄

首先引用命名空间:

using System.Runtime.InteropServices;
 [DllImport("user32.dll", EntryPoint = "FindWindow")]
        public static extern IntPtr FindWindow(
            string lpClassName,
            string lpWindowName
        );

利用FindWindow获得目标窗口句柄

第一个参数是类名,第二个参数是窗口原来的标题

以下代码则是获得目标窗口代码:

 IntPtr window = FindWindow(null,"Microsoft SQL Server Management Studio");//我这里是以SQL为例

第二步:改变窗口标题

 [DllImport("user32.dll", EntryPoint = "SetWindowText")]
        public static extern int SetWindowText(
            IntPtr hwnd,
            string lpString
        );

以下代码则是改变目标句柄的窗口标题:

SetWindowText(window,"你好啊");

Ok,窗口标题成功修改了!!!!

附加根据进程名称修改标题:

Process [] ps= Process.GetProcessesByName("Ssms");//根据进程名称获得进程数组
            foreach(Process p in ps)//遍历进程
            {
                SetWindowText(p.MainWindowHandle, "Microsoft SQL Server Management Studio免费共享版");
            }
百度网友bec1679
2015-06-18 · TA获得超过2185个赞
知道大有可为答主
回答量:1093
采纳率:66%
帮助的人:630万
展开全部

//add
using System.Runtime.InteropServices; 

namespace ModifyTitle
{
    public partial class Form1 : Form
    {
        [DllImport("user32.dll", EntryPoint = "FindWindowA", CharSet = CharSet.Ansi)]
        public static extern int FindWindow(string lpClassName, string lpWindowName);

        [DllImport("user32.dll", EntryPoint = "SetWindowText", CharSet = CharSet.Ansi)]
        public static extern int SetWindowText(int hwnd, string lpString);


        public Form1()
        {
            InitializeComponent();
            //启动计算器
            System.Diagnostics.Process.Start("calc.exe");
        }

        private void button1_Click(object sender, EventArgs e)
        {            
            int lHwnd = FindWindow(null, "计算器");
            while (lHwnd != 0)
            {
                SetWindowText(lHwnd, "我的计算器");
                lHwnd = FindWindow(null, "计算器");
            }
        }


    }
}
追问
能不能以进程名或者窗口句柄修改 你这个方法是通过名字修改的对我没有用啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2015-09-12
展开全部
通过进程名获取进程句柄就可以了!!!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
neolc
2015-06-23 · TA获得超过121个赞
知道小有建树答主
回答量:377
采纳率:100%
帮助的人:169万
展开全部
this.Text = "标题";
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式