我试图创建一个程序,我可以在其中将进程的一些进程ID(可能是firefox,即记事本等)发送到滚动进程窗口的方法。
我一直在尝试使用我在 pinvoke 找到的 GetScrollBarInfo 和 SetScrollPos,但没有任何成功。我不确定这是否是正确的方法。我开始玩 GetScrollBarInfo,但它似乎不起作用。
我尝试了在http://www.pinvoke.net/default.aspx/user32.getscrollbarinfo找到的代码
[StructLayout(LayoutKind.Sequential)]
public struct SCROLLBARINFO
{
public int cbSize;
public Rectangle rcScrollBar;
public int dxyLineButton;
public int xyThumbTop;
public int xyThumbBottom;
public int reserved;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
public int[] rgstate;
}
private const uint OBJID_HSCROLL = 0xFFFFFFFA;
private const uint OBJID_VSCROLL = 0xFFFFFFFB;
private const uint OBJID_CLIENT = 0xFFFFFFFC;
private int Scroll(int ProcessID)
{
IntPtr handle = Process.GetProcessById(ProcessID).MainWindowHandle;
SCROLLBARINFO psbi = new SCROLLBARINFO();
psbi.cbSize = Marshal.SizeOf(psbi);
int nResult = GetScrollBarInfo(handle, OBJID_CLIENT, ref psbi);
if (nResult == 0)
{
int nLatError = Marshal.GetLastWin32Error();
}
}
根据http://msdn.microsoft.com/en-us/library/windows/desktop/ms681382(v=vs. 85).aspx
我不确定我做错了什么。我该如何解决这个问题?