有谁给出道题做做吧,这几天很闷. :( -menxin(200分)

  • 主题发起人 主题发起人 menxin
  • 开始时间 开始时间
>>用shell如何解决用特定的proxy连接特定的url呢?
我就是不想做shell呀!
不过如果要动态切换proxy,恐怕只能做一个新的shell出来.否则会互相影响的 :-(
>>想用一种特殊格式全面表示一个html
很感兴趣....
 
呵呵,看我急的,说都不会话了. :)
 
"特殊格式"是指XML?
我下网了,明天健.
 
to cakk:如何在IE菜单上面嵌入我的菜单,以做他用?
 
1.在IE主菜单,右键菜单里面添加项目,从而执行一个javascript,COM,或exe;
这个很简单,只要在出册表里加个项目,对应一个文本文件就可以了,里面是执行javascript/vbscript呼叫com.
2.给IE添加一个就像history的那个dock窗口一样,里面可以显示html文件,COM对象
<font color="red">这个不知道,还望CAKK指教!</font>

另,各位既然讨论用ie嵌入,先解决一下内存漏失在讨论后面的问题吧,否则很难处理的
 
下面函数可以给IE添加一个类似History的Dock窗口:
参数说明:
Title : 希望显示在"查看/浏览器栏"下面的菜单的标题
Url : 希望在浏览器dock窗口里显示的Html文件
BarSize:do
ck尺寸,通常水平窗口为40-50(height)
垂直窗口为190-220(width)
Vertical: 如果希望是垂直窗口设为TRUE
返回值: GUID;
注意:在IE5里面,可以自动记住dock窗口的visible,size,下次打开时会自动
调整,并且,IE5可以在toolbar上面放一个button对应这个dock窗口,
以切换他的visible,就像history的那个按钮一样;
但是在IE4下面,无法添加按钮,你只有通过"查看/浏览器栏"来使dock
窗口可见.
Function IE5_ExplorerBar(Title, Url: string;
BarSize: Int64;
Vertical: Boolean) : String;
const
VERTICAL_BAR = '{00021493-0000-0000-C000-000000000046}';
HORIZONTAL_BAR = '{00021494-0000-0000-C000-000000000046}';
EXPLORERBAR_ID = '{4D5C8C2A-D075-11d0-B416-00C04FB90376}';
var
G: TGUID;
SystemDir, UID: string;
Reg: TRegistry;
begin
CoCreateGuid(G);
UID := GuidToString(G);
Reg := TRegistry.Create;
with Regdo
begin
RootKey := HKEY_CLASSES_ROOT;
OpenKey('/CLSID/' + UID, True);
WriteString('', Title);
CloseKey;
CreateKey('/CLSID/' + UID + '/Implemented Categories');
if Vertical then
CreateKey('/CLSID/' + UID + '/Implemented Categories/' + VERTICAL_BAR) else
CreateKey('/CLSID/' + UID + '/Implemented Categories/' + HORIZONTAL_BAR);
SetLength(SystemDir, 255);
GetSystemDirectory(PChar(SystemDir), 255);
SystemDir := PChar(SystemDir) + '/SHDOCVW.DLL';
OpenKey('/CLSID/' + UID + '/InProcServer32', True);
Writestring('', SystemDir);
WriteString('Threadingmodel', 'Apartment');
CloseKey;
OpenKey('/CLSID/' + UID + '/Instance', True);
WriteString('CLSID', EXPLORERBAR_ID);
CloseKey;
OpenKey('/CLSID/' + UID + '/Instance/InitPropertyBag', True);
WriteString('Url', URL);
CloseKey;
RootKey := HKEY_LOCAL_MACHINE;
OpenKey('Software/Microsoft/Internet Explorer/Explorer Bars/' + UID, True);
WriteBinaryData('BarSize', BarSize, SizeOf(BarSize));
CloseKey;
OpenKey('/Software/Euromind/Explorer Bars/', True);
WriteString(Title, UID);
CloseKey;
Free;
end;
result:=UID;
end;
 
呵呵, 如果用ie来做, 请注意ie如果改变proxy的内容, 就是<font color=red>全局性的改变</font>
了:-( 也就是说, 不能这个画面用这个proxy, 而其他的同另外一个. 这是非常严重
的问题:-(
不过, 如果要重新做个浏览器, 确实太困难了:-( 要找个支持dhtml/java/javascript
/flash等插件的:-( 不过如果谁对c熟, 分析nc的原码, 作出一个专门的也不是不可
:-)
 
>>如果改变proxy的内容, 就是全局性的改变
非常正确,所以我一直也没有动手做,正在琢磨能不能通过DDE临时改变自己的Proxy.
cytown: 你没看清menxin说的,如果做新的浏览器,当然也是用TWebBrowser,
不然重头写一个browser出来,谁受得了? 也没有意义了. :-)
 
>>呵呵, 如果用ie来做, 请注意ie如果改变proxy的内容, 就是全局性的改变
>>了:-( 也就是说, 不能这个画面用这个proxy, 而其他的同另外一个. 这是非常严重
>>的问题:-(
我的想法(只是一个想法,不知道可不可能)是能不能截获WebBrowser需要
浏览的地址,用自己的方法去读取数据,(这样就可以用不同的Proxy 或者
断点续传、多点续传等手段),读完后仍然交给WebBrowser去显示。不过,
需要读取哪些数据又是一个问题了。我上面说的部分改变内核就是指这个意
思。
 
这个想法实现起来难度颇大,我不敢尝试. :-(
 
那你说的DDE又是怎么回事?我有个疑问,就是打开一个浏览器的窗口后,
他是不是每次需要读页面的时候,都要从注册表中重新读取Proxy?
 
应该不是.
比如你修改了注册表里面的proxy,必需广播一个注册表修改的消息,IE才能响应.
(是不是如此不清楚,我猜得)
 
呵呵, 还是出个更好的主意吧:-)
做一个proxy, 然后proxy中根据访问站点的不同, 连接不同的proxy就可以了:-)
这种proxy只需要实现http功能就可以. 而且好象有proxyserver的原码在哪里可
得到.......
 
proxy再连proxy,速度岂不是很慢?
 
continue,pls.
用xml做文件格式应该是无问题了,但还是有浏览器方面的问题. :(
 
哇! menxin好厉害! 连XML都搞定了! 你看的是什么XML书,介绍一下.
另外,浏览器有什么问题呢?
 
有没有可能,从一个窗口的联接所打开的窗口继承同一个外部变量,记录了
它的Proxy,每次联接的时候重设Proxy,连接?
 
DreamTiger: 照你的思路走下去,我把头发想白了也搞不定. :-]
 
XML并不是太难,看几天应该能理解的,总的意思就是提供一种通用的文件格式,能够提供不同系统间的勾通.市面上有几本书了,不懂时看哪本都一样. : )
 
后退
顶部