0
我已成功控制RichTextBox中的垂直滚动条,这要感谢以前的帖子:https://stackoverflow.com/a/5611856/848344。但是,我如何控制水平滚动条?在C#RichTextBox中为32位滚动设置水平滚动条
该方法填充setVerticalScroll()。我只需要填写setHorizontalScroll(),在其中显示“在此处插入gubbins。”。
// 32 bit scrolling of pane slider
// https://stackoverflow.com/questions/1380104/cc-setscrollpos-user32-dll
[DllImport("user32.dll")]
static extern int SetScrollPos(IntPtr hWnd, int nBar, int nPos, bool bRedraw);
[DllImport("User32.Dll", EntryPoint = "PostMessageA")]
static extern bool PostMessage(IntPtr hWnd, uint msg, int wParam, int lParam);
[DllImport("User32.dll")]
private extern static int GetScrollPos(IntPtr hWnd, int nBar);
private enum ScrollBarType : uint { SbHorz = 0, SbVert = 1, SbCtl = 2, SbBoth = 3 }
public void setVerticalScroll(IntPtr hWnd, int pos) {
SetScrollPos(hWnd, 0x1, pos, true);
PostMessage(hWnd, 0x115, 4 + 0x10000 * pos, 0);
}
public void setHorizontalScroll(IntPtr hWnd, int pos) {
/////////////////////////////////////
//////////////// Insert gubbins here.
/////////////////////////////////////
}
public int getVerticalScroll(IntPtr hWnd) {
int n = GetScrollPos(hWnd, (int)ScrollBarType.SbVert);
return n;
}
public int getHorizontalScroll(IntPtr hWnd) {
int n = GetScrollPos(hWnd, (int)ScrollBarType.SbHorz);
return n;
}
这里使用正确的符号,它是WM_VSCROLL而不是0x115,SB_VERT而不是0x1。然后,你不能用WM_HSCROLL和SB_HORZ帮助自己落在成功的坑里。使用SendMessage()代替。 –
SendMessage()如何比PostMessage更好? –
它总是被发送,无论你正在黑客攻击的程序可能不希望GetMessage()返回该消息,因此无法正确处理它。 –