C#和C常用的API操作窗口的代码积累
IntPtr awin = MouseHookHelper.FindWindow("WeChatMainWndForPC", "微信");
if (awin == IntPtr.Zero)
{
MessageBox.Show("没有找到窗体");
return;
}
2.获取窗体坐标信息
MouseHookHelper.RECT rect = new MouseHookHelper.RECT();
MouseHookHelper.GetWindowRect(awin, ref rect);
int width = rect.Right - rect.Left;
int height = rect.Bottom - rect.Top;
int x = rect.Left;
int y = rect.Top;
3.设置为当前窗体
MouseHookHelper.SetForegroundWindow(awin);
MouseHookHelper.ShowWindow(awin,MouseHookHelper.SW_SHOWNOACTIVATE);
4.点击某个坐标
LeftMouseClick(new MouseHookHelper.POINT()
{
X = ppp.MsgX,
Y = ppp.MsgY
});
private static void LeftMouseClick(MouseHookHelper.POINT pointInfo)
{
MouseHookHelper.SetCursorPos(pointInfo.X, pointInfo.Y);
MouseHookHelper.mouse_event(MouseHookHelper.MOUSEEVENTF_LEFTDOWN,
pointInfo.X * 65536 / Screen.PrimaryScreen.Bounds.Width,
pointInfo.Y * 65536 / Screen.PrimaryScreen.Bounds.Height, 0, 0);
MouseHookHelper.mouse_event(MouseHookHelper.MOUSEEVENTF_LEFTUP,
pointInfo.X * 65536 / Screen.PrimaryScreen.Bounds.Width,
pointInfo.Y * 65536 / Screen.PrimaryScreen.Bounds.Height, 0, 0);
}
5.复制粘贴操作
Clipboard.SetText("test");
Clipboard.GetText();
SendKeys.SendWait("^V");
SendKeys.Send("{Enter}");
6.钩子的使用
private void button1_Click(object sender, EventArgs e)
{
if (hHook == 0)
{
MyProcedure = new MouseHookHelper.HookProc(this.MouseHookProc);
hHook = MouseHookHelper.SetWindowsHookEx(WH_MOUSE_LL, MyProcedure, Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]), 0);
if (hHook == 0)
{
MessageBox.Show("请以管理员方式打开");
return;
}
button1.Text = "卸载钩子";
}
else
{
bool ret = MouseHookHelper.UnhookWindowsHookEx(hHook);
if (ret == false)
{
MessageBox.Show("请以管理员方式打开");
return;
}
hHook = 0;
button1.Text = "安装钩子";
}
}
private int MouseHookProc(int nCode, IntPtr wParam, IntPtr lParam)
{
MouseHookHelper.MouseHookStruct MyMouseHookStruct = (MouseHookHelper.MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookHelper.MouseHookStruct));
if (nCode < 0)
{
return MouseHookHelper.CallNextHookEx(hHook, nCode, wParam, lParam);
}
else
{
String strCaption = "x = " + MyMouseHookStruct.pt.X.ToString("d") + " y = " + MyMouseHookStruct.pt.Y.ToString("d");
this.Text = strCaption;
return MouseHookHelper.CallNextHookEx(hHook, nCode, wParam, lParam);
}
}
7.MouseHookHelper代码
public class MouseHookHelper
{
#region 根据句柄寻找窗体并发送消息
[