如何使用程序控制IE控件的滚动条的隐藏(不显示)及滚动(通过其它按钮事件来实现)?

EdwarddotNet 2004-03-10 11:36:54
1.如何使用程序控制IE控件的滚动条的隐藏?
2.使用SendMessage可以对ListBox等一些控件实现上下左右滚动的动作,但同样的方法使用在IE控件或其他的一些控件上,无法实现其功能,请问有谁能实现这样的功能?该怎么去实现?

[DllImport("user32.dll")]
static extern bool SendMessage(IntPtr hWnd, Int32 msg, Int32 wParam, Int32 lParam);

private const int SB_LINEDOWN = 1 ;
private const int SB_LINEUP = 0;
private const int WM_VSCROLL = 0x115;

private void button2_Click(object sender, System.EventArgs e)
{
SendMessage(this.axWebBrowser1.Handle,WM_VSCROLL,LINEDOWN,0);
SendMessage(this.listBox1.Handle,WM_VSCROLL,LINEDOWN ,0);
}

private void button3_Click(object sender, System.EventArgs e)
{
SendMessage(this.axWebBrowser1.Handle,WM_VSCROLL,SB_LINEUP,0);
SendMessage(this.listBox1.Handle,WM_VSCROLL,SB_LINEUP,0);
}
...全文
468 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
EdwarddotNet 2004-03-23
  • 打赏
  • 举报
回复
一切解决!我也找到了这方面的资料!万分感谢!万分感谢!
qqchen79 2004-03-23
  • 打赏
  • 举报
回复
enum DOCHOSTUIFLAG {
DOCHOSTUIFLAG_DIALOG = 0x00000001,
DOCHOSTUIFLAG_DISABLE_HELP_MENU = 0x00000002,
DOCHOSTUIFLAG_NO3DBORDER = 0x00000004,
DOCHOSTUIFLAG_SCROLL_NO = 0x00000008,
DOCHOSTUIFLAG_DISABLE_SCRIPT_INACTIVE = 0x00000010,
DOCHOSTUIFLAG_OPENNEWWIN = 0x00000020,
DOCHOSTUIFLAG_DISABLE_OFFSCREEN = 0x00000040,
DOCHOSTUIFLAG_FLAT_SCROLLBAR = 0x00000080,
DOCHOSTUIFLAG_DIV_BLOCKDEFAULT = 0x00000100,
DOCHOSTUIFLAG_ACTIVATE_CLIENTHIT_ONLY = 0x00000200,
DOCHOSTUIFLAG_OVERRIDEBEHAVIORFACTORY = 0x00000400,
DOCHOSTUIFLAG_CODEPAGELINKEDFONTS = 0x00000800,
DOCHOSTUIFLAG_URL_ENCODING_DISABLE_UTF8 = 0x00001000,
DOCHOSTUIFLAG_URL_ENCODING_ENABLE_UTF8 = 0x00002000,
DOCHOSTUIFLAG_ENABLE_FORMS_AUTOCOMPLETE = 0x00004000,
DOCHOSTUIFLAG_ENABLE_INPLACE_NAVIGATION = 0x00010000,
DOCHOSTUIFLAG_IME_ENABLE_RECONVERSION = 0x00020000,
DOCHOSTUIFLAG_THEME = 0x00040000,
DOCHOSTUIFLAG_NOTHEME = 0x00080000,
DOCHOSTUIFLAG_NOPICS = 0x00100000,
DOCHOSTUIFLAG_NO3DOUTERBORDER = 0x00200000,
DOCHOSTUIFLAG_DISABLE_EDIT_NS_FIXUP = 0x1,
DOCHOSTUIFLAG_LOCAL_MACHINE_ACCESS_CHECK = 0x1,
DOCHOSTUIFLAG_DISABLE_UNTRUSTEDPROTOCOL = 0x1
}

qqchen79 2004-03-20
  • 打赏
  • 举报
回复
2.使用SendMessage可以对ListBox等一些控件实现上下左右滚动的动作,但同样的方法使用在IE控件或其他的一些控件上,无法实现其功能,请问有谁能实现这样的功能?该怎么去实现?

引用Add Reference --> .NET ---> Microsoft.mshtml

mshtml.IHTMLDocument2 doc = WebBrowser.Document as mshtml.IHTMLDocument2;
mshtml.IHTMLElement2 body = doc.body as mshtml.IHTMLElement2;
body.put_scrollTop(200000);
qqchen79 2004-03-20
  • 打赏
  • 举报
回复
1.如何使用程序控制IE控件的滚动条的隐藏?
把下面的定义加入Project:
using System.Runtime.InteropServices;

struct DOCHOSTUIINFO {
public uint cbSize;
public uint dwFlags;
public uint dwDoubleClick;
public IntPtr pchHostCss;
public IntPtr pchHostNS;
}

[ComImport,
Guid("BD3F23C0-D43E-11CF-893B-00AA00BDCE1A"),
InterfaceType(ComInterfaceType.InterfaceIsIUnknown) ]
public interface IDocHostUIHandler
{
public void ShowContextMenu(int dwContext, IntPtr pPoint, IntPtr pCommandTarget, IntPtr HTMLTagElement);
public void GetHostInfo(ref DOCHOSTUIINFO theHostUIInfo);
public void ShowUI(int dwID, IntPtr pActiveObject, IntPtr pCommandTarget, IntPtr pFrame, IntPtr pDoc);
public void HideUI();
public void UpdateUI();
public void EnableModeless(int fEnable);
public void OnDocWindowActivate(int fActivate);
public void OnFrameWindowActivate(int fActivate);
public void ResizeBorder(IntPtr prcBorder, int pUIWindow, int fFrameWindow);
public void TranslateAccelerator(IntPtr lpMsg, IntPtr pguidCmdGroup, int nCmdID);
public void GetOptionKeyPath(IntPtr pchKey, int dw);
public void GetDropTarget(IntPtr pDropTarget, IntPtr ppDropTarget);
public void GetExternal(IntPtr ext);
public void TranslateUrl(int dwTranslate, IntPtr pchURLIn, IntPtr ppchURLOut);
public void FilterDataObject(IntPtr pDO, IntPtr ppDORet);
}

你用来Host WebBrowser的Form需要实现上面的Interface:
public class YourForm : System.Windows.Forms.Form,
IDocHostUIHandler

实现上面的函数,除了GetHostInfo以外,其余只要给个空函数体就好({})。
public void GetHostInfo(ref DOCHOSTUIINFO HostUIInfo)
{
HostUIInfo.dwFlags |= (DOCHOSTUIFLAG.DOCHOSTUIFLAG_SCROLL_NO);
}

//DONE!
EdwarddotNet 2004-03-19
  • 打赏
  • 举报
回复
gz
EdwarddotNet 2004-03-17
  • 打赏
  • 举报
回复
1.我的程序要浏览网页,有不使用IE控件浏览网页的其他方法吗?
2.不能用脚本,因为IE控件内连接的网页同时也会被IE浏览器访问,如果使用脚本的话将会把IE浏览器中的滚动条隐藏掉!
3.关于doinfo(野比效果器) 说的方法请问具体如何实现?有类似源代码吗?
4.使用SendMessage可以对ListBox等一些控件实现上下左右滚动的动作,但同样的方法使用在IE控件或其他的一些控件上,无法实现其功能,请问有谁能实现这样的功能?该怎么去实现?

最后,如何确实能解决,分可以另外再给!
EdwarddotNet 2004-03-15
  • 打赏
  • 举报
回复
请问具体如何实现?有类似源代码吗?如何确实能解决,分可以另外再给!
ssdjmcj8048 2004-03-15
  • 打赏
  • 举报
回复
如果你限定用户只能用IE,那只能用脚本了,怎么用脚本控制?本人不是此方面虾

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧