KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
Im trying to create a program where I can send some process id of a process (that may be firefox, ie, notepad etc) to a method that scrolls window of the process. I have been trying with GetScrollBarInfo and SetScrollPos which I found at pinvoke without any success. Im not sure if this is the right way or not. I started playing with GetScrollBarInfo, but it doesn't seem to work. I tried the code found at 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(); } } GetLastWin32Error() returns errorcode 122 which means "The data area passed to a system call is too small", according to http://msdn.microsoft.com/en-us/library/windows/desktop/ms681382(v=vs.85).aspx Im not sure what I do wrong. How can I solve this?
Tags (comma-separated)
Save Edits
Cancel