帮帮忙!控制其他进程的滚动条

来源:百度知道 编辑:UC知道 时间:2024/06/17 14:17:50
我要用C#获取IE、QQ或其他进程,然后使用SendMessage向其发送控制滚动条的消息。。怎么实现??请给出代码,或者不用SendMessage还有其他方法吗?

至少要用到两个API函数:
SendMessage(或PostMessage)与FindWindowEx。

在使用API函数之前先要引用它们:
先using System.Runtime.InteropServices;
然后:
// 先引用API函数
[DllImport("User32.DLL")]
public static extern int SendMessage(IntPtr hWnd,
uint Msg, uint wParam, IntPtr lParam);
[DllImport("User32.DLL")]
public static extern IntPtr FindWindowEx(IntPtr hwndParent,
IntPtr hwndChildAfter, string lpszClass, string lpszWindow);

// 定义WM_VSCROLL等常量
public const uint WM_VSCROLL = 0x0115;
public const UInt16 SB_BOTTOM = 7;

先使用FindWindowEx找到含有滚动条的窗口,然后给它发WM_VSCROLL消息:

//先找到应用程序窗口(如记事本)
IntPtr hwnd = FindWindowEx(IntPtr.Zero, IntPtr.Zero, "Notepad", "无标题 - 记事本");

// 再找到含滚动条的子窗口
hwnd = FindWindowEx(hwnd, IntPtr.Zero, "Edit", "");

// 给它发WM_VSCROLL,让它滚动到最底下
UInt16 low = SB_BOTTOM; // wParam的低16位指出了滚动的动作,高16位在非SB_THU