我现在要做一个浏览器,用来浏览特定的网站内容,但是不想让其他人看到网站的详细地址.
初步的设计思想是这样的:
用DELPHI6实现,在form中放入一TwebBrowser控件,屏蔽其鼠标右键的弹出菜单功能,并在单击浏览内容中的超链时使用本浏览器打开而不是用IE.现在的问题是:
1,不知道怎样屏蔽Twebbrowser的右键弹出菜单功能;
2,不知怎样控制单击Twebbrowser控件中所浏览内容中的超链时使用本浏览器打开而不是用IE.请高手们提提建议,此方案是否可行.
感谢!!!
初步的设计思想是这样的:
用DELPHI6实现,在form中放入一TwebBrowser控件,屏蔽其鼠标右键的弹出菜单功能,并在单击浏览内容中的超链时使用本浏览器打开而不是用IE.现在的问题是:
1,不知道怎样屏蔽Twebbrowser的右键弹出菜单功能;
2,不知怎样控制单击Twebbrowser控件中所浏览内容中的超链时使用本浏览器打开而不是用IE.请高手们提提建议,此方案是否可行.
感谢!!!
解决方案 »
- fastreport主从报表的简单问题,郁闷
- TurboPower传真构件把 TXT 文件转换成 APF文件时,当TXT有中文时,收到的传真显示不出中文,急死了!
- 避免重复打开MDI子窗口的问题
- 使用Delphi7怎样调用web servic
- 如何取得Windows系统的当前正在使用的用户的用户名
- 编写组件遇到的小麻烦,请高人指点~!
- Delphi7 WebService 远程访问无返回 死机
- 谁有写股票系统的资料,我的毕业设计要写一个模拟股票系统.......可否发给我
- 100分求SkinEngine控件的安装方法!!!
- INSERT我怎么在字符串中插入不了子串? 太莱了没办法!
- 合并表问题!!!!
- 请教:欲在Delphi窗体中嵌入一Http网页。该网页可能与窗体相互通信吗?
MouseHook: THandle;
procedure TForm1.FormCreate(Sender: TObject) ;
begin
MouseHook := SetWindowsHookEx(WH_MOUSE, MouseProc, 0, GetCurrentThreadId()) ;
end;procedure TForm1.FormDestroy(Sender: TObject) ;
begin
if MouseHook <> 0 then
UnHookWindowsHookEx(MouseHook) ;
end;function MouseProc(nCode: Integer; wParam, lParam: Longint): LongInt; stdcall;
var
classbuf: array[0..255] of Char;
const
ie = 'Internet Explorer_Server';
begin
case nCode < 0 of
True:
Result := CallNextHookEx(MouseHook, nCode, wParam, lParam)
False:
case wParam of
WM_RBUTTONDOWN, WM_RBUTTONUP:
begin
GetClassName(PMOUSEHOOKSTRUCT(lParam)^.HWND, classbuf, SizeOf(classbuf)) ;
if lstrcmp(@classbuf[0], @ie[1]) = 0 then
Result := HC_SKIP
else
Result := CallNextHookEx(MouseHook, nCode, wParam, lParam) ;
end
else
begin
Result := CallNextHookEx(MouseHook, nCode, wParam, lParam) ;
end;
end; //case wParam
end; //case nCode
end; (*MouseProc*)
var
MouseHook: THandle;
procedure TForm1.FormCreate(Sender: TObject) ;
begin
MouseHook := SetWindowsHookEx(WH_MOUSE, MouseProc, 0, GetCurrentThreadId()) ;
end;procedure TForm1.FormDestroy(Sender: TObject) ;
begin
if MouseHook <> 0 then
UnHookWindowsHookEx(MouseHook) ;
end;function MouseProc(nCode: Integer; wParam, lParam: Longint): LongInt; stdcall;
var
classbuf: array[0..255] of Char;
const
ie = 'Internet Explorer_Server';
begin
case nCode < 0 of
True:
Result := CallNextHookEx(MouseHook, nCode, wParam, lParam)
False:
case wParam of
WM_RBUTTONDOWN, WM_RBUTTONUP:
begin
GetClassName(PMOUSEHOOKSTRUCT(lParam)^.HWND, classbuf, SizeOf(classbuf)) ;
if lstrcmp(@classbuf[0], @ie[1]) = 0 then
Result := HC_SKIP
else
Result := CallNextHookEx(MouseHook, nCode, wParam, lParam) ;
end
else
begin
Result := CallNextHookEx(MouseHook, nCode, wParam, lParam) ;
end;
end; //case wParam
end; //case nCode
end; (*MouseProc*)
当鼠标左键单击一链接时,有没有方法用指定的浏览程序打开此链接的内容呢,默认的情况是使用IE啊,如果被IE打开的话,Web地址都会被暴露了,而且上一不的工作也是白做了!!!!
我这个程序是给客户用的,不是给专业黑客用,所以只要表面上看不到就行
我用过了你的程序了,的确很爽(不仅可以查出很多信息,而且还可以控制IE!!!),但本人并不高兴,因为上面的构思都被打破了!!!
只要有你那东西,我所隐藏的东西就都被发现了
我想请教一下,我剩下的问题(控制使用指定的程序打开鼠标左键所点击的链接)
或者有没有更好的方案???
那个就较之安全了
C++可以解决我的后面那个问题吗?不能太复杂了->我还是个新手[虽然年纪大了点:)]
var ppDisp: IDispatch; var Cancel: WordBool);
var
newWindow : TForm1;
begin
newWindow := TForm1.Create(nil);
newWindow.Visible := true;
ppDisp := newWindow.WebBrowser1;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
WebBrowser1.Navigate('http://www.applevb.com');
end;
遇到问题了:
我按照你的代码加入到我的程序中,编译通过了.
但是运行的时候,新窗是空白的,不能显示链接了内容.
怎样才能将新鼠标左键单击的链接内容显示在新窗口中啊???
var ppDisp: IDispatch; var Cancel: WordBool);
var
newWindow : TForm1;
begin
newWindow := TForm1.Create(nil);
newWindow.Visible := true;
ppDisp := newWindow.WebBrowser1.Application;
end;
这样子就可以了哈