var sogou_ad_id=731545;
var sogou_ad_height=90;
var sogou_ad_width=980;要想Maxthon浏览器使用Gecko核心,首先你必须给Maxthon浏览器安装一个名为Mozilla ActiveX Control的插件,这样它才能真正调用Gecko核心。在安装时最好选择默认路径,然后重启Maxthon浏览器,点击&文件& - &新建& - &使用Gecko核心&选项后,重启Maxthon浏览器就可以更换为Gecko核心了,而且只需一次设置即可,只要以后不取消&使用Gecko核心&前面的对勾,Maxthon浏览器就会一直使用该核心。 Gecko虽然在速度和安全方面有所提升,但是在使用Gecko核心上还存在很多问题。 Gecko核心是Mozilla, Firefox以及早先的网景浏览器所使用的内核。由于目前大多数网页在制作的时候都是以针对IE浏览器设定的规范来开发的,所以在使用Gecko核心浏览这些网页时就会因不兼容造成显示错误或某些功能失效的情况。 可能是在开发者开发Gecko核心的时候还没有出现鼠标滚轮横行天下的局面,Gecko核心还不支持鼠标滚轮,并且还不能使用超级拖放等功能。
at September 15, 2006. by 傻猫 . &  Views: 2450 & 
&&&&点击播放&南合文斗 - 让泪化作相思雨作曲:崔文斗 作词:崔文斗这是一片很寂寞的天,下着有些伤心的雨这是一个很在乎的我和一个无所谓的结局曾经为了爱而努力,曾经为了爱而逃避逃避那熟悉的往事,逃避那陌生的你这是一片很寂寞的天,下着有些伤心的雨这是一个很在乎的我和一个无所谓的结局再也不知道你的消息,再也不知道你的秘密只有那熟悉的往事,只有那陌生的你在那些黑色和白色的梦里不再有蓝色和紫色的记忆在这个相遇又分手的年纪只留下雨打风吹的痕迹为了那苍白的爱情的继续为了那得到又失去的美丽就让这擦干又流出的泪水化作漫天相思的雨
at September 14, 2006. by 傻猫 . &  Views: 2490 & 
You can accomplish this without using a TOpenDialog component. First, add FileCtrl to the Uses. Now the
function can be used. Drop a TButton component on your Form. Place the following code in the button's onClick event to get a demonstration of how this function works:~~~~~~~~~~~~~~~~~~~~~~~~~procedure TForm1.Button1Click(Sender: TObject) ;const&&&& SELDIRHELP = 1000;var&& dir: Sbegin&& dir := 'C:';&& if SelectDirectory(&&&&&&& dir,&&&&&&& [sdAllowCreate,&&&&&&& sdPerformCreate,&&&&&&& sdPrompt],&&&&&&& SELDIRHELP&&&&& ) then&&&& Button1.Caption :=~~~~~~~~~~~~~~~~~~~~~~~~~
at September 12, 2006. by 傻猫 . &  Views: 2783 & 
From Zarko Gajic,Your Guide to Delphi Programming.FREE Newsletter. Sign Up Now!Here's how to add a button to Interner Explorer toolbar:1. ButtonText = Text at the bottom of the button2. MenuText = The tools menu item with a reference to your program.3. MenuStatusbar = *Ignore*4. CLSID = Your unique classID. You can use GUIDTOSTRING to create a new CLSID (for each button).5. Default Visible := Display it.6. Exec := Your program path to execute.7. Hoticon := (Mouse Over Event) ImageIndex in shell32.dll8. Icon := ImageIndex in shell32.dllAfter you run the code below, start a new instance of IE. You might need to go to View | Toolbars | Customize and move your button from &Available toolbar buttons& to &Current toolbar buttons&~~~~~~~~~~~~~~~~~~~~~~~~~procedure CreateExplorerBconst// the same explanation as for the CLSIDTagID = '\{F0F-11d3-B17C-00C0DFE39736}\';varReg: TRProgramPath:RegKeyPath:beginProgramPath := 'c:\folder\exename.exe';Reg := TRegistry.Ctrywith Reg do beginRootKey := HKEY_LOCAL_MACHINE;RegKeyPath := 'Software\Microsoft\Internet Explorer\Extensions';OpenKey(RegKeyPath + TagID, True) ;WriteString('ButtonText', 'Your program Button text') ;WriteString('MenuText', 'Your program Menu text') ;WriteString('MenuStatusBar', 'Run Script') ;WriteString('ClSid', '{1FBA04EE--8F1F-0000F87ABD16}') ;WriteString('Default Visible', 'Yes') ;WriteString('Exec', ProgramPath) ;WriteString('HotIcon', ',4') ;WriteString('Icon', ',4') ;endfinallyReg.CloseKReg.F~~~~~~~~~~~~~~~~~~~~~~~~~
at September 12, 2006. by 傻猫 . &  Views: 3235 & 
这里介绍如何用程序的方法获得WebBrowser控件中的HTML的源代码,并可以通过修改源代码内容来修改页面内容(注意:不是显示一个新的页面)。首先要加入WebBrowser控件,加入控件的方面我就不说了。获得源代码方法有两种:一、方法1(严格说,这个方法只不过是调用WebBrowser自己的菜单命令&查看源文件而已&,并非我们所希望的)关键代码:#include &mshtmcid.h&void CHtmlView::OnMethod1(){CWnd* pWnd = NULL;CWnd* pWndShell = m_browser.GetWindow(GW_CHILD); // get the webbrowser window pointerif (pWndShell){pWnd = pWndShell-&GetWindow(GW_CHILD); //get the child window pointer}if (pWnd != NULL){WPARAM wParam = MAKEWPARAM(IDM_VIEWSOURCE, 1); //convert to unsigned 32 bit value and pass it to wparampWnd-&SendMessage(WM_COMMAND, wParam, (LPARAM)this-&m_hWnd); //cool send a message to retreive the source.}}二、方法2原理在于取得IPersistStreamInit接口指针,然后把网页写到IStream流中去。关键代码:#include &mshtml.h&//在SourceView中填写HtmlView中网页的源程序void CMainFrame::OnMethod2(){IHTMLDocument2 *pHTMLDocument=NULL;IPersistStreamInit *pPSI=NULL;IStream *pStream=NULL;HGLOBAL hHTMLTif (!(pHTMLDocument = (IHTMLDocument2*)m_pHtmlView-&m_browser.GetDocument()))if (FAILED(pHTMLDocument-&QueryInterface(&pPSI))){// pHTMLDocument-&Release();}hHTMLText = GlobalAlloc(GMEM_FIXED, MAX_SIZE);CreateStreamOnHGlobal(hHTMLText, TRUE, &pStream);pPSI-&Save(pStream, FALSE);// m_pSourceView-&SetWindowText((char*)hHTMLText);long nEditLength = m_pSourceView-&GetEditCtrl().GetWindowTextLength();m_pSourceView-&GetEditCtrl().SetSel(0, nEditLength);m_pSourceView-&GetEditCtrl().ReplaceSel(&&);char *pText = (char*)hHTMLTlong lHtmlLength = strlen(pText);CString str(&&);long n = 0;for (long i=0; i & lHtmlL i++){if (*pText != 0x0d && *pText != 0x0a){str += *pTpText++;}else{pText++;if (*pText == 0x0a)pText++;str += &\r\n&;nEditLength = m_pSourceView-&GetEditCtrl().GetWindowTextLength();m_pSourceView-&GetEditCtrl().SetSel(nEditLength, nEditLength);m_pSourceView-&GetEditCtrl().ReplaceSel(str);str.Empty();}}pStream-&Release();pPSI-&Release();// pHTMLDocument-&Release();}三、修改HTML源代码以改变网页的显示这部分比较有意思,可以当作是一个小的HTML编辑器,看看预演效果。特别的不是显示一个新文件,而是修改原来的HTML文件。关键代码://根据SourceView里的HTML文本改变HtmlView里的显示void CMainFrame::OnChangehtml(){IHTMLDocument2 *pHTMLDocument=NULL;IPersistStreamInit *pPSI=NULL;IStream *pStream=NULL;HGLOBAL hHTMLTif (!(pHTMLDocument = (IHTMLDocument2*)m_pHtmlView-&m_browser.GetDocument()))if (FAILED(pHTMLDocument-&QueryInterface(&pPSI))){// pHTMLDocument-&Release();}pHTMLDocument-&clear();pPSI-&InitNew();LPCTSTR strText = m_pSourceView-&LockBuffer();DWORD dwLength = strlen(strText);hHTMLText = GlobalAlloc(GMEM_FIXED, dwLength);memset(hHTMLText, 0, dwLength);memcpy(hHTMLText, strText, dwLength);m_pSourceView-&UnlockBuffer();CreateStreamOnHGlobal(hHTMLText, TRUE, &pStream);ULARGE_INTEGER libNewSlibNewSize.QuadPart = dwLpStream-&SetSize(libNewSize);这一步必须要,否则显示时会有多余字符出现pPSI-&Load(pStream);pStream-&Release();pPSI-&Release();// pHTMLDocument-&Release();}有时侯不能显示出网页而显示的是源码文本,比如微软网站的首页就是这种情况。把源码中的这句话 & META HTTP-EQUIV=&Content-Type& CONTENT=&text/ charset=iso8859-1& /&去掉就可以了。原因不明。如果您知道原因请告诉我。来自:bj8888, 时间: 22:57:00, ID:2438668这里有平时我自己用TWebBrowser做程序的一些心得和上网收集到的部分例子和资料,整理了一下,希望能给有兴趣用TWebBrowser编程的朋友带来些帮助。1、初始化和终止化(Initialization & Finalization) 大家在执行TWebBrowser的某个方法以进行期望的操作,如ExecWB等的时候可能都碰到过&试图激活未注册的丢失目标&或&OLE对象未注册&等错误,或者并没有出错但是得不到希望的结果,比如不能将选中的网页内容复制到剪贴板等。以前用它编程的时候,我发现ExecWB有时侯起作用但有时侯又不行,在Delphi生成的缺省工程主窗口上加入TWebBrowser,运行时并不会出现&OLE对象未注册&的错误。同样是一个偶然的机会,我才知道OLE对象需要初始化和终止化(懂得的东东实在太少了)。 我用我的前一篇文章《Delphi程序窗口动画&正常排列平铺的解决》所说的方法编程,运行时出了上面所说的错误,我便猜想应该有OleInitialize之类的语句,于是,找到并加上了下面几句话,终于搞定!究其原因,我想大概是由于TWebBrowser是一个嵌入的OLE对象而不算是用Delphi编写的VCL吧。 initialization OleInitialize(nil); finalization try OleU except 这几句话放在主窗口所有语句之后,&end.&之前。--------------------------------------------------------------------------------------------------------2、EmptyParam 在Delphi 5中TWebBrowser的Navigate方法被多次重载: procedure Navigate(const URL: WideString); procedure Navigate(const URL: WideS var Flags: OleVariant); procedure Navigate(const URL: WideS var Flags: OleV var TargetFrameName: OleVariant); procedure Navigate(const URL: WideS var Flags: OleV var TargetFrameName: OleV var PostData: OleVariant); procedure Navigate(const URL: WideS var Flags: OleV var TargetFrameName: OleV var PostData: OleV var Headers: OleVariant); 而在实际应用中,使用后几种方法调用时,由于我们很少用到后面几个参数,但函数声明又要求是变量参数,一般的做法如下: var t:OleV begin webbrowser1.Navigate(edit1.text,t,t,t,t); 需要定义变量t(还有很多地方要用到它),很麻烦。其实我们可以用EmptyParam来代替(EmptyParam是一个公用的Variant空变量,不要对它赋值),只需一句话就可以了: webbrowser1.Navigate(edit1.text,EmptyParam,EmptyParam,EmptyParam,EmptyParam); 虽然长一点,但比每次都定义变量方便得多。当然,也可以使用第一种方式。 webbrowser1.Navigate(edit1.text)--------------------------------------------------------------------------------------------------------3、命令操作 常用的命令操作用ExecWB方法即可完成,ExecWB同样多次被重载: procedure ExecWB(cmdID: OLECMDID; cmdexecopt: OLECMDEXECOPT); procedure ExecWB(cmdID: OLECMDID; cmdexecopt: OLECMDEXECOPT; var pvaIn: OleVariant); procedure ExecWB(cmdID: rOLECMDID; cmdexecopt: OLECMDEXECOPT; var pvaIn: OleV var pvaOut: OleVariant); 打开: 弹出&打开Internet地址&对话框,CommandID为OLECMDID_OPEN(若浏览器版本为IE5.0, 则此命令不可用)。 另存为:调用&另存为&对话框。 ExecWB(OLECMDID_SAVEAS,OLECMDEXECOPT_DODEFAULT, EmptyParam, EmptyParam); 打印、打印预览和页面设置: 调用&打印&、&打印预览&和&页面设置&对话框(IE5.5及以上版本才支持打 印预览,故实现应该检查此命令是否可用)。 ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DODEFAULT, EmptyParam, EmptyParam); if QueryStatusWB(OLECMDID_PRINTPREVIEW)=3 then ExecWB(OLECMDID_PRINTPREVIEW, OLECMDEXECOPT_DODEFAULT, EmptyParam,EmptyParam); ExecWB(OLECMDID_PAGESETUP, OLECMDEXECOPT_DODEFAULT, EmptyParam, EmptyParam); 剪切、复制、粘贴、全选: 功能无须多说,需要注意的是:剪切和粘贴不仅对编辑框文字,而且对网页上的非编 辑框文字同样有效,用得好的话,也许可以做出功能特殊的东东。获得其命令使能状 态和执行命令的方法有两种(以复制为例,剪切、粘贴和全选分别将各自的关键字替 换即可,分别为CUT,PASTE和SELECTALL): A、用TWebBrowser的QueryStatusWB方法。 if(QueryStatusWB(OLECMDID_COPY)=OLECMDF_ENABLED) or OLECMDF_SUPPORTED) then ExecWB(OLECMDID_COPY, OLECMDEXECOPT_DODEFAULT, EmptyParam, EmptyParam); B、用IHTMLDocument2的QueryCommandEnabled方法。 var Doc: IHTMLDocument2; begin Doc :=WebBrowser1.Document as IHTMLDocument2; if Doc.QueryCommandEnabled('Copy') then Doc.ExecCommand('Copy',false,EmptyParam); 查找: 参考第九条&查找&功能。--------------------------------------------------------------------------------------------------------4、字体大小 类似&字体&菜单上的从&最大&到&最小&五项(对应整数0~4,Largest等假设为五个菜单项的名字,Tag 属性分别设为0~4)。 A、读取当前页面字体大小。 var t: OleV Begin WebBrowser1.ExecWB(OLECMDID_ZOOM, OLECMDEXECOPT_DONTPROMPTUSER, EmptyParam,t); case t of 4: Largest.Checked := 3: Larger.Checked := 2: Middle.Checked := 1: Small.Checked := 0: Smallest.Checked := B、设置页面字体大小。 Largest.Checked := Larger.Checked := Middle.Checked := Small.Checked := Smallest.Checked := TMenuItem(Sender).Checked := t :=TMenuItem(Sender).T WebBrowser1.ExecWB(OLECMDID_ZOOM, OLECMDEXECOPT_DONTPROMPTUSER, t,t);--------------------------------------------------------------------------------------------------------5、添加到收藏夹和整理收藏夹 const CLSID_ShellUIHelper: TGUID = '{64AB4BB7-111E-11D1-8F79-00C04FC2FBE1}'; var p:procedure(Handle: TH Path: PChar); procedure TForm1.OrganizeFavorite(Sender: Tobject); var H: HW begin H := LoadLibrary(PChar('shdocvw.dll')); if H && 0 then begin p := GetProcAddress(H, PChar('DoOrganizeFavDlg')); if Assigned(p) then p(Application.Handle, PChar(FavFolder)); FreeLibrary(h); procedure TForm1.AddFavorite(Sender: TObject); var ShellUIHelper: ISHellUIH url, title: O begin Title := Webbrowser1.LocationN Url := Webbrowser1.LocationU if Url && '' then begin ShellUIHelper := CreateComObject(CLSID_SHELLUIHELPER) as IShellUIH ShellUIHelper.AddFavorite(url, title); 用上面的通过ISHellUIHelper接口来打开&添加到收藏夹&对话框的方法比较简单,但是有个缺陷,就是打开的窗口不是模式窗口,而是独立于应用程序的。可以想象,如果使用与OrganizeFavorite过程同样的方法来打开对话框,由于可以指定父窗口的句柄,自然可以实现模式窗口(效果与在资源管理器和IE中打开&添加到收藏夹&对话框相同)。问题显然是这样的,上面两个过程的作者当时只知道shdocvw.dll中DoOrganizeFavDlg的原型而不知道DoAddToFavDlg的原型,所以只好用ISHellUIHelper接口来实现(或许是他不够严谨,认为是否是模式窗口无所谓?)。 下面的过程就告诉你DoAddToFavDlg的函数原型。需要注意的是,这样打开的对话框并不执行&添加到收藏夹&的操作,它只是告诉应用程序用户是否选择了&确定&,同时在DoAddToFavDlg的第二个参数中返回用户希望放置Internet快捷方式的路径,建立.Url文件的工作由应用程序自己来完成。 procedure TForm1.AddFavorite(IE: TEmbeddedWB); procedure CreateUrl(AUrlPath, AUrl: PChar); var URLfile: TIniF begin URLfile := TIniFile.Create(String(AUrlPath)); ?RLfile.WriteString('InternetShortcut', 'URL', String(AUrl)); ?RLfile.F var AddFav: function(Handle: TH UrlPath: PC UrlPathSize: C Title: PC TitleSize: C FavIDLIST: pItemIDList): B FDoc: IHTMLDocument2; UrlPath, url, title: array[0..MAX_PATH] H: HW pidl: pItemIDL FRetOK: B begin FDoc := IHTMLDocument2(IE.Document); if FDoc = StrPCopy(Title, FDoc.Get_title); StrPCopy(url, FDoc.Get_url); if Url && '' then begin H := LoadLibrary(PChar('shdocvw.dll')); if H && 0 then begin SHGetSpecialFolderLocation(0, CSIDL_FAVORITES, pidl); AddFav := GetProcAddress(H, PChar('DoAddToFavDlg')); if Assigned(AddFav) then FRetOK :=AddFav(Handle, UrlPath, Sizeof(UrlPath), Title, Sizeof(Title), pidl) FreeLibrary(h); if FRetOK then CreateUrl(UrlPath, Url); end --------------------------------------------------------------------------------------------------------6、使WebBrowser获得焦点 TWebBrowser非常特殊,它从TWinControl继承来的SetFocus方法并不能使得它所包含的文档获得焦点,从而不能立即使用Internet Explorer本身具有得快捷键,解决方法如下:& procedure TForm1.SetFocusToD begin if WebBrowser1.Document && nil then with WebBrowser1.Application as IOleobject do DoVerb(OLEIVERB_UIACTIVATE, nil, WebBrowser1, 0, Handle, GetClientRect); 除此之外,我还找到一种更简单的方法,这里一并列出: if WebBrowser1.Document && nil then IHTMLWindow2(IHTMLDocument2(WebBrowser1.Document).ParentWindow).focus 刚找到了更简单的方法,也许是最简单的: if WebBrowser1.Document && nil then IHTMLWindow4(WebBrowser1.Document).focus 还有,需要判断文档是否获得焦点这样来做: if IHTMLWindow4(WebBrowser1.Document).hasfocus then--------------------------------------------------------------------------------------------------------7、点击&提交&按钮 如同程序里每个窗体上有一个&缺省&按钮一样,Web页面上的每个Form也有一个&缺省&按钮&&即属性为&Submit&的按钮,当用户按下回车键时就相当于鼠标单击了&Submit&。但是TWebBrowser似乎并不响应回车键,并且,即使把包含TWebBrowser的窗体的KeyPreview设为True,在窗体的KeyPress事件里还是不能截获用户向TWebBrowser发出的按键。 我的解决办法是用ApplicatinEvents构件或者自己编写TApplication对象的OnMessage事件,在其中判断消息类型,对键盘消息做出响应。至于点击&提交&按钮,可以通过分析网页源代码的方法来实现,不过我找到了更为简单快捷的方法,有两种,第一种是我自己想出来的,另一种是别人写的代码,这里都提供给大家,以做参考。 A、用SendKeys函数向WebBrowser发送回车键 在Delphi 5光盘上的Info\Extras\SendKeys目录下有一个SndKey32.pas文件,其中包含了两个函数SendKeys和AppActivate,我们可以用SendKeys函数来向WebBrowser发送回车键,我现在用的就是这个方法,使用很简单,在WebBrowser获得焦点的情况下(不要求WebBrowser所包含的文档获得焦点),用一条语句即可: Sendkeys('~',true);// press RETURN key SendKeys函数的详细参数说明等,均包含在SndKey32.pas文件中。 B、在OnMessage事件中将接受到的键盘消息传递给WebBrowser。 procedure TForm1.ApplicationEvents1Message(var Msg: TM var Handled: Boolean); {fixes the malfunction of some keys within webbrowser control} const StdKeys = [VK_TAB, VK_RETURN]; { standard keys } ExtKeys = [VK_DELETE, VK_BACK, VK_LEFT, VK_RIGHT]; { extended keys } fExtended = $; { extended key flag } begin Handled := F with Msg do if ((Message &= WM_KEYFIRST) and (Message &= WM_KEYLAST)) and ((wParam in StdKeys) or {$IFDEF VER120}(GetKeyState(VK_CONTROL) & 0) or {$ENDIF} (wParam in ExtKeys) and ((lParam and fExtended) = fExtended)) then try if IsChild(Handle, hWnd) then { handles all browser related messages } begin with {$IFDEF VER120}Application_{$ELSE}Application{$ENDIF} as IOleInPlaceActiveObject do Handled := TranslateAccelerator(Msg) = S_OK; if not Handled then begin Handled := T TranslateMessage(Msg); DispatchMessage(Msg); except // MessageHandler (此方法来自EmbeddedWB.pas)--------------------------------------------------------------------------------------------------------8、直接从TWebBrowser得到网页源码及Html 下面先介绍一种极其简单的得到TWebBrowser正在访问的网页源码的方法。一般方法是利用TWebBrowser控件中的Document对象提供的IPersistStreamInit接口来实现,具体就是:先检查WebBrowser.Document对象是否有效,无效则退出;然后取得IPersistStreamInit接口,接着取得HTML源码的大小,分配全局堆内存块,建立流,再将HTML文本写到流中。程序虽然不算复杂,但是有更简单的方法,所以实现代码不再给出。其实基本上所有IE的功能TWebBrowser都应该有较为简单的方法来实现,获取网页源码也是一样。下面的代码将网页源码显示在Memo1中。 Memo1.Lines.Add(IHtmlDocument2(WebBrowser1.Document).Body.OuterHtml); 同时,在用TWebBrowser浏览HTML文件的时候要将其保存为文本文件就很简单了,不需要任何的语法解析工具,因为TWebBrowser也完成了,如下: Memo1.Lines.Add(IHtmlDocument2(WebBrowser1.Document).Body.OuterText);--------------------------------------------------------------------------------------------------------9、&查找&功能 查找对话框可以在文档获得焦点的时候通过按键Ctrl-F来调出,程序中则调用IOleCommandTarget对象的成员函数Exec执行OLECMDID_FIND操作来调用,下面给出的方法是如何在程序中用代码来做出文字选择,即你可以自己设计查找对话框。 var Doc: IHtmlDocument2; TxtRange: IHtmlTxtR begin Doc :=WebBrowser1.Document as IHtmlDocument2; Doc.SelectA //此处为简写,选择全部文档的方法请参见第三条命令操作 //这句话尤为重要,因为IHtmlTxtRange对象的方法能够操作的前提是 //Document已经有一个文字选择区域。由于接着执行下面的语句,所以不会 //看到文档全选的过程。 TxtRange :=Doc.Selection.CreateRange as IHtmlTxtR TxtRange.FindText('Text to be searched',0.0); TxtRange.S 还有,从Txt.Get_text可以得到当前选中的文字内容,某些时候是有用的。--------------------------------------------------------------------------------------------------------10、提取网页中所有链接 这个方法来自大富翁论坛hopfield朋友的对一个问题的回答,我本想自己试验,但总是没成功。 var doc:IHTMLDocument2; all:IHTMLElementC len,i: item:OleV begin doc:=WebBrowser1 .Document as IHTMLDocument2; all:=doc.Get_ //doc.Links亦可 len:=all. for i:=0 to len-1 do begin item:=all.item(i,varempty); //EmpryParam亦可 memo1.lines.add(item.href); --------------------------------------------------------------------------------------------------------11、设置TWebBrowser的编码 为什么我总是错过很多机会?其实早就该想到的,但是一念之差,便即天壤之别。当时我要是肯再多考虑一下,多试验一下,这就不会排到第11条了。下面给出一个函数,搞定,难以想象的简单。 procedure SetCharSet(AWebBrowser: TWebB ACharSet: String); var RefreshLevel: OleV Begin IHTMLDocument2(AWebBrowser.Document).Set_CharSet(ACharSet); RefreshLevel :=7; //这个7应该从注册表来,帮助有Bug。 AWebBrowser.Refresh2(RefreshLevel); E--------------------------------------------------------------------------------------------------------12、在TWebBrowser中输入字符时激活菜单的解决 许多朋友编程的时候都遇到了这样一个问题,在TWebBrowser中输入时,键入的字符如果与菜单(用ToolBar做的菜单)的加速键相同就会激活菜单。有朋友解决办法是把加速键前面的&&&符号去掉,使得字符失去&加速&功能,这种方法未尝不可,只不过显得不够&专业&。其实略加分析我们就可以想到,是ToolBar抢先处理了按键(因为ToolBar本身就设计为用来实现具有Windows新风格的菜单),所以只需要修改ToolBar的源代码中处理菜单按键的那部分代码即可,方法如下: 1)、在$(Delphi)\source\vcl目录下找到comctrls.pas,拷贝到自己的程序所在目录,然后打开它。 2)、找到TToolBar.CMDialogChar过程,把过程体注释掉(如果你愿意的话,可以修改它)。 3)、重新编译自己的程序。 怎么样,是不是很简单?但它确实有效。--------------------------------------------------------------------------------------------------------13、去掉TWebBrowser的滚动条 缺省地,TWebBrowser是滚动条的,虽然我们可以在网页中设置不需要滚动条,不过,有些时候可能会有特殊的要求,比如,网页是有滚动条的,但又想去掉它该怎么办呢?很简单,下面给出两行代码,都可以达到目的,可谓殊途同归。 1)、IHTMLBodyElementDisp(IHTMLDocument2(WebBrowser1.document).body).scroll:= 'no'; 2)、WebBrowser1.oleobject.Document.body.Scroll := 'no'; 注:第一种方法需要在uses部分加上MSHTML_TLB或者MSHTML。--------------------------------------------------------------------------------------------------------14、通过IUniformResourceLocator接口建立Internet快捷方式 前面说到的显示&添加到收藏夹&模式对话框的方法中举了一个建立Internet快捷方式的例子,就其本身来说不太规范,属于取巧一类的方法。下面介绍的方法是通过接口来实现的。 procedure CreateIntShotCut(aFileName, aURL: PChar); var IURL: IUniformResourceL PersistFile: IP begin if Succeeded(CoCreateInstance(CLSID_InternetShortcut, nil, CLSCTX_INPROC_SERVER, IID_IUniformResourceLocator, IURL)) then begin IUrl.SetURL(aURL, 0); Persistfile := IUrl as IPersistF PersistFile.Save(StringToOleStr(aFileName), False); 其中IUniformResourceLocator接口的声明在IeConst.pas中,IeConst.pas可以在网站IE & Delphi找到; IPersistfile接口的声明在ActiveX.pas中。 注:这个函数的AURL参数必须包含协议前缀,如&&。来自:andy263, 时间: 22:57:00, ID:2438669直接从TWebBrowser得到网页源码及Html 下面先介绍一种极其简单的得到TWebBrowser正在访问的网页源码的方法。一般方法是利用TWebBrowser控件中的Document对象提供的IPersistStreamInit接口来实现,具体就是:先检查WebBrowser.Document对象是否有效,无效则退出;然后取得IPersistStreamInit接口,接着取得HTML源码的大小,分配全局堆内存块,建立流,再将HTML文本写到流中。程序虽然不算复杂,但是有更简单的方法,所以实现代码不再给出。其实基本上所有IE的功能TWebBrowser都应该有较为简单的方法来实现,获取网页源码也是一样。下面的代码将网页源码显示在Memo1中。 Memo1.Lines.Add(IHtmlDocument2(WebBrowser1.Document).Body.OuterHtml); 同时,在用TWebBrowser浏览HTML文件的时候要将其保存为文本文件就很简单了,不需要任何的语法解析工具,因为TWebBrowser也完成了,如下: Memo1.Lines.Add(IHtmlDocument2(WebBrowser1.Document).Body.OuterText);注意 uses MSHTML;
at September 12, 2006. by 傻猫 . &  Views: 3517 & 
资料图片:纽约世贸中心双子塔被撞后爆炸美国时间9月11日上午,美国航空公司的两架客机遭劫持,这两架飞机共有156名乘客和机组人员。8时48分,其中一架波音767飞机在超低空飞行后一头撞向世贸中心南侧大楼,把大楼撞了个大洞,在大约距地面20层的地方冒出滚滚浓烟。就在楼内人员惊惶失措之际,18分钟后,另一架被劫持的波音757飞机再次以极快的速度撞穿了世贸中心姊妹楼的北侧大楼,并引起巨大爆炸。
at September 12, 2006. by 傻猫 . &  Views: 2424 & 
&&&&&& 无题 相见时难别亦难, 东风无力百花残。 春蚕到死丝方尽, 蜡炬成灰泪始干。 晓镜但愁云鬓改, 夜吟应觉月光寒。 蓬山此去无多路, 青鸟殷勤为探看 赞美老师 我曾记得您那沾满粉末的双手 我曾记得您那慈善的谆谆教导 我曾记得您那新增的几根银发 因为有您 莘莘学子才能成才 因为有您 世界才会如此文明 老师 您是明灯 为迷失方向的孩子找回HOME 老师 您是天使 九月,献给老师 九月,如期而至。 世界因此灿烂。 我们歌唱九月, 因为这是您永恒的节日。 我们牢记九月, 因为这是我们真诚的表白。 九月,是只情满四溢的杯子, 我们用双手高高地举起 一片真诚的祝福声中, 请您干杯。 九月的乐章已经奏响, 请接受我们九月的献礼吧, 所有拼搏在教育战线的老师们。&& 教师颂 别人从生活中捞取黄金 您只能获取花香 您的黄金是早晨的太阳 您的银子是十五的月亮 但您依然快乐的吹着口哨 您的自豪是桃李芬芳 庆祝教师节诗歌文章&&老师,辛苦了 是谁&&把无知的我们领进宽敞的教室, 教给我们丰富的知识? 是您!老师! 您用辛勤的汗水, 哺育了春日刚破土的嫩苗。 是谁&&把调皮的我们 教育成能体贴帮助别人的人? 是您!老师! 您的关怀就好似和煦的春风 温暖了我们的心灵。 是谁&&把幼小的我们 培育成成熟懂事的少年? 是您!老师! 您的保护让我们健康成长。 在金秋时节结下硕果。 您辛苦了!老师! 在酷暑严寒中辛勤工作的人们。 您辛苦了!老师! 把青春无么奉献的人们。 我们向您致以崇高的敬意! &&您辛苦了,老师! 我也只能帮到这里了老 师 老师&&您如春天中的细雨, 滋润着花儿,灌溉着大地, 而我们再着吮吸着细雨茁长成长。 老师&&您如秋天里的一丝风, 吹黄了大地,唤金了稻谷, 而我们得到了丰收的硕果。 老师&&在我黑暗的人生道路上是您为我点燃了一盏最明亮的灯; 老师&&再我迷蒙的人生道路上是您做我的了的引路人; 老师&&在我跌跌碰碰的人生道路中是您为我指明了前进的方向; 老师&&是您给了我一双强有力的翅膀,让我在知识的世界里遨游! 你献上一朵花, 我献上一朵花, 让我们编织个大花环, 献给亲爱的老师妈妈。 是您给了种子, 太阳般的温暖; 是您用汗水, 把幼苗浇灌。 您的眼睛像明亮的星星, 闪烁着迷人的光华; 你的歌声像春天的小溪, 把欢乐带给了大家。 无论我们走到哪儿, 永远记住你的情; 无论我们走到哪儿。 永远记住您的话。 无论我们走到哪儿, 永远记住您的爱; 无论我们走到哪儿, 永远是您的一朵花。 金风送欢笑,丹桂花香飘。 老师的节日,今天又来到。 老师为我们的成长,不知付出了多少辛劳。 老师对我们的抚爱,我们永远不会忘记。 老师,您好! 人们把老师比作红烛,照亮别人而把自己燃烧。 人们把老师比作园丁,培育桃李开遍天涯海角。 教师是太阳底下崇高的事业。 老师给了我们理想的阳光和智慧的阳光。 老师引导我们走上洒满阳光的人生之路。 老师期望我们成为新世纪的太阳。 老师的话儿像春雨滋润我的心。 老师用知识的雨露浇灌我们成长。 温柔的春雨,就是老师对我们的抚爱。 老师的言传身教,像春雨润物细无声。 老师甘当绿叶,把我们当红花托起。 老师是一片绿叶,乐于默默奉献。 绿叶的绿色象征着老师青春常在。 当我们像鲜花盛开时,永远忘不了绿叶的恩情。 老师像大树,头顶蓝天,脚踩大地,默默地为社会造福。 老师是大树,为世界带来一片春色。 老师播撒希望的种子,把我们培育成一片树林。 小树长成栋梁材,不忘园丁培育恩。 是啊,老师的热情像太阳,老师的教诲像春雨, 老师的风格像绿叶,老师的事业像大树,我们的老师就是好
at September 10, 2006. by 傻猫 . &  Views: 2366 & 
在刚刚结束的国际田联大奖赛总决赛的比赛中,中国选手刘翔(刘翔新闻,刘翔说吧)发挥出色,他以12秒93的成绩勇夺冠军,这也是他个人第三次跑进13秒。古巴小将罗伯斯以13秒获得亚军,老将阿兰-约翰逊(阿兰-约翰逊新闻,阿兰-约翰逊说吧)排在第三。 比赛时的风速为-0.6米每秒。刘翔排在第5道,左右两边是小古巴罗伯斯和美国新秀梅里特。特拉梅尔在第3道,总决赛三届冠军得主阿兰-约翰逊则在第8道。 第一次发令枪打响,刘翔有点紧张,抢跑犯规。发令枪第二次响起后,刘翔并没有受到第一次抢跑的影响,起跑反应速度为0.108秒,排在所有选手中的第一位。梅里特和特拉梅尔紧随其后。 刘翔虽然起跑不错,但排在他左边的罗伯斯和最外道的阿兰约翰逊在第三个栏后就与他并驾齐驱了。此时,刘翔并没有慌张,他凭借出色的栏间节奏稳住了第一位的位置。并在最后的冲刺阶段发挥出色,把其他对手甩在身后,以12秒93的优异成绩问鼎冠军。古巴小将罗伯斯以13秒获得亚军,阿兰-约翰逊也发挥不错,13秒01的成绩排在第三。 今天刘翔12秒93的成绩也是他个人第三次跑进13秒大关。另外2次分别为雅典奥运会上的12秒91和洛桑站的12秒88。下周,刘翔将代表亚洲队参加在雅典举行的田径世界杯,希望他能再一次带来好消息。 (搜狐体育:思羽)
<font color="#
<font color="#秒93
<font color="#
<font color="#秒00
<font color="#
阿兰约翰逊
<font color="#秒01
<font color="#
<font color="#秒22
<font color="#
<font color="#秒24
<font color="#
<font color="#秒25
<font color="#
<font color="#秒27
<font color="#
<font color="#秒38
北京时间8月3日,国际业余田径联合会(IAAF)正式确认了刘翔12秒88世界记录。这一记录是刘翔日在瑞士洛桑超级田径大奖赛上创造的。男子110米栏新世界纪录:12秒88(风速1.1米/秒) 刘翔 中国 瑞士洛桑 日原男子110米栏新世界纪录纪录:12秒91(风速0.5米/秒) 科林-杰克逊 英国 德国斯图加特 日12秒91(风速0.3米/秒) 刘翔 中国 希腊雅典 日刘翔简介姓名:刘翔 出生地:上海生日:项目:110米跨栏辉煌战绩2000年世界青年锦标赛男子110米栏第4名;2001年全运会、东亚运动会、世界大学生运动会男子110米栏冠军;2002年瑞士洛桑国际大奖赛以13秒12的成绩打破男子110米栏亚洲纪录;米栏奥运冠军,他12秒91的成绩打破奥运会纪录,并追平世界纪录,日,他在洛桑田径黄金联赛中以12秒88打破了由科林杰克逊保持了13年之久的世界纪录。
at September 10, 2006. by 傻猫 . &  Views: 2403 & }