文档库 最新最全的文档下载
当前位置:文档库 › c#对WebBrowser的扩展资料汇总

c#对WebBrowser的扩展资料汇总

c#对WebBrowser的扩展资料汇总
c#对WebBrowser的扩展资料汇总

C#Webbrowser中屏蔽弹出窗口及脚本错误提示

当IE浏览器遇到脚本错误时浏览器,左下角会出现一个黄色图标,点击可以查看脚本错误的详细信息,并不会有弹出的错误信息框。当我们使用WebBrowser控件时有错误信息框弹出,这样程序显的很不友好,而且会让一些自动执行的程序暂停。我看到有人采取的解决方案是做一个窗体杀手程序来关闭弹出的窗体。今天探讨的方法是从控件解决问题。

1、SHDocVw.dll

在COM时代我们使用的WebBrowser控件是SHDocVw.dll。屏蔽错误信息的方法很简单使用下面的一句就可以搞定。

[c-sharp]view plaincopyprint?

1.WebBrowser1.Silent = true;

1.webBrowser1.ScriptErrorsSuppressed = true;

1.//捕获控件的错误

2.this.WebBrowser.Document.Window.Error += new HtmlElementErrorEventHandler(Wi

ndow_Error);

3.//对错误进行处理

4.void Window_Error(object sender, HtmlElementErrorEventArgs e)

5.{

6. // 自己的处理代码

7. e.Handled = true;

8.}

3、上面的方法对于多个框架嵌套等等的情形还是不能很好的解决。

为了彻底解决这个问题,我们借助AxWebBrowser来解决WebBrowser的问题。

我们定义一个自己的类,他的父类是WebBrowser,以后使用这个类就可以了。在这个类的定义中需要引用SHDocVw。

[c-sharp]view plaincopyprint?

1.class EWebBrowser : System.Windows.Forms.WebBrowser

2.{

3. SHDocVw.IWebBrowser2 Iwb2;

4.

5. protected override void AttachInterfaces(object nativeActiveXObject)

6. {

7. Iwb2 = (SHDocVw.IWebBrowser2) nativeActiveXObject;

8. Iwb2.Silent = true;

9. base.AttachInterfaces(nativeActiveXObject);

10. }

11.

12. protected override void DetachInterfaces()

13. {

14. Iwb2 = null;

15. base.DetachInterfaces();

16. }

17.}

18.

19.

20.

21.//项目中添加Micrsoft.mshtml引用

https://www.wendangku.net/doc/1c17419309.html,ing mshtml;

23.

24.private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventAr

gs e)

25.{

26. IHTMLDocument2 vDocument = (IHTMLDocument2)webBrowser1.Document.DomDocum

ent;

27. vDocument.parentWindow.execScript(

28. "function alert(str){if(str=='zswang')confirm(str);}", "javaScript")

;

29.}

30.

31.//frame结构

32.

33.private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventAr

gs e)

34.{

35. IHTMLDocument2 vDocument = (IHTMLDocument2)webBrowser1.Document.DomDocum

ent;

36. foreach (IHTMLElement vElement in vDocument.all)

37. if (vElement.tagName.ToUpper() == "FRAME")

38. {

39. IHTMLFrameBase2 vFrameBase2 = vElement as IHTMLFrameBase2;

40. vFrameBase2.contentWindow.execScript(

41. "function alert(str){confirm('[' + str + ']');}", "javaScrip

t");

42. }

43.}

1. (wb.ActiveXInstance as SHDocVw.WebBrowser).NavigateComplete2 += new DWeb

BrowserEvents2_NavigateComplete2EventHandler(wb_NavigateComplete2);//wb是一个Webbrowser控件

2.

3.//屏蔽一些弹出窗口

4.void wb_NavigateComplete2(object pDisp, ref object URL)

5.{

6. mshtml.IHTMLDocument2 doc = (wb.ActiveXInstance as SHDocVw.WebBrowser).D

ocument as mshtml.IHTMLDocument2;

7. doc.parentWindow.execScript("window.alert=null", "javascript");

8. doc.parentWindow.execScript("window.confirm=null", "javascript");

9. doc.parentWindow.execScript("window.open=null", "javascript");

10. doc.parentWindow.execScript("window.showModalDialog=null", "javascript")

;

11. doc.parentWindow.execScript("window.close=null", "javascript");

1.//using mshtml;

2. //using SHDocVw;

3. private void Form1_Load(object sender, EventArgs e)

4. {

5. this.webBrowser1.Navigate("http://localhost:28512/WebSite2/Defau

lt.aspx");

6. SHDocVw.WebBrowser wb = this.webBrowser1.ActiveXInstance as SHDo

cVw.WebBrowser;

7. wb.NavigateComplete2 += new SHDocVw.DWebBrowserEvents2_NavigateC

omplete2EventHandler(wb_NavigateComplete2);

8.

9. }

10.

11. void wb_NavigateComplete2(object pDisp, ref object URL)

12. ...{

13. mshtml.IHTMLDocument2 doc = (this.webBrowser1.ActiveXInstance as

SHDocVw.WebBrowser).Document as mshtml.IHTMLDocument2;

14. doc.parentWindow.execScript("function alert(str){return ''}", "j

avascript");

15. }

为了解决这个问题,有的人专门从WebBrowser派生出一个新类,然后重写了AttachInterfaces方法,其实也是没有必要的,效果和直接设置ScriptErrorsSuppressed属性相同。

不过要注意的是:

ScriptErrorsSuppressed 设置为True会禁用所有的对话框,比如提示Activex下载、执行以及安全登录等对话框。

如果不想禁止除脚本错误之外的对话框,请使用MSDN上的代码示例:

[c-sharp]view plaincopyprint?

1.private void browser_DocumentCompleted(object sender, WebBrowserDocumentComp

letedEventArgs e)

2.{

3. ((WebBrowser)sender).Document.Window.Error += new HtmlElementErrorEventH

andler(Window_Error);

4.}

5.

6.private void Window_Error(object sender, HtmlElementErrorEventArgs e)

7.{

8. // Ignore the error and suppress the error dialog box.

9. e.Handled = true;

10.}

对ExtendedWebBrowser的再扩展

<=======================

原创文章,转载请注明出处!

作者: 谭剑

博客: https://www.wendangku.net/doc/1c17419309.html,/tanjian

关键字:C#,.NET,WebBrowser,ExtendedWebBrowser,浏览器,完全载入,新窗口,脚本

=======================>

.NET 2.0 提供了一个新的WebBrowser控件.该WebBrowser控件为我们带来了许多非常实用的新特性.举个简单的例子:

HtmlDocument htmlDoc = webBrowser.Document;

HtmlElement btnElement = htmlDoc.All["btnClose"];

if (btnElement != null)

{

btnElement.click += new

HtmlElementEventHandler(HtmlBtnClose_Click);

}

仅需类似这样简单易懂的几行代码,便可实现Windows Forms对Web页面各个HTML元素各种事件的响应.

在Windows Forms与Web页面交互这方面,在功能与易用性上,该WebBrowser控件达到了一个前所未有的高度.这样的特性,就已经为我们在进行相关的Windows Forms程序开发时选用它提供了足够的理由.

很显然,WebBrowser控件是对SHDocVw的AxWebBrowser这个非托管的ActiveX 控件进行了封装.但是在实用中,我们很快可以发现,其在提供新特性的同时,并没有全部暴露出AxWebBrowser原有的属性和方法,在很多情况下,这样就使得它显得有点捉襟见肘了.

jlandheer对这个WebBrowser控件进行了扩展(见Extended .NET 2.0 WebBrowser Control).但是该ExtendedWebBrowser也仅仅是提供了一个结构和思路,真正实现的扩展也比较有限.

根据实际的需要,我又对ExtendedWebBrowser进行了再扩展.

判断页面是否完全载入:

1.新增DocumentCompleted事件:

在类ExtendedWebBrowser里面事件部分的末尾添加如下代码:

public new event

EventHandler DocumentCompleted; protected void

OnDocumentCompleted(BrowserExtendedNavigatingEventArgs e)

{

if (e == null)

throw new ArgumentNullException("e");

if (this.DocumentCompleted != null)

this.DocumentCompleted(this, e);

}

2.实现public void DocumentComplete(object pDisp, ref object URL)方法: 在文件ExtendedWebBrowser.cs class WebBrowserExtendedEvents : UnsafeNativeMethods.DWebBrowserEvents2 的 Unused events区域里面可以找到未实现的方法:

public void DocumentComplete(object pDisp, ref object URL) {

}

将其剪贴到已实现的方法部分的末尾,并修改为:

public void DocumentComplete(object pDisp, ref object URL) {

BrowserExtendedNavigatingEventArgs args = new BrowserExtendedNavigatingEventArgs(pDisp, new Uri(URL.ToString()), null, UrlContext.None);

_Browser.OnDocumentCompleted(args);

}

3.修改原有DocumentCompleted事件的响应:

由于上面重写了DocumentCompleted事件,所以需要修改原有的DocumentCompleted事件响应:

修改类BrowserControl中

_browser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(_browser_DocumentCompleted); 为:

_browser.DocumentCompleted += new

EventHandler(_browser_DocumentCom pleted);

修改

void _browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)

为:

void _browser_DocumentCompleted(object sender, BrowserExtendedNavigatingEventArgs e)

其它相应的地方进行同样的修改.

4.发送DocumentCompleted事件到最外层:

该ExtendedWebBrowser演示程序通过类WindowManager管理了一个标签浏览器,如果需要,我们可以将事件发送到最外层,提供给MainForm使用.

将WindowManager中的代码

void WebBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)

{

CheckCommandState();

}

改成:

void WebBrowser_DocumentCompleted(object sender, BrowserExtendedNavigatingEventArgs e)

{

OnDocumentCompleted(sender, e);

CheckCommandState();

}

public event EventHandler DocumentCompleted;

///

/// Raises the DocumentCompleted event

///

///

protected virtual void OnDocumentCompleted(object sender, BrowserExtendedNavigatingEventArgs e)

{

if (DocumentCompleted != null)

DocumentCompleted(sender, e);

}

5.在需要的地方响应DocumentCompleted事件:

如:

_windowManager.DocumentCompleted += new

EventHandler(_windowManager_Docum entCompleted);

.

.

.

void _windowManager_DocumentCompleted(object sender, BrowserExtendedNavigatingEventArgs e)

{

// 页面完全载入

if (e.AutomationObject ==

((ExtendedWebBrowser)sender).Application)

{

MessageBox.Show("DocumentCompleted:" +

e.Url.ToString());

}

}

注意:必须e.AutomationObject ==

((ExtendedWebBrowser)sender).Application才说明页面已经完全载入.由于Web页面可能为多个框架嵌套的(可能还有其它的情况,尚未深究),那么载入过

程中对应会有多个DocumentCompleted事件,而只有页面完全载入了,才会

e.AutomationObject == ((ExtendedWebBrowser)sender).Application.这就是为什么要费尽千辛万苦把pDisp传递出来的原因.

不弹出页面,仍在当前浏览器浏览:

ExtendedWebBrowser中的StartNewWindow事件在弹出新页面的时候触发.其扩展的事件数据BrowserExtendedNavigatingEventArgs中已经提供了上下文,新页面的URL,ppDisp等所需的数据.所以我们只需改动类BrowserControl中的方法

void _browser_StartNewWindow(object sender, BrowserExtendedNavigatingEventArgs e)

为:

void _browser_StartNewWindow(object sender, BrowserExtendedNavigatingEventArgs e)

{

// Here we do the pop-up blocker work

// 这些弹出窗口过滤的代码如果不需要,就全部删除掉

if (allowPopup)

{

// Check wheter it's a HTML dialog box. If so, allow the popup but do not open a new tab

if (!((e.NavigationContext & UrlContext.HtmlDialog) == UrlContext.HtmlDialog))

{

ExtendedWebBrowser ewb =

mf.WindowManager.New(false);

// The (in)famous application object

e.AutomationObject = ewb.Application;

}

}

//在这里使用: e.AutomationObject = _browser.Application;似乎没有作用,

//但是他原来的代码e.AutomationObject = ewb.Application;是有用的(见上面注释)

//不知道是什么原因,只好暂时采用这个办法

_browser.Navigate(e.Url);

e.Cancel = true;

}

这里如果使用e.AutomationObject = _browser.Application的话,似乎同他原来的代码e.AutomationObject = ewb.Application唯一的区别就是一个browser 是浏览过页面了的,一个browser.是新建的,难道会同这个有关?哪位如果知道

原因,还请不吝赐教!

不弹出脚本错误提示框:

ExtendedWebBrowser通过响应事件WebBrowser.Document.Window.Error来捕获脚本错误提示框弹出的消息:

void _browser_DownloadComplete(object sender, EventArgs e)

{

// Check wheter the document is available (it should be) if (this.WebBrowser.Document != null)

{

// Subscribe to the Error event

this.WebBrowser.Document.Window.Error += new HtmlElementErrorEventHandler(Window_Error);

.

.

.

void Window_Error(object sender, HtmlElementErrorEventArgs e) {

// We got a script error, record it

ScriptErrorManager.Instance.RegisterScriptError(e.Url, e.Description, e.LineNumber);

// Let the browser know we handled this error.

e.Handled = true;

}

但是似乎还是由于前面提到的Web页面存在多个框架嵌套的原因,其能够捕获到的消息比较有限,有很大一部分脚本错误提示消息仍然会捕获不到.这样一个问题困扰了我几天.后来突然发现ExtendedWebBrowser里面有如下的代码:

///

/// This method supports the .NET Framework infrastructure and is not intended to be used directly from your code.

/// Called by the control when the underlying ActiveX control is created.

///

///

[PermissionSet(SecurityAction.LinkDemand, Name = "FullTrust")] protected override void AttachInterfaces(object nativeActiveXObject)

{

this.axIWebBrowser2 =

(UnsafeNativeMethods.IWebBrowser2)nativeActiveXObject;

base.AttachInterfaces(nativeActiveXObject);

}

原来AxWebBrowser在这里!于是简单的设置了axIWebBrowser2.Silent属性: protected override void AttachInterfaces(object nativeActiveXObject)

{

this.axIWebBrowser2 =

(UnsafeNativeMethods.IWebBrowser2)nativeActiveXObject;

this.axIWebBrowser2.Silent = true;//不弹脚本错误框

base.AttachInterfaces(nativeActiveXObject);

}

不再弹出任何提示框,Silent属性真的是恰如其名,整个世界清静了...*^_^*

从上面的内容可以看出,ExtendedWebBrowser截取了AxWebBrowser接口.那么,不难想象,虽然我的"再扩展"只扩展了如上三项功能,其实我们现在可以做我们任何想做的!

<=======================

原创文章,转载请注明出处!

作者: 谭剑

博客: https://www.wendangku.net/doc/1c17419309.html,/tanjian

对ExtendedWebBrowser的再扩展(续)

《对ExtendedWebBrowser的再扩展》(续)

<=======================

原创文章,转载请注明出处!

作者: 谭剑

博客: https://www.wendangku.net/doc/1c17419309.html,/tanjian

关键字:C#,.NET,WebBrowser,alert,ExtendedWebBrowser,浏览器,对话框

=======================>

截获"浏览器的信息对话框"弹出消息:

基于某些特殊需求的需要,程序需要知道浏览器控件的信息对话框何时弹出了,消息的内容是什么,以及其它相关的信息.

思路一:

向浏览的页面中添加如下代码(为避免与页面中原有的元素相冲突,可以将下面代码内的方法名,元素名等替换成不同的guid)

并在宿主程序中响应该button的click事件消息:

((ExtendedWebBrowser)sender).Document.All["myButton"].Click +=

new HtmlElementEventHandler(myAlertElement_Click);

这样一来,便可以一种迂回的方式巧妙获取到alert消息框弹出事件.

但是通过使用HtmlElement.AppendChild(..) / HtmlDocument.Write(..) 以及HTM LWindow2.execScript(...) 等方法向载入的页面中添加上述代码,均未能得到理想的结果,遂暂时放弃(哪位知道该怎么弄的话,请不吝赐教!!!)

思路二:

额外开一监视线程,实时枚举所有子窗口.以达到获取该消息框弹出事件的目的.

可以预计,该方法会影响到整个系统的性能,会影响到程序的稳定性,同时其可靠性也不高(不能保证每次弹出消息框时刚好能够枚举到).

所以这只能作为备用方法,在没有找到其它更好方法的情况下,勉强用用.

思路三:

再一次扩展浏览器控件.

查询MSDN,可以找到对WebBrowser.CreateWebBrowserSiteBase 方法的描述:

『返回对非托管WebBrowser ActiveX 控件站点的引用,扩展该站点可以对托管Web Browser控件进行自定义。

若要使用此功能,请实现从WebBrowser和WebBrowser.WebBrowserSite类继承的类。非托管WebBrowser ActiveX 控件使用受保护的CreateWebBrowserSit eBase方法检索由WebBrowser.WebBrowserSite类实现的扩展性接口。重写Crea teWebBrowserSiteBase方法以返回自己的从WebBrowser.WebBrowserSite类继承的类的实例。WebBrowser.WebBrowserSite类提供OLE IDocHostUIHandler 的默认实现。您可以为此接口提供自己的实现,或者实现任何其他WebBrowser ActiveX 控件接口,从而对控件行为进行自定义。』

可以看出,我们只需重写CreateWebBrowserSiteBase方法,扩展WebBrowser Site,便可实现对浏览器控件的扩展。

我们知道,IDocHostUIHandler ,IDocHostUIHandler2 和IDocHostShowUI这三个接口是浏览器控件用户界面的自定义的核心。当一个容器提供对ActiveX 控件支持的时候,

当浏览器控件被实例化时,如果可能的话,它尝试找来自宿主的IDocHostUIHandler ,IDo cHostUIHandler2 和IDocHostShowUI 实现。当我们修改浏览器控件的时候, 这些是我们应该在程序中实现的接口。

在这里,我们需要的仅仅是截获"浏览器的信息对话框"弹出消息,所以我们也没有必要把所有这些接口全部实现一遍。

IDocHostShowUI 这个接口提供给我们对浏览器控件显示的信息对话框和帮助的控制。我们实现它,这样在浏览器控件显示它自己的任何的信息或帮助之前,能调用我们定义的IDoc

HostShowUI的方法。这样我们便有一个机会捕获该信息对话框弹出的消息。IDocHostShow UI有两个方法,IDocHostShowUI::ShowMessage和IDocHostShowUI::ShowHelp。

已经准备得很充分了。现在开工!!!

在文件UnsafeNativeMethods.cs的public class UnsafeNativeMethods里面添加如下代码:

#region IDocHostShowUI

[StructLayout(LayoutKind.Explicit, Pack = 4)]

public struct __MIDL_IWinTypes_0009

{

// Fields

[FieldOffset(0)]

public int hInproc;

[FieldOffset(0)]

public int hRemote;

}

[StructLayout(LayoutKind.Sequential, Pack = 4)]

public struct _RemotableHandle

{

public int fContext;

public __MIDL_IWinTypes_0009 u;

}

[StructLayout(LayoutKind.Sequential, Pack = 4)]

public struct tagPOINT

{

public int x;

public int y;

}

[ComImport, Guid("C4D244B0-D43E-11CF-893B-00AA00BDCE1A"), Interfa ceType((short)1)]

public interface IDocHostShowUI

{

[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = Meth odCodeType.Runtime)]

void ShowMessage([In, ComAliasName("ExtendedWebBrowser2.UnsafeN ativeMethods.wireHWND")] ref _RemotableHandle hwnd, [In, MarshalAs(Unman agedType.LPWStr)] string lpstrText, [In, MarshalAs(UnmanagedType.LPWStr)] s tring lpstrCaption, [In] uint dwType, [In, MarshalAs(UnmanagedType.LPWStr)] string lpstrHelpFile, [In] uint dwHelpContext, [ComAliasName("ExtendedWebBro wser2.UnsafeNativeMethods.LONG_PTR")] out int plResult);

[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = Meth odCodeType.Runtime)]

void ShowHelp([In, ComAliasName("ExtendedWebBrowser2.UnsafeNativ eMethods.wireHWND")] ref _RemotableHandle hwnd, [In, MarshalAs(Unmanage dType.LPWStr)] string pszHelpFile, [In] uint uCommand, [In] uint dwData, [In] tagPOINT ptMouse, [Out, MarshalAs(UnmanagedType.IDispatch)] object pDisp atchObjectHit);

}

#endregion

在文件ExtendedWebBrowser.cs的public class ExtendedWebBrowser : Syste m.Windows.Forms.WebBrowser里面添加如下代码:

#region ExtendedWebBrowserSite

class ExtendedWebBrowserSite : WebBrowser.WebBrowserSite, UnsafeNati veMethods.IDocHostShowUI

{

public ExtendedWebBrowserSite(WebBrowser host)

: base(host)

{

}

void UnsafeNativeMethods.IDocHostShowUI.ShowMessage(ref UnsafeNa tiveMethods._RemotableHandle hwnd, string lpstrText, string lpstrCaption, uint dwType, string lpstrHelpFile, uint dwHelpContext, out int plResult)

{

//TODO:自定义

}

void UnsafeNativeMethods.IDocHostShowUI.ShowHelp(ref UnsafeNative Methods._RemotableHandle hwnd, string pszHelpFile, uint uCommand, uint dw Data, UnsafeNativeMethods.tagPOINT ptMouse, object pDispatchObjectHit) {

//TODO:自定义

}

}

protected override WebBrowserSiteBase CreateWebBrowserSiteBase()

{

return new ExtendedWebBrowserSite(this);

}

#endregion

OK,现在便可以添加相应的自定义事件了,这个轻车熟路,不再赘述。

说明:本文为《对ExtendedWebBrowser的再扩展》的续,某些地方请自行参看前文。using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace MyBrowser

{

public class ExtendedWebBrowser : System.Windows.Forms.WebBrowser

{

System.Windows.Forms.AxHost.ConnectionPointCookie cookie; WebBrowserExtendedEvents events;

//This method will be called to give you a chance to create your own event sink

protected override void CreateSink()

{

//MAKE SURE TO CALL THE BASE or the normal events won't fire

base.CreateSink();

events = new WebBrowserExtendedEvents(this);

cookie = new System.Windows.Forms.AxHost.ConnectionPointCookie(this.ActiveXInstance, events, typeof(DWebBrowserEvents2));

}

protected override void DetachSink()

{

if (null != cookie)

{

cookie.Disconnect();

cookie = null;

}

base.DetachSink();

}

//This new event will fire when the page is navigating

public event EventHandler BeforeNavigate;

public event EventHandler BeforeNewWindow;

protected void OnBeforeNewWindow(string url, out bool cancel)

{

EventHandler h = BeforeNewWindow; WebBrowserExtendedNavigatingEventArgs args = new WebBrowserExtendedNavigatingEventArgs(url, null);

if (null != h)

{

h(this, args);

}

cancel = args.Cancel;

}

protected void OnBeforeNavigate(string url, string frame, out bool cancel)

{

EventHandler h = BeforeNavigate; WebBrowserExtendedNavigatingEventArgs args = new WebBrowserExtendedNavigatingEventArgs(url, frame);

if (null != h)

{

h(this, args);

}

//Pass the cancellation chosen back out to the events

cancel = args.Cancel;

}

//This class will capture events from the WebBrowser

class WebBrowserExtendedEvents : System.Runtime.InteropServices.StandardOleMarshalObject, DWebBrowserEvents2

{

ExtendedWebBrowser _Browser;

public WebBrowserExtendedEvents(ExtendedWebBrowser browser) { _Browser = browser; }

//Implement whichever events you wish

public void BeforeNavigate2(object pDisp, ref object URL, ref object flags, ref object targetFrameName, ref object postData, ref object headers, ref bool cancel)

{

_Browser.OnBeforeNavigate((string)URL, (string)targetFrameName, out cancel);

}

public void NewWindow3(object pDisp, ref bool cancel, ref object flags, ref object URLContext, ref object URL)

{

_Browser.OnBeforeNewWindow((string)URL, out cancel);

}

}

[https://www.wendangku.net/doc/1c17419309.html,Import(),

System.Runtime.InteropServices.Guid("34A715A0-6587-11D0-924A-0020AFC7AC4D"), System.Runtime.InteropServices.InterfaceTypeAttribute(https://www.wendangku.net/doc/1c17419309.html,Int erfaceType.InterfaceIsIDispatch),

System.Runtime.InteropServices.TypeLibType(System.Runtime.InteropServices.TypeLibTypeFlags. FHidden)]

public interface DWebBrowserEvents2

{

[System.Runtime.InteropServices.DispId(250)]

void BeforeNavigate2(

[System.Runtime.InteropServices.In,

System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.IDi spatch)] object pDisp,

[System.Runtime.InteropServices.In] ref object URL,

[System.Runtime.InteropServices.In] ref object flags,

[System.Runtime.InteropServices.In] ref object targetFrameName, [System.Runtime.InteropServices.In] ref object postData,

[System.Runtime.InteropServices.In] ref object headers,

[System.Runtime.InteropServices.In,

System.Runtime.InteropServices.Out] ref bool cancel);

[System.Runtime.InteropServices.DispId(273)]

void NewWindow3(

[System.Runtime.InteropServices.In,

System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.IDi spatch)] object pDisp,

[System.Runtime.InteropServices.In, System.Runtime.InteropServices.Out] ref bool cancel, [System.Runtime.InteropServices.In] ref object flags,

[System.Runtime.InteropServices.In] ref object URLContext,

[System.Runtime.InteropServices.In] ref object URL);

}

}

public class WebBrowserExtendedNavigatingEventArgs : https://www.wendangku.net/doc/1c17419309.html,ponentModel.CancelEventArgs

{

private string _Url; //原文此处多了一个空格,注意修改之...散仙闪电注

public string Url

{

get { return _Url; }

}

private string _Frame; //原文此处多了一个空格,注意修改之...散仙闪电注

public string Frame

{

get { return _Frame; }

}

public WebBrowserExtendedNavigatingEventArgs(string url, string frame)

: base()

{

_Url = url;

_Frame = frame;

}

}

}

How to check if BUTTON is clicked in C# Winforms to the JAVA SCRIPT code? With the use of webbrowser

How to inject Javascript in WebBrowser control HtmlElement head = webBrowser1.Document.GetElementsByTagName("head")[0]; HtmlElement scriptEl = webBrowser1.Document.CreateElement("script"); IHTMLScriptElement element = (IHTMLScriptElement)scriptEl.DomElement; element.text = "function sayHello() { alert('hello') }";

head.AppendChild(scriptEl);

webBrowser1.Document.InvokeScript("sayHello");

HtmlDocument doc = browser.Document;

HtmlElement head = doc.GetElementsByTagName("head")[0];

HtmlElement s = doc.CreateElement("script");

s.SetAttribute("text","function sayhello() { alert('hello'); }");

WebBrowser控件使用详解

WebBrowser控件使用详解

Private Events Description BeforeNavigate2 导航发生前激发,刷新时不激发CommandStateChange 当命令的激活状态改变时激发。它表明何时 激活或关闭Back和Forward 菜单项或按钮 DocumentComplete 当整个文档完成是激发,刷新页面不激发DownloadBegin 当某项下载操作已经开始后激发,刷新也可 激发此事件 DownloadComplete当某项下载操作已经完成后激发,刷新也可 激发此事件 NavigateComplete2 导航完成后激发,刷新时不激发NewWindow2 在创建新窗口以前激发 OnFullScreen 当FullScreen属性改变时激发。该事件采 用VARIENT_BOOL的一个输 入参数来指示IE是全屏显示方式 (VARIENT_TRUE)还是普通显示方式 (VARIENT_FALSE) OnMenuBar 改变MenuBar的属性时激发,标示参数是 VARIENT_BOOL类型的。 VARIANT_TRUE是可见, VARIANT_ FALSE是隐藏 OnQuit 无论是用户关闭浏览器还是开发者调用

Quit方法,当IE退出时就会激发OnStatusBar 与OnMenuBar调用方法相同,标示状态 栏是否可见。 OnToolBar 调用方法同上,标示工具栏是否可见。OnVisible 控制窗口的可见或隐藏,也使用一个 VARIENT_BOOL类型的参数StatusTextChange 如果要改变状态栏中的文字,这个事件就会 被激发,但它并不理会程序是否有状态栏TitleChange Title有效或改变时激发 一些使用技巧 1.禁止右键 看到很多关于WebBrowser控件禁止右键的提问,回复的方法很多,其中有提到使用微软提供的Webbrowser扩展COM服务器对象(WBCustomizer.dll),但是该方法在我们想使用Webbrowser编辑网页 (Webbrowser1.Document.execCommand "editMode")的时候有很多弊端,比如不能显示选中的文本等。另有些方法也就不用一一列举了。 这儿我想提到的是关于MSHTML.HTMLDocument 引用Microsoft HTML OBject Library Rem #窗体代码# Dim WithEvents M_Dom As MSHTML.HTMLDocument Private Function M_Dom_oncontextmenu() As Boolean M_Dom_oncontextmenu = False End Function Private Sub Webbrowser1_DownloadComplete() Set M_Dom = Webbrowser1.Document End Sub Rem 好了,右键菜单没有了 ===================================================================== ==== 2、控件调用和获得收藏夹里面 基本上用 specialfolder(6 ) 就可以得到收藏夹的路径, 然后你可以用dir去循环读入每个目录,然后dir里面的file, file的名字就是你要的收藏的名字, 路径可以自己根据从上面得到的路径去得到. 如果你不用dir也可以用vb的dir控件.

销售技巧和话术书籍

门店销售基础五步骤之迎宾 在大部分的销售生活用品的门店中,平时光顾的顾客数量一般,如果不改进,只凭借以前传统的经营模式,是很难赚到钱的,勉强温饱而已。所以,可以考虑放弃坐销,掌握主动权的方式。迎宾就是掌握主动权的最好方法之一。增加进店率,是提高业绩的直接方法。而迎宾,可以在这之中发挥出不可小觑的作用。 对于顾客而言,会影响他们参观的因素有很多,比如,好奇、实惠、需求等等,都是有可能的因素。而迎宾,可以给客户传达出店内有活动,有新品等信息,这样客户会引发好奇心等心理因素,进而进店去看看。互帮互助销售培训发现,通常而言,进店率越高,销售额越高,转化率不一定会提升。 要想把迎宾这一动作做到最好,一定要提前做好准备,这些都是提高销售额的基础。针对这一点,互帮互助销售培训总结出以下几点: 准备工作:店内产品的排放一定要整齐,物品也要常更新。而且,店内的销售人员,在衣着打扮上要得体。销售人员就相当于门店的另一种形象。给人的感觉越正规,那么客户的信任感就会越强。在门店外,还要张贴一些海报,这些都是可以给客户创造一种有活动的热闹气氛,增加刺激。如果条件允许,还可以在门口派发一些单页,这种广告形式成本很低,宣传也是最直接,所以经常被一些门店使用。转自;互帮互助销售培训 站位:在外迎宾时,销售人员最好站在离店一点五米左右的大门两侧,而且站立的姿势整齐划一,目光注视着顾客到来的方向。 接触顾客:营业员一定要面带微笑着去迎接顾客,这样会给顾客一种亲切感。尤其是,营业员自身要有一个良好的心情,这样才能带动客户的乐观情绪。因为人是有磁场的,潜移默化之间就可以把自己的情绪传递给别人,这点要格外的主意。当发单页时,要尽量多用尊称,语言简单明了。与客户接触的可能仅仅有几秒钟,如果不能尽量快的传达出信息,客户可能就已经走了。而且,在发单页时要注意,一定不要过度的纠缠顾客,这样很容易引起反感。即使无单页可派发,也要面带微笑。不管是语言也好,心情也罢,还有微笑,在迎宾之前最好做一个系统的训练,以防临场发挥失利。转自;互帮互助销售培训引领顾客进门:当顾客对店内的活动或者产品产生好奇时,营业人员应带及时把客户带进店里,并且用礼貌的手势和称谓。很多时候,客户是因为营业员的礼貌对待而不好意思拒绝才进店的。当顾客犹豫不决时,营业员的一个请的手势,立刻就会给客户指出一个方向,那么客户就很有可能沿着这个方向去做了。 在迎宾时,有一些行为一定要禁止。比如拍手。这种方式是极度错误的。可以换位思考一下,当我们进店购物时,来这么一出,不但不会有什么喜欢的感觉,反而很排斥。所以,一定要设身处地的为客户着想。 小学少先队组织机构 少先队组织由少先队大队部及各中队组成,其成员包括少先队辅导员、大队长、中队长、小队长、少先队员,为了健全完善我校少先队组织,特制定以下方案: 一、成员的确定 1、大队长由纪律部门、卫生部门、升旗手、鼓号队四个组织各推荐一名优

销售技巧和话术经典语句

销售技巧和话术经典语句 销售技巧和话术经典语句一: 1. 对销售人员来说,销售学知识是必须掌握的,没有学问作为根基的销售,只能视为投机,无法真正体会销售的妙趣。 2. 一次成功的推销不是一个偶然发生的故事,它是学习计划以及一个销售人员的知识和技巧运用的结果。 3. 推销完全是常识的运用,但只有将这些为实践所证实的观念运用在积极者身上,才能产生效果。 4. 在取得一鸣惊人的成绩之前,必须做好枯燥的准备工作。 5. 推销前的准备、计划工作,决不可疏忽轻视,有备而来才能胜券在握。准备好推销工具、开场白,该问的问题、该说的话,以及可能的回答。 6. 事前的充分准备和现场的灵感所综合出来的力量,往往很容易瓦解坚强对手而获得成功。 7. 最优秀的销售人员是那些态度最好、商品知识最丰富、服务最周到的销售人员。 8.对与公司有关的资料、说明书、广告等,均必须努力研讨、熟记。同时要收集竞争对手的广告、宣传资料、说明书等加以研讨、分析,以便做到知己知彼,采取相应对策。 9.销售人员必须多读些有关经济、销售方面的书籍、杂志,尤其必须每天阅读报纸,了解国家、社会消息、新闻大事,拜访客户这往往是最好的话题,且不致于孤陋寡闻,见识浅薄。 10. 获取订单的道路是从寻找客户开始的,培养客户比眼前的销售量更重要。如果停止补充新顾客、销售人员就不再有成功之源。 11. 对客户无易的交易也必然对销售人员有害,这是最重要的一条商业道德准则。

12.在拜访客户时,销售人员应当奉行的准则是即使跌倒也要抓一把沙,意思是销售人员不能空手而归,即使推销没有成交,也要为客户为你介绍一位新客户。 13. 选择客户、衡量客户的购买意愿与能力,不要将时间浪费在犹豫不决的人身上。 14. 强烈的第一印象的重要规则,是帮助别人感到自己的重要。2 \) L0 S- q& q9 x1 c 15.准时赴约,迟到意味着:我不尊重你的时间,迟到是没有任何借口的。假使无法避免迟到的发生,你必须在约定时间之前打通电话过去道歉,再继续未完成的推销工作。 16. 向可以做出购买决策的人推销,如果你的销售对象没有权力说买的话,你是不可能卖出什么东西的。 17. 每个销售人员都应当认识到,只有目不转睛地注视着你的可户,销售才能成功。 18、有计划且自然的接近客户,并使客户觉得有益处,而能顺利进行商洽,是销售人员必须事前努力准备的工作与策略 19、销售人员不可能与他拜访的每一位客户达成交易,他应当努力去拜访更多的客户来提高成交百分比。 20、要了解你的客户,因为他们决定着你的业绩。 21、在成为一个优秀的销售人员之前,你要成为一个优秀的调查员,你必须去发现、去追踪、去调查,直到摸准客户的一切,使他们成为你的好朋友为止。 22、相信你的产品是销售人员的必要条件,这份信心会传给你的客户,如果你对自己的商品没有信心,你的客户对他自然也没有信心,客户与其说是因为你说话的逻辑水平高而被说服,倒不如说他是被你的深刻信心所说服的。业绩好的销售人员经得起失败,部分原因是他们对于自己和所推销的产品有不折不扣地信心。 24、了解客户并满足他们的需要,不了解客户的需求,就好像在黑暗中走路,白费力气又看不到结果

电脑的基本常识和操作方法

电脑的基本常识和操作方法 1、电脑由哪几部分组成? 从外观上看,电脑是由:主机(主要部分)、输出设备(显示器)、输入设备(键盘和鼠标)三大件组成。 从逻辑组成来看,电脑可以分为五大部分:控制器、运算器、存储器、输入设备、输出设备。 2、什么是电脑配置?如何查看电脑的配置? 电脑的配置是指电脑的硬件基本信息,如CPU型号、硬盘大小、显示器尺寸等。方法:①桌面查看。“我的电脑”-“属性”,可查看系统版本、CPU 型号、内存大小;若点“常规”-“设备管理器”,可查看CPU核心数、硬盘型号及大小、光驱等配置;若点“高级”-“性能设置”-“视觉效果”或“高级”,可以查看视觉效果、虚拟内存等设置。 ② “系统工具”查看。单击“开始”-“程序”-“附件”-“系统工具”-“系统信息”,即可查看电脑的详细配置。 ③软件查看。下载安装鲁大师、EVEREST、Windows优化大师、超级兔子等,也可查看详细配置,而且这些软件还可以对电脑的性能进行测试。 ④通过控制面板查看。(略) ⑤使用cmd命令:dxdiag。(略) 3、什么是操作系统?Windows系统有哪些? 现在常用的是什么系统? 操作系统(Operating System,简称OS)是一组管理电脑硬件与软件资源的程序。现在较常见的是由美国微软公司开发的窗口化操作系统,即Windows操作系统,如Windows 95、Windows 98、Windows 2000、Windows XP、Windows Vista、Windows 7、Windows8、Windows 10(按低级版本到高级版本排列)。其中以Windows 7使用最普遍、最广泛、最流行、操作最方便,不过现在新买的笔记本一般都是Win 10系统的,win10是目前最高级、功能最强大的系统,是未来市场的主流,但win10占用空间大、对电脑配置要求高(很多旧电脑都不适合装win10系统),操作没有XP方便,且兼容性没有XP好。 4、我们常说的C、D、E、F盘是什么意思? 我们常说的C、D、E、F盘其实是硬盘(Hard Disk Drive 简称HDD,又称硬盘驱动器)的分区。

C# WinForm开发系列 - WebBrowser

C# WinForm开发系列 - WebBrowser 2009-12-14 14:19:21 标签:C#-WebBrowser休闲WinForm开发系列 介绍Vs 2005中带的WebBrowser控件使用以及一些疑难问题的解决方法, 如如何正确显示中文, 屏蔽右键菜单, 设置代理等; 收集的文章中有可能还带了一些https://www.wendangku.net/doc/1c17419309.html,开发使用微软的WebBrowser进行页面打印方面文章. 01. vs2005中的WebBrowser控件的简单应用 02. WebBrowser控件的简单应用2 03. WebBrowser控件应用:弹出新窗体和关闭窗口 04. WebBrowser控件应用:播放PPT文件 05. WebBrowser控件使用技巧分享 06. .Net 2.0实例学习:WebBrowser页面与WinForm交互技巧 07. WebBrowser脚本错误的完美解决方案 08. Winform: use the WebBrowser to display XML with xslt, xml, xslt 转 html 字符串 09. 使用Vs2005打造简单分页浏览器(1)原创 10. 利用WebBrowser彻底解决Web打印问题 11. WebBrowser 12. WebBrowser控件使用详解 13. webBrowser.execWB的完整说明 14. C#中WebBrowser的使用 15. C#中实现WebBrowser控件的HTML源代码读写 16. Webbrowser控件史上最强技巧全集 17. 利用WebBrowser实现Web打印的分析 18. 利用webBrowser获取框架内Html页面内容

销售技巧和话术大全

感谢您的阅读,希望能帮助到您 销售技巧和话术大全 导读:本文是关于销售技巧和话术大全,希望能帮助到您! 一、长生剑(提示引导法):潜意识是一部车子的引擎,意识只是车子的外壳。当我们现在正在谈提示引导的时候,你会注意看以下的文章; 当你注意阅读的时候,你会不自觉的吞口水; 当你感到你吞口水的动作增加的时候,你会开始有一些特别的感觉,你会感觉到我为什么会知道你吞口水的动作会增加,你可能不了解我为什么会了解,没有关系,你只要笑一笑就可以了。刚才过程当中你是否开始吞口水?这是提示引导,一个好的沟通者你听他说话会很顺畅,你不会产生抗拒。 如何去提示引导一个人呢?在做提示引导的时候,请你避免引起一个人的负面连结或观点。什么叫负面连接或观点?现在请你千万不要想象你的手上拿了一颗柠檬,你也不要想象你正在掌起柠檬张开嘴往嘴里挤汁,你千万不要感觉柠檬汁滴在嘴里那种酸味,请你千万不要去想象。你有没有觉得你的口水分泌增加'我郁叫你不要去想柠檬了,可你却偏偏要去想柠檬和酸味,人在沟通的时候会常常引导人进入负面或容易想到负面。 提示引导的方式有两种方式:一是叫做因果提示——而且、并且。第二种是:会让你,会使你。这就是一种标准的催眠术语的话。假设你是销售房地产的,你怎么样可以设计一套方式让你能够在不断叙诉的情况之下说服对方,你可以说:“张小姐,你现在正在听我跟你介绍房子的优点的时候,就会开始注意到你如果

感谢您的阅读,希望能帮助到您。住到这个房子里面你会多么的舒服。”这句话顺畅不易引起抗拒。 提示引导常常是因为之前叙诉一些事情,讲的是前因,要把后果连接起来,后果是要传达什么信息。第一种方式是用“而且”、“并且”来连接,举例:“张先生,我知道你现在正在考虑到价格的问题。而且你也会了解品质跟价钱没有办法兼得. 因为一分钱一分货。”最好的方式是用“会让你”或“会使你” ,例如说:“当你正在考虑到要买保险的时候,会让你想象到给你的家人和孩子一份安全的保障是多么重要。”这种作法会把顾客的抗拒程度降低很多。提示引导有两条原则:第一不要和他人说不能什么; 第二把前 因后果用一些连接词连接起来,然后去叙述他赞成同意的事情,不断地叙述重复他现在目前的身体状态,心理状态。 二、孔雀翎(二选一法则): 孔雀翎是一种暗器,美的让人忘乎所以的暗器。孔雀翎代表的是一种必胜的信念,一种绝对成交,一种不达目的誓不罢休的态度。 不要问:“你要不要买”,应该问:“你喜欢A 还是B?”“你要2 个还是3 个”不要问对方有没有空、有没有时间、去不去. 间一个人去不去看电影,你会得到两个答案:去或不去; 要问:“我们周六去看电影还是周日,”给他一个机会迭择。二选一法则有适当的使用的时间,很多销售技巧培训讲师或机构并没有真正理解“适当的使用时间”的重要含义,没有进入最后阶段的时候,不要动不动就使用二选一法则,对方尚未了解你到底要跟他沟通什么,销售什么,还未产生兴趣,你突然问他你打算什么时候购买. 开枪 感谢您的阅读,希望能帮助到您。时

DELPHI 中WEBBROWSER控件详解实例

Delphi中WebBrowser控件详解实例 2008-10-18下午06:58 很久都没有原创了,前几天帮朋友做了个网址发布程序,主要应用到了WebBrowser控件。今天主要给大家演示一下过程,让大家学习一下Delphi工具。 WebBrowser功能: 1。自动加载网页 2。去除WebBrowser滚动条 3。WebBrowser自身打开页面 4。禁止右键 1。首先,新建一个FROM窗体: 2。加入一个WEBBROWSER控件

3。调整后如下: 4.这样一个webbrowser就完成了,下一步我们来让程序打开后自动加载一个网页。 核心代码:WebBrowser1.Navigate('https://www.wendangku.net/doc/1c17419309.html,'); 双击窗体灰色处,对窗体进行初始化,在代码窗口中输入(Begin与End间输入核心代码): procedure TForm1.FormCreate(Sender:TObject); begin WebBrowser1.Navigate('https://www.wendangku.net/doc/1c17419309.html,');//窗体初始化完成WEBBROWSER加载一个网页end; 5。下面我们来实现禁止WEBBROWSER控件的滚动条功能:

核心代码:WebBrowser1.oleobject.Document.body.Scroll:=‘no’; 利用这个代码去掉滚动条的前提是webbrowser中必须有打开的网页,也就是在网页加载完完毕后再去掉滚动条。所以首先要判断页面是否加载完毕,如果加载完毕,就执行上面的语句 去掉滚动条。这时就要引入一个按扭控件来触发程序 加入SPEEDBUTTEN 调整形后:

office办公软件使用技巧大全

办公软件使用技巧 1.同时保存所有打开的Word文档 有时在同时编辑多个Word文档时,每个文件要逐一保存,既费时又费力,有没有简单的方法呢?在按下Shift键的同时,单击“文件”菜单,大家看,已经多出了“同时保存”和“同时关闭”命令,这可就方便多了 2.巧妙设置文档保护 在用Word 2000/XP打印一份文件时,忽然头儿有要事吩咐,要暂时离开一下,关闭文件吧,既费事又没必要,但又不想辛辛苦苦写的文件被别人破坏了。怎么办呢?执行“工具”菜单中的“保护文档”命令,在弹出的窗口中选择“保护窗体”,然后设上密码。怎么样,光标跑到了文件头,任你怎么移动鼠标、敲击键盘就是无法编辑了,不错吧。等回来时,执行“工具”菜单中的“解除文档保护”命令,一切又正常了。 3.编辑长文件更轻松 相信大家都有这样的经历:在使用Excel、Word编辑长文档时,有时需要将文章开始的多处内容复制到文章末尾。但通过拖动滚动条来回移动非常麻烦,还会出错。其实只要将鼠标移动到滚动条上面的适当位置,发现鼠标指针变成双箭头,此时按住鼠标左键

向下拖动,文档编辑区会被一分为二。你只需在上面编辑区找到文章开头的内容,在下面编辑区找到需要粘贴的位置,这样你就可以复制内容了,而不必来回切换。这种方法特别适合复制相距很远且处数较多的内容。 4.给WPS文档添加水印 先用作图软件(画笔工具等)制作一张色彩非常淡的图片(直接将Word的水印效果图“抓”下来也行),然后打开需要添加水印的WPS文档,执行“格式→页面背景→设置”命令,打开“设置背景”对话框,切换到“图片”标签下,按“选择图片”按钮,选中刚才制作的图片,并进行适当设置后确定,就可以为文档设置上水印了。5.在金山文字中快速打开“页面设置” 在用金山文字2002处理文档时,一个最常用的操作就是设置页面。先执行“视图→标尺→水平(垂直)标尺”命令,展开“水平(垂直)标尺”打开,然后用鼠标在水平(垂直)标尺上双击,即可快速打开“页面设置”对话框,对页面进行设置了。 6.在Excel中插入拼音 在我们使用Excel时,常常会遇到十分孤僻的字,但加上拼音注释就能使人看得更明白。具体的方法是:选中想要加入拼音注释的表格,打开Excel的菜单栏中的“格式”菜单,选中“拼音信息/设置”

VB WEBBROWSER控件详解

vb+Webbrowser控件详解 2007-12-2218:22 1、获得浏览器信息: Private Sub Command1_Click() WebBrowser1.Navigate"https://www.wendangku.net/doc/1c17419309.html," End Sub Private Sub Command2_Click() Dim oWindow Dim oNav Set oWindow=WebBrowser1.Document.parentWindow Set oNav=oWindow.navigator Debug.Print https://www.wendangku.net/doc/1c17419309.html,erAgent Set oWindow=Nothing Set oNav=Nothing End Sub 点击Command1浏览网页,点击Command2在立即窗口中输出浏览器信息。 2、弹出Webbrowser消息窗口 Dim oWindow Set oWindow=WebBrowser1.Document.parentWindow oWindow.confirm"abcd" VB调用webbrowser技巧集2 向Webbrowser中写入HTML内容的几种方法 首先在Form_Load中加入 WebBrowser1.Navigate"about:blank" 确保Webbrowser1可用 方法1: Dim s As String Dim stream As IStream s="" s=s+"" s=s+"" s=s+"

hello world " s=s+"" s=s+" WebBrowser1.Document.Write s 方法2: Dim o Set o=WebBrowser1.Document.selection.createrange Debug.Print o If(Not o Is Nothing)Then o.pasteHTML"哈哈" Set o=Nothing End If 方法3: '插入文本框 Dim o Set o=WebBrowser1.Document.selection.createrange o.execCommand"InsertTextArea",False,"xxx" vb调用Webbrowser技巧集3 1、页面滚动: Private Sub Command2_Click() WebBrowser1.Document.parentwindow.scrollby0,30 End Sub Private Sub Form_Load() WebBrowser1.Navigate"https://www.wendangku.net/doc/1c17419309.html," End Sub 点击Command2就可以使当前页面向下滚动30像素

实用电脑文件整理技巧(干货分享)

实用电脑文件整理技巧 一.硬盘分区 C盘_系统盘:一般不要在C盘安装程序,也不往里面存放大文件(其实在C盘安装软件对开机清理会很麻烦) D盘_程序盘:只安装程序。另外软件的工作目录、缓存目录、下载目录也设置在D盘(1,工工作目录的;2,缓存目录:比如酷狗,缓存音乐时也需要空间的;3,下载目录,如迅雷;4,系其他盘……根据自己的习惯分区即可(无非就是工作盘,资料盘,娱乐盘等)。 二.文件分类 一千个人有一千零一种对文件分类的方法,对于任何一种分类法来说,适合你的是才是最好的方法。可参考以下建议。 把有关的文件存放在一起,而不去管他们的格式(对于工作文件尤其应当重视,这样查找起来成的区分开来(处理中的、待处理的文件,建议放在桌面,这样可以随时警告自己,要尽快的处理当一个子目录中的文件过多时,你就应该继续往下建立子目录(一个文件夹中有上百文件的话分类的细化就意味着层级增多。层级越多,浏览的效率就会越低,所以整个结构最好控制在三越常用的类别,级别就应该越高(意味着可以更快的访问),你可以选择将目录的层级上调,任何大目录下建议都建立一个名为“其他”的文件夹,这个文件夹存放两类文件:1.实在不好目录保存,所以暂时存放在”其他“里 多媒体文件是一个大分类,详细说明 图片:木有用过软件,不过大部分知友都推荐用Picasa 音乐:音乐发烧友们已经讨论的很清晰了-如何整理音乐文件? 文本:对于文本文件,如@Shinji 所言:不要把文本放在一个个doc文件中,最好使用笔记软理(当然小说之类比较大的就不要了) Word/PPT/Excel:windows系统允许对其添加标记(添加标记的地方在细节窗格,具体:文件重要:也有一些人比较懒,不愿意每次下载文件就分类存放,比如我。所以我在桌面新建了一接扔里面,当文件累积到一定数量时,再进行分类整理(容忍底线有两条:1,文件太多影响了浏========================友情提示======================== 任何分类法的原则必须且只能是:为了更快找到需要的文件。 一切与此原则相悖的分类方法都应舍弃。 三.文件命名 文件的命名必须重视,建议用容易记住的词给文件命名,方便以后检索。这能让你不需要打开 1.尽量关联起文件内容,越详细越好 001.avi,显然,不打开文件你是不会知道内容到底是什么 苍井そら.avi,那么你就知道它的内容是什么了 20080319苍井そら.avi,你知道这是什么时候拍的片了 最详细的命名,应该是有时间,有番号,有人物,有类型,有星级……比如:[ONED-944]SM-ギリギS1 NO.1 STYLE) 2.按照时间线命名,适用于工作文件 比如我大一的时候学习C语言,我对文件的命名是 120912_helloworld.cpp 121013_for循环练习.cpp 121122_calculator.cpp

工业品销售技巧和话术大全

工业品销售技巧和话术大全 随着国内市场化经济的日益成熟,从事销售工作的大队伍也在不断扩大。据相关部门统计,在国内从事销售工作的人员超过了二千万。每天都有新人踏上销售的征途,每天也有人在逃离销售的行列。销售工作看似简单,似乎对学历,年龄,性别等都无特别的界定;但销售工作又是那么复杂,同样从事销售工作的人,有的拿着上百万的薪资,而绝大多数却只有三千左右的收入。归根结底,从事销售工作是靠业绩说话的,每个企业都是论功行赏。 工业品的销售有五大特点: 1、项目成交周期较长,需多次沟通才能解决问题。 2、项目销售金额偏大,客户选择供应商非常慎重。 3、非常重视售后服务,作为选择供应商的重要的因素。 4、客户选择供应商非常慎重,需经过多个部门来决心。 5、人与产品缺一不可,甚至人比产品来的更重要。 因而从事工业品销售的难度更大,对销售人员的能力和素养要求更高。工业品销售人员不但要懂市场,而且要懂产品,懂技术。不但是销售策略的规划师和谋划着者;而且是销售工作的执行者和推动者。不但要了解客户的核心需求,而且掌握客户决策人的性格特征,兴趣爱好,价值取向等。不但需具备卓越的沟通能力,敏锐的洞察能力,快捷的反应能力以及果敢的决策能力;而且还需要具备人脉管理能力,资源调配能力,过程管控能力等。 某家节能设备的企业有两位营销人员,向各企业推广其节能设备;三个月后;一位营销人员空空而归,另一位营销人员签回了数百万元的订单。二者之间为什么差异如此之大呢?重要原因在于能力的差异 两手空空的营销人员见到准客户时会说:“你了解我公司的产品吗?我公司产品是由我公司独立研发,新型的节能产品;获得国家十几项专利,并被评选为当代最节能的产品,能有效帮助企业节能20%--------”他一口气说了大半个小时,客户说:“我公司暂时不需要,等有需要了再与你联系。”该销售员似乎口才流利,介绍产品滔滔不绝;但客户最终只是敷衍一句,没了下文了呢?他只是在“王婆卖瓜,自吹自夸”;话虽多,但每说到客户心坎上。 另一位签回数百万元订单的营销人员是这样说的:“王总!你是否觉得现在市场竞争压力越来越大,企业的利润约来越薄呢? 王总说:“是的!我们现在产能是大了,但利润却越来越低了!” 营销人员说:“要提高企业的利润的最佳途径是减低生产成本呢,还是拉高产品的价

c#对WebBrowser的扩展资料汇总

C#Webbrowser中屏蔽弹出窗口及脚本错误提示 当IE浏览器遇到脚本错误时浏览器,左下角会出现一个黄色图标,点击可以查看脚本错误的详细信息,并不会有弹出的错误信息框。当我们使用WebBrowser控件时有错误信息框弹出,这样程序显的很不友好,而且会让一些自动执行的程序暂停。我看到有人采取的解决方案是做一个窗体杀手程序来关闭弹出的窗体。今天探讨的方法是从控件解决问题。 1、SHDocVw.dll 在COM时代我们使用的WebBrowser控件是SHDocVw.dll。屏蔽错误信息的方法很简单使用下面的一句就可以搞定。 [c-sharp]view plaincopyprint? 1.WebBrowser1.Silent = true; 1.webBrowser1.ScriptErrorsSuppressed = true;

1.//捕获控件的错误 2.this.WebBrowser.Document.Window.Error += new HtmlElementErrorEventHandler(Wi ndow_Error); 3.//对错误进行处理 4.void Window_Error(object sender, HtmlElementErrorEventArgs e) 5.{ 6. // 自己的处理代码 7. e.Handled = true; 8.}

3、上面的方法对于多个框架嵌套等等的情形还是不能很好的解决。 为了彻底解决这个问题,我们借助AxWebBrowser来解决WebBrowser的问题。 我们定义一个自己的类,他的父类是WebBrowser,以后使用这个类就可以了。在这个类的定义中需要引用SHDocVw。 [c-sharp]view plaincopyprint? 1.class EWebBrowser : System.Windows.Forms.WebBrowser 2.{ 3. SHDocVw.IWebBrowser2 Iwb2; 4. 5. protected override void AttachInterfaces(object nativeActiveXObject) 6. { 7. Iwb2 = (SHDocVw.IWebBrowser2) nativeActiveXObject; 8. Iwb2.Silent = true; 9. base.AttachInterfaces(nativeActiveXObject); 10. } 11. 12. protected override void DetachInterfaces() 13. { 14. Iwb2 = null; 15. base.DetachInterfaces(); 16. } 17.} 18. 19. 20. 21.//项目中添加Micrsoft.mshtml引用 https://www.wendangku.net/doc/1c17419309.html,ing mshtml; 23. 24.private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventAr gs e) 25.{ 26. IHTMLDocument2 vDocument = (IHTMLDocument2)webBrowser1.Document.DomDocum ent;

电脑知识及技巧大合集.e

?恐怕这是大家平时经常要问的一个问题,但在我们的XP系统中,要 想知道今天是星期几还必须双击打开时钟程序才行,而简单的将鼠标悬停在时钟上面是无法看到的,其实,XP是支持这种星期显示的,而且只需要进行一下简单的设置便能实现。 1. 点击“开始”菜单→“设置→控制面板”,找到并双击“区域与语言选项”图标 2. 然后,在弹出的设置窗口中点击“区域选项”标签→“自定义”按钮 3. 接着,点击“自定义区域选项”窗口中的“日期”标签,在最下面的“长日期格式”后面加上字母 dddd, 4. 最后,点击“确定”按钮退回到控制面板。此时再将鼠标悬停到时钟上时,您便会惊喜得发现,此时的系统时钟已经可以提示当天的星期了. .关闭“新安装程序”的通知功能 在任务栏上点击右键,选择“属性”,在弹出窗口选中“开始菜单”,点击“自定义”按钮,再选择“高级”,把“突出显示新安装的程序”前面的“√”去掉即可。 对“我的电脑”点击右键,在选择的“属性”→“高级”中点击“错误报告”,选择“禁用错误汇报”即可。 打开“控制面板”中的“安全中心”点击窗口左边的“更改‘安全中心’通知我的方式”,把其中三项的“√”全部去掉即可。 浏览器“弹出窗口阻止程序”的通知功能 打开IE浏览器,选中菜单栏的“工具弹出窗口阻止程序”→“弹出窗口阻止程序设置”,把“阻止弹出窗口时播放声音”和“阻止弹出窗口时显示信息栏”前面的“√”去掉即可。 这样在浏览网页时除单击鼠标左键外,其他任何形式的鼠标点击或组合点击,都将出现“版权所有(C),严禁复制!”的提示框。 对于以上鼠标右键禁用的破解是很容易的,方法是:先选中目标,然后在目标上按下鼠标右键,此时会弹出提示窗口,这时不要松开右键,将鼠标指针移到提示窗口的“确定”按钮上,然后按下左键。现在松开鼠标左键,限制窗口被关闭了,再将鼠标移到目标上松开鼠标右键,呵呵,弹出了鼠标右键菜单,限制取消了! 除此以外,我们还可以按Shift+F10或按动键盘上与右手边的Ctrl键紧挨着的那个键,都可以轻松的破解上面这种对鼠标右键的屏蔽。 最近在某网页中又遇到一种新的屏蔽方法,使用上面这些破解方法无效。关键代码如上二所示

使用WebBrowser 控件打开Office文档

如何使用WebBrowser 控件在Visual C# 2005 或Visual C# .NET 中打开Office 文档 查看本文应用于的产品 本文的发布号曾为CHS304662 有关本文的Microsoft Visual Basic .NET 版本,请参阅304643。 本页 ?概要 ?更多信息 o创建可打开Office 文档的Visual C# 应用程序 o使用WebBrowser 控件的注意事项 o将WebBrowser 控件与2007 Microsoft Office 程序一 起使用时的注意事项 ?参考 展开全部| 关闭全部 概要 您可能希望直接在Microsoft Visual C# 窗体中显示或嵌入Microsoft Office 文档。Microsoft Visual C# 2005 和Microsoft Visual C# .NET 不提供用于在窗体中嵌入Office 文档的OLE 控件。如果希望嵌入现有文档并将其作为Visual C# 窗体内的就地ActiveX 文档对象打开,一个可能的解决方案是使用Microsoft WebBrowser 控件。 本文阐述如何使用WebBrowser 控件在Visual C# 窗体内浏览到现有Office 文档并显示它。回到顶端 更多信息 ActiveX 文档是比传统OLE 对象更像ActiveX 控件的可嵌入OLE 对象。与传统嵌入对象不同的是,ActiveX 文档不是作为更大文档中所包含的对象而设计的。其本身可以算作是仅供查看(如用Microsoft Internet Explorer 查看)或是与其他文档(如Microsoft Office 活页夹文件)一起集中到单个资源的完整文档。WebBrowser 控件中承载的ActiveX 文档始终是活动的;因此,与传统的OLE 嵌入对象不同,无需就地激活。 尽管Visual C# 2005 和Visual C# .NET 当前不支持直接承载ActiveX 文档,但您可以使用WebBrowser 控件来实现此目的。WebBrowser 控件(Shdocvw.dll) 是Internet Explorer 的一部分,并且只能在安装了Internet Explorer 的系统上使用。

如何提高保险销售技巧和话术:让客户买单的保险销售技巧和话术,客户绝对成交的保险销售技巧和话术

木秀于林话术学院整理制作 保险销售技巧和话术大全 保险销售业务员为了与客户成交,达到销售的目的,就需要学习和了解保险销售技巧和话术,还要根据不同客户、不同情况、不同环境,采取不同的成交策略,以掌握主动权,尽快达成交易。 下面介绍成交的销售技巧和话术,应针对不同的客户灵活使用。 1、直接要求法。 保险销售人员得到客户的购买信号后,直接提出交易。使用直接要求法时要尽可能地避免操之过急,关键是要得到客户明确的购买信号。例如“王先生,既然你没有其他意见,那我们现在就签单吧。”当保险销售人员提出成交的要求后,就要保持缄默,静待客户的反应,切忌再说任何一句话,因为你的一句话很可能会立刻引开客户的注意力,使成交功亏一篑。 2、二选一法。 保险销售人员为客户提供两种解决问题的方案,无论客户选择哪一种,都是保险销售人员想要达成的一种结果。运用这种方法,应使客户避开“要还是不要”的问题,而是让客户回答“要A还是要B”的问题。例如:“您是喜欢白色的还是红色的?”“您是今天签单还是明天再签?”“您是刷卡还是用现金?”注意,保险销售人员在引导客户成交时,不要提出两个以上的选择,因为选择太多反而令客户无所适从。 3、总结利益成交法。 保险销售人员把客户与自己达成交易所带来的所有的实际利益都展示在客户面前,把客户关心的事项排序,然后把产品的特点与客户的关心点密切地结合起来,总结客户所有最关心的利益,促使客户最终达成协议。 4、优惠成交法。 又称让步成交法,是指保险销售人员通过提供优惠的条件促使客户立即购买的一种方法。在使用这些优惠政策时,保险销售人员要注意三点: (1)让客户感觉他是特别的,你的优惠只针对他一个人,让客户感觉到自己很尊贵很不一般,这会带给客户非常好的心理感受。 (2)千万不要随便给予优惠,否则客户会提出更进一步的要求,直到保险销售人员不能接受的底线。 (3)表现出自己的权力有限,需要向上面请示:“对不起,在我的处理权限内,

电脑键盘常识大全

键盘各功能键知识你知多少? ESC 进入退出键 功能:快速进入或快速退出程序. Tab 跳格键 功能:在编辑文本时按一次跳8个字符,相当于按八个空格,在填表格时,按一次,即可跳到下一格. Caps Lock 大小写转换键 功能:在编辑文本时,按一次可切换到大写,再按可返回. Shift 上档键 功能: 1.在编辑文本时,按住不放,可输入大写字母. 2.需要输入标点符号时,按住,另一只手再按键盘上对应的符号,即可输入. 3.Shift+键盘的方向键,可选定文本. 4.在删除文件时,按住Shift键.可不移到回收站,直接删除(要小心,这种方法删文件,删了以后,不用工具软件的话是找不回来的) 5,在选定文件(文本)时,按住Shift键,可连续选择多个文件(文本) [方法,在开始的地方鼠标单击,然后按住Shift键,在结束的地方单击,即可连续选择] 6.Shift+Ctrl可切换输入法.(键盘左边和键盘右边的有何不同呢?左边的是从上到下,而右边的是从下到上) 7.SHIFT+F10 相当于鼠标右键 Ctrl键 功能: 1.在编辑文本时,按住Ctrl+空格键,可快速切换中英文输入法 2.在选定文件(或文本)时,按住Ctrl键,可逐个选择文件,选完后,放开即可对文件(或文本)操作. 3.例.在输入网址时,只在地址栏输入qq,然后按Ctrl+回车,这时就会自动加,只要是com结尾的网址都可用 4.Ctrl+Esc键可打开开始菜单(和键盘上的Windows键功能一样) 5.Ctrl+C 复制(和鼠标右键菜单一样)

6.Ctrl+X 剪切(和鼠标右键菜单一样) 7.Ctrl+V 粘贴(和鼠标右键菜单一样) 8.Ctrl+D 删除(和鼠标右键菜单一样) 9.Ctrl+A 全选(和鼠标右键菜单一样) 10.Ctrl+Z 撤消上一次操作 11.ctrl+Home 将光标移动到文件开始部位或到达窗口的顶部. 12.Ctrl+End 将光标移动到文件的结束部位或到达窗口的底部. 13.Ctrl+Tab+Shift 大量快速标记文本 ALT键 功能: 1.ALT+F4 可关闭当前窗口(有时浏览网页时,突然弹出一个全屏方告,鼠标关闭不了,可以用组合键关闭) 2.按住ALT键,鼠标双击某个程序,即可打开该程序属性对话框(和鼠标菜单法一样,像网吧禁了右键的话,可以用这种方法) 3,Ctrl+ALT+DEL可调出任务管理器 4.ALT+Tab 可快速切换窗口 5.ALT+ESC 可快速切换窗口(以上面不同的是,逐个切换,不可选择,自己试下) Windows键(在换档键ALT的旁边) 功能: 1.按一次,显示开始菜单,再按缩回 2.windows+pause Break 显示该操作系统的属性 3.windows+E 打开我的电脑 4.windows+F 运行"搜索" 5.windows+R 打开"运行"窗口 6.windows+F1 打开"帮助"

如何提高白酒销售技巧和话术:白酒销售业务员沟通的几个注意点,白酒业务员如何使用销售技巧和话术

木秀于林话术学院整理制作 白酒销售技巧和话术大全 作为一个白酒销售业务员在与客户沟通的过程中,一定会遇到一些问题,这些问题都是可以用销售技巧和话术规避或解决的,白酒销售业务员如何正确用到销售技巧和话术,如何更好的促进白酒的销售呢,木秀于林话术学院认为有几个需要注意的要点。 1、白酒销售技巧和话术之:说话要有技巧 人们常说,"好话一句作牛做马都愿意",也就是说,人人都希望得到对方的肯定,人人都喜欢听好话。不然,怎么会有"赞美与鼓励让白痴变天才,批评与抱怨让天才变白痴",这一句话呢,在这个世界上,又有谁愿意受人批评?白酒销售业务员从事推销,每天都是与人打交道,赞美性话语应多说,但也要注意适量,否则,让人有种虚伪造作、缺乏真诚之感。 2、白酒销售技巧和话术之:要学会聆听 这似乎是个老生常谈的问题,人人都懂得“聆听”是交流与沟通的最重要的技巧。说简单了,就是要学会听话。聆听有三个主要内容:听、问、揣摩。 首先,白酒销售业务员要通过听,来让客户发表意见。这个关键点是自己少说话,记住当你没了解客户的意图前便自顾自的发表一通演说,那是很要命的事情,言多必失,这绝对是个真理。我们要将发挥和表演的空间让给客户,客户便会似专家一样,畅所欲言,获得了自尊心的满足。白酒销售业务员都有这么一个感觉,最难搞定的客户不是问题问的多的人,而是几乎不说话的人,当你费尽口舌、激情飞扬的介绍产品说了半天之后,客户面无表情,很平淡的回了你一句话:“好的,我知道了,考虑考虑再说。”完了,你傻眼了,这个客户什么意思呢?你搞了半天,还是没摸透他的意思。 其次,要学会适当的询问。询问的时机很重要,白酒销售业务员聆听的过程中,不能一言不发,当你没听懂客户的意思时,或者不能准确的把握客户的意图,你可以通过适当的发问,客户便会条件反射性的回答你的问题。这样,你才能听的更明白。 最后,要能够揣摩出客户的意思。当一番交流结束后白酒销售业务员听也听了,问也问了,倘若还没彻底弄清楚客户的意思,那就白搭了。因此,聆听的过程就是一个不断揣摩客户心理的过程,通过揣摩客户的意图,不断调整自己的应对思路,从而能够准确有效的与客户进行交流。 如果做不到以上三点,那么你这次沟通就是无效的,生意注定会失败。 3、白酒销售技巧和话术之:杜绝主观性的议题

相关文档
相关文档 最新文档