我在WPF程序中使用下面的代码将一个窗口设置为不能获取焦点,但是设置完成后,这个窗口中的文本框中不能输入文字了,该怎样让这个窗口既不获取焦点,也能在其中的文本框中输入文字?
#region 设置窗口为无焦点
public const int GWL_EXSTYLE = -20;
public const int WS_EX_NOACTIVATE = 0x8000000;
[DllImport("user32.dll")]
public static extern int SetWindowLong(IntPtr window, int index, int value);
[DllImport("user32.dll")]
public static extern int GetWindowLong(IntPtr window, int index);
/// <summary>
/// 设置窗口为无焦点
/// </summary>
/// <param name="hwnd"></param>
public static void SetWindowNoFocus(IntPtr hwnd)
{
SetWindowLong(hwnd, GWL_EXSTYLE, GetWindowLong(hwnd, GWL_EXSTYLE) | WS_EX_NOACTIVATE );
}
#endregion 设置窗口为无焦点
不行,行不通。通常的做法是通过自绘窗体实现,也就是看上去不像被激活了。
偶是希望能达到这样的效果呀,我看Windows自带的语音识别的听写面板就是这种效果,窗口本身不获得焦点,文本框还可以编辑的,点击插入时可以将文字插入到指定的窗口中。
@于为源: 哦,你是如何知道窗口本身没有获得焦点的?你如何看出文本框还可以编辑?点击插入时,你如何知道窗口本身没有被激活?
@Launcher: 哦,是这样的我是打算模拟微软的那个语音识别的效果,刚才又打开他那个试了试,他也不能做到。分就给你啦,多谢多谢。