日期:2014-05-19  浏览次数:21288 次

如何根据句柄获得窗口,并使其获得焦点?
此窗口是另外一个app中的
可否实现?
先谢了

------解决方案--------------------
可以,用SendMessage和ActivateWindow这两个API函数可以实现!
------解决方案--------------------
先使用FindWindow找到窗口,然后PostMessage给窗口即可。
------解决方案--------------------
API 函数


FindWindow //查找特定窗口句柄
SetActiveWindow // 激活句柄为 hwnd 的窗体
ShowWindow// 显示某窗体
SetFocus //设置焦点

具体网上搜下这些函数的参数及使用(不同开发语言,申明不一样).
------解决方案--------------------
using System.Runtime.InteropServices;

[DllImport( "user32.dll ")]
public static extern bool SetWindowPos(IntPtr hWnd,
IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);
public IntPtr HWND_TOP = IntPtr.Zero;
public uint SWP_NOMOVE = 2;
public uint SWP_NOSIZE = 1;
public uint SWP_NOACTIVATE = 0x10;
public uint SWP_SHOWWINDOW = 0x40;
private void button1_Click(object sender, EventArgs e)
{
Process[] vProcesses = Process.GetProcessesByName( "notepad ");
if (vProcesses.Length <= 0) return;
SetWindowPos(vProcesses[0].MainWindowHandle, HWND_TOP, 0, 0, 0, 0,
SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW);
}