初学c#  求教一个可以获得当前窗口标题  例如我打开我的电脑就可以得到“我的电脑”,打开计算取就可以得到“计算器”  当焦点在哪个窗口上就得到那个窗口的标题。C#窗口句柄

解决方案 »

  1.   

    你要考虑刷新频率,调用API实现
    1.int handle = GetForegroundWindow();
    2.GetWindowText(handle,chars);
    //完整
    int handle = GetForegroundWindow();
    char[] chars = new char[255];
    GetWindowText(handle,chars);string txt = new string(chars);//得到了,你只要想办法,例如定时器,定时调用即可。
      

  2.   

    是否要dllimport什么。。不好意思,我是新手。
    不可以焦点切换的时候就再一次获得吗。如果用定时器应该很耗内存吧。
      

  3.   

    找api调用的例子代码的窍门:
    google api函数名 dllimport extern using system class public
    后面那些一定是C#代码中才有的关键字,用它配合api函数名作为关键字搜索,立刻具体代码就到手。
      

  4.   


    当它的焦点从一个窗口切换到另一个的时候,我就再一次得到。关键是如何判断用户切换的窗口最简单的办法:不断轮询。 [DllImport("user32.dll")]
            public extern static int GetWindowText(IntPtr hWnd, char[] lpString);        [DllImport("user32.dll")]
            public extern static IntPtr GetForegroundWindow();
    我这样写错了。
    帮我完整下。
      

  5.   


    当它的焦点从一个窗口切换到另一个的时候,我就再一次得到。关键是如何判断用户切换的窗口最简单的办法:不断轮询。 [DllImport("user32.dll")]
            public extern static int GetWindowText(IntPtr hWnd, char[] lpString);        [DllImport("user32.dll")]
            public extern static IntPtr GetForegroundWindow();
    我这样写错了。
    帮我完整下。你不能再搜下别的,public extern static int GetWindowText(IntPtr hWnd, string WindowText);
      

  6.   


     [DllImport("user32.dll")]
            public extern static int GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount);        [DllImport("user32.dll")]
            public extern static IntPtr GetForegroundWindow();        static void Main(string[] args)
            {
                StringBuilder str = new StringBuilder(512);            GetWindowText(GetForegroundWindow(), str, str.Capacity);            Console.WriteLine(str.ToString());
                Console.ReadKey();
            }
        }代码我完善了。 如果我写在窗体的加载事件里那么每次都获得自己窗口的标题,难道只能写在timer里每秒得到一次?  有没有好点的办法能做到当窗体切换的时候我才去执行一次。