http://blog.csdn.net/tangyin025/article/details/8675513

添加CWebBrowser2类

右键项目-〉Add-〉Class...-〉MFC-〉MFC Class From ActiveX Control

在Available ActiveX controls中选择Microsoft Web Browser<1.0>,然后在左侧Interfaces中选择IWebBrowser2,在点击“〉”,就会在右侧出现CWebBrowser2,按Finish就会生成对应的头文件和cpp文件

添加CWebBrowser2控件

在对话框资源中,右键Insert ActiveX Control...,然后在弹出的对话框中选择Microsoft Web Browser,就会添加对应的控件了,对其使用Add Variable...就会自动添加CWebBrowser2成员变量并绑定控件了

添加必要的com事件处理,并实现DocHostUIHandler::GetHostInfo

我这边直接把4个代码文件贴上来:idispimp.h、idispimp.cpp、custsite.h、custsite.cpp

  1. /*
  2. * IDispimp.H
  3. * IDispatch
  4. *
  5. * Copyright (c)1995-2000 Microsoft Corporation, All Rights Reserved
  6. */
  7. #ifndef _IDISPIMP_H_
  8. #define _IDISPIMP_H_
  9. class CImpIDispatch : public IDispatch
  10. {
  11. protected:
  12. ULONG               m_cRef;
  13. public:
  14. CImpIDispatch(void);
  15. ~CImpIDispatch(void);
  16. STDMETHODIMP QueryInterface(REFIID, void **);
  17. STDMETHODIMP_(ULONG) AddRef(void);
  18. STDMETHODIMP_(ULONG) Release(void);
  19. //IDispatch
  20. STDMETHODIMP GetTypeInfoCount(UINT* pctinfo);
  21. STDMETHODIMP GetTypeInfo(/* [in] */ UINT iTInfo,
  22. /* [in] */ LCID lcid,
  23. /* [out] */ ITypeInfo** ppTInfo);
  24. STDMETHODIMP GetIDsOfNames(
  25. /* [in] */ REFIID riid,
  26. /* [size_is][in] */ LPOLESTR *rgszNames,
  27. /* [in] */ UINT cNames,
  28. /* [in] */ LCID lcid,
  29. /* [size_is][out] */ DISPID *rgDispId);
  30. STDMETHODIMP Invoke(
  31. /* [in] */ DISPID dispIdMember,
  32. /* [in] */ REFIID riid,
  33. /* [in] */ LCID lcid,
  34. /* [in] */ WORD wFlags,
  35. /* [out][in] */ DISPPARAMS  *pDispParams,
  36. /* [out] */ VARIANT  *pVarResult,
  37. /* [out] */ EXCEPINFO *pExcepInfo,
  38. /* [out] */ UINT *puArgErr);
  39. };
  40. #endif //_IDISPIMP_H_
  1. /*
  2. * idispimp.CPP
  3. * IDispatch for Extending Dynamic HTML Object Model
  4. *
  5. * Copyright (c)1995-2000 Microsoft Corporation, All Rights Reserved
  6. */
  7. #include "stdafx.h"
  8. #include "idispimp.h"
  9. #ifdef _DEBUG
  10. #define new DEBUG_NEW
  11. #undef THIS_FILE
  12. static char THIS_FILE[] = __FILE__;
  13. #endif
  14. // Hardcoded information for extending the Object Model
  15. // Typically this would be supplied through a TypeInfo
  16. // In this case the name "xxyyzz" maps to DISPID_Extend
  17. const   WCHAR pszExtend[10]=L"xxyyzz";
  18. #define DISPID_Extend 12345
  19. /*
  20. * CImpIDispatch::CImpIDispatch
  21. * CImpIDispatch::~CImpIDispatch
  22. *
  23. * Parameters (Constructor):
  24. *  pSite           PCSite of the site we're in.
  25. *  pUnkOuter       LPUNKNOWN to which we delegate.
  26. */
  27. CImpIDispatch::CImpIDispatch( void )
  28. {
  29. m_cRef = 0;
  30. }
  31. CImpIDispatch::~CImpIDispatch( void )
  32. {
  33. ASSERT( m_cRef == 0 );
  34. }
  35. /*
  36. * CImpIDispatch::QueryInterface
  37. * CImpIDispatch::AddRef
  38. * CImpIDispatch::Release
  39. *
  40. * Purpose:
  41. *  IUnknown members for CImpIDispatch object.
  42. */
  43. STDMETHODIMP CImpIDispatch::QueryInterface( REFIID riid, void **ppv )
  44. {
  45. *ppv = NULL;
  46. if ( IID_IDispatch == riid )
  47. {
  48. *ppv = this;
  49. }
  50. if ( NULL != *ppv )
  51. {
  52. ((LPUNKNOWN)*ppv)->AddRef();
  53. return NOERROR;
  54. }
  55. return E_NOINTERFACE;
  56. }
  57. STDMETHODIMP_(ULONG) CImpIDispatch::AddRef(void)
  58. {
  59. return ++m_cRef;
  60. }
  61. STDMETHODIMP_(ULONG) CImpIDispatch::Release(void)
  62. {
  63. return --m_cRef;
  64. }
  65. //IDispatch
  66. STDMETHODIMP CImpIDispatch::GetTypeInfoCount(UINT* /*pctinfo*/)
  67. {
  68. return E_NOTIMPL;
  69. }
  70. STDMETHODIMP CImpIDispatch::GetTypeInfo(/* [in] */ UINT /*iTInfo*/,
  71. /* [in] */ LCID /*lcid*/,
  72. /* [out] */ ITypeInfo** /*ppTInfo*/)
  73. {
  74. return E_NOTIMPL;
  75. }
  76. STDMETHODIMP CImpIDispatch::GetIDsOfNames(
  77. /* [in] */ REFIID riid,
  78. /* [size_is][in] */ OLECHAR** rgszNames,
  79. /* [in] */ UINT cNames,
  80. /* [in] */ LCID lcid,
  81. /* [size_is][out] */ DISPID* rgDispId)
  82. {
  83. HRESULT hr;
  84. UINT    i;
  85. // Assume some degree of success
  86. hr = NOERROR;
  87. // Hardcoded mapping for this sample
  88. // A more usual procedure would be to use a TypeInfo
  89. for ( i=0; i < cNames; i++)
  90. {
  91. if (  2 == CompareString( lcid, NORM_IGNOREWIDTH, (TCHAR*)pszExtend, 3, (TCHAR*)rgszNames[i], 3 ) )
  92. {
  93. rgDispId[i] = DISPID_Extend;
  94. }
  95. else
  96. {
  97. // One or more are unknown so set the return code accordingly
  98. hr = ResultFromScode(DISP_E_UNKNOWNNAME);
  99. rgDispId[i] = DISPID_UNKNOWN;
  100. }
  101. }
  102. return hr;
  103. }
  104. STDMETHODIMP CImpIDispatch::Invoke(
  105. /* [in] */ DISPID dispIdMember,
  106. /* [in] */ REFIID /*riid*/,
  107. /* [in] */ LCID /*lcid*/,
  108. /* [in] */ WORD wFlags,
  109. /* [out][in] */ DISPPARAMS* pDispParams,
  110. /* [out] */ VARIANT* pVarResult,
  111. /* [out] */ EXCEPINFO* /*pExcepInfo*/,
  112. /* [out] */ UINT* puArgErr)
  113. {
  114. // For this sample we only support a Property Get on DISPID_Extend
  115. // returning a BSTR with "Wibble" as the value
  116. if ( dispIdMember == DISPID_Extend )
  117. {
  118. if ( wFlags & DISPATCH_PROPERTYGET )
  119. {
  120. if ( pVarResult != NULL )
  121. {
  122. WCHAR buff[10]=L"Wibble";
  123. BSTR bstrRet = SysAllocString( buff );
  124. VariantInit(pVarResult);
  125. V_VT(pVarResult)=VT_BSTR;
  126. V_BSTR(pVarResult) = bstrRet;
  127. }
  128. }
  129. }
  130. return S_OK;
  131. }
  1. //=--------------------------------------------------------------------------=
  2. //  (C) Copyright 1996-2000 Microsoft Corporation. All Rights Reserved.
  3. //=--------------------------------------------------------------------------=
  4. #ifndef __CUSTOMSITEH__
  5. #define __CUSTOMSITEH__
  6. #include "idispimp.h"
  7. #include <mshtmhst.h>
  8. //
  9. // NOTE:
  10. // Some of the code in this file is MFC implementation specific.
  11. // Changes in future versions of MFC implementation may require
  12. // the code to be changed. Please check the readme of this
  13. // sample for more information
  14. //
  15. class CCustomControlSite:public COleControlSite
  16. {
  17. public:
  18. CCustomControlSite(COleControlContainer *pCnt):COleControlSite(pCnt){}
  19. protected:
  20. DECLARE_INTERFACE_MAP();
  21. BEGIN_INTERFACE_PART(DocHostUIHandler, IDocHostUIHandler)
  22. STDMETHOD(ShowContextMenu)(/* [in] */ DWORD dwID,
  23. /* [in] */ POINT __RPC_FAR *ppt,
  24. /* [in] */ IUnknown __RPC_FAR *pcmdtReserved,
  25. /* [in] */ IDispatch __RPC_FAR *pdispReserved);
  26. STDMETHOD(GetHostInfo)(
  27. /* [out][in] */ DOCHOSTUIINFO __RPC_FAR *pInfo);
  28. STDMETHOD(ShowUI)(
  29. /* [in] */ DWORD dwID,
  30. /* [in] */ IOleInPlaceActiveObject __RPC_FAR *pActiveObject,
  31. /* [in] */ IOleCommandTarget __RPC_FAR *pCommandTarget,
  32. /* [in] */ IOleInPlaceFrame __RPC_FAR *pFrame,
  33. /* [in] */ IOleInPlaceUIWindow __RPC_FAR *pDoc);
  34. STDMETHOD(HideUI)(void);
  35. STDMETHOD(UpdateUI)(void);
  36. STDMETHOD(EnableModeless)(/* [in] */ BOOL fEnable);
  37. STDMETHOD(OnDocWindowActivate)(/* [in] */ BOOL fEnable);
  38. STDMETHOD(OnFrameWindowActivate)(/* [in] */ BOOL fEnable);
  39. STDMETHOD(ResizeBorder)(
  40. /* [in] */ LPCRECT prcBorder,
  41. /* [in] */ IOleInPlaceUIWindow __RPC_FAR *pUIWindow,
  42. /* [in] */ BOOL fRameWindow);
  43. STDMETHOD(TranslateAccelerator)(
  44. /* [in] */ LPMSG lpMsg,
  45. /* [in] */ const GUID __RPC_FAR *pguidCmdGroup,
  46. /* [in] */ DWORD nCmdID);
  47. STDMETHOD(GetOptionKeyPath)(
  48. /* [out] */ LPOLESTR __RPC_FAR *pchKey,
  49. /* [in] */ DWORD dw);
  50. STDMETHOD(GetDropTarget)(
  51. /* [in] */ IDropTarget __RPC_FAR *pDropTarget,
  52. /* [out] */ IDropTarget __RPC_FAR *__RPC_FAR *ppDropTarget);
  53. STDMETHOD(GetExternal)(
  54. /* [out] */ IDispatch __RPC_FAR *__RPC_FAR *ppDispatch);
  55. STDMETHOD(TranslateUrl)(
  56. /* [in] */ DWORD dwTranslate,
  57. /* [in] */ OLECHAR __RPC_FAR *pchURLIn,
  58. /* [out] */ OLECHAR __RPC_FAR *__RPC_FAR *ppchURLOut);
  59. STDMETHOD(FilterDataObject)(
  60. /* [in] */ IDataObject __RPC_FAR *pDO,
  61. /* [out] */ IDataObject __RPC_FAR *__RPC_FAR *ppDORet);
  62. END_INTERFACE_PART(DocHostUIHandler)
  63. };
  64. class CCustomOccManager :public COccManager
  65. {
  66. public:
  67. CCustomOccManager(){}
  68. COleControlSite* CreateSite(COleControlContainer* pCtrlCont)
  69. {
  70. CCustomControlSite *pSite = new CCustomControlSite(pCtrlCont);
  71. return pSite;
  72. }
  73. };
  74. #endif
  1. //=--------------------------------------------------------------------------=
  2. //  (C) Copyright 1996-2000 Microsoft Corporation. All Rights Reserved.
  3. //=--------------------------------------------------------------------------=
  4. //
  5. // NOTE:
  6. // Some of the code in this file is MFC implementation specific.
  7. // Changes in future versions of MFC implementation may require
  8. // the code to be changed. Please check the readme of this
  9. // sample for more information
  10. //
  11. #include "stdafx.h"
  12. #undef AFX_DATA
  13. #define AFX_DATA AFX_DATA_IMPORT
  14. // NOTE: THis line is a hardcoded reference to an MFC header file
  15. //  this path may need to be changed to refer to the location of VC5 install
  16. //  for successful compilation.
  17. //#include <..\src\occimpl.h>
  18. #undef AFX_DATA
  19. #define AFX_DATA AFX_DATA_EXPORT
  20. #include "custsite.h"
  21. #include "App类的头文件"
  22. BEGIN_INTERFACE_MAP(CCustomControlSite, COleControlSite)
  23. INTERFACE_PART(CCustomControlSite, IID_IDocHostUIHandler, DocHostUIHandler)
  24. END_INTERFACE_MAP()
  25. ULONG FAR EXPORT  CCustomControlSite::XDocHostUIHandler::AddRef()
  26. {
  27. METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
  28. return pThis->ExternalAddRef();
  29. }
  30. ULONG FAR EXPORT  CCustomControlSite::XDocHostUIHandler::Release()
  31. {
  32. METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
  33. return pThis->ExternalRelease();
  34. }
  35. HRESULT FAR EXPORT  CCustomControlSite::XDocHostUIHandler::QueryInterface(REFIID riid, void **ppvObj)
  36. {
  37. METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
  38. HRESULT hr = (HRESULT)pThis->ExternalQueryInterface(&riid, ppvObj);
  39. return hr;
  40. }
  41. // * CImpIDocHostUIHandler::GetHostInfo
  42. // *
  43. // * Purpose: Called at initialization
  44. // *
  45. HRESULT FAR EXPORT  CCustomControlSite::XDocHostUIHandler::GetHostInfo( DOCHOSTUIINFO* pInfo )
  46. {
  47. METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
  48. pInfo->dwFlags = DOCHOSTUIFLAG_NO3DBORDER | DOCHOSTUIFLAG_SCROLL_NO;
  49. pInfo->dwDoubleClick = DOCHOSTUIDBLCLK_DEFAULT;
  50. return S_OK;
  51. }
  52. // * CImpIDocHostUIHandler::ShowUI
  53. // *
  54. // * Purpose: Called when MSHTML.DLL shows its UI
  55. // *
  56. HRESULT FAR EXPORT  CCustomControlSite::XDocHostUIHandler::ShowUI(
  57. DWORD dwID,
  58. IOleInPlaceActiveObject * /*pActiveObject*/,
  59. IOleCommandTarget * pCommandTarget,
  60. IOleInPlaceFrame * /*pFrame*/,
  61. IOleInPlaceUIWindow * /*pDoc*/)
  62. {
  63. METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
  64. // We've already got our own UI in place so just return S_OK
  65. return S_OK;
  66. }
  67. // * CImpIDocHostUIHandler::HideUI
  68. // *
  69. // * Purpose: Called when MSHTML.DLL hides its UI
  70. // *
  71. HRESULT FAR EXPORT  CCustomControlSite::XDocHostUIHandler::HideUI(void)
  72. {
  73. METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
  74. return S_OK;
  75. }
  76. // * CImpIDocHostUIHandler::UpdateUI
  77. // *
  78. // * Purpose: Called when MSHTML.DLL updates its UI
  79. // *
  80. HRESULT FAR EXPORT  CCustomControlSite::XDocHostUIHandler::UpdateUI(void)
  81. {
  82. METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
  83. // MFC is pretty good about updating it's UI in it's Idle loop so I don't do anything here
  84. return S_OK;
  85. }
  86. // * CImpIDocHostUIHandler::EnableModeless
  87. // *
  88. // * Purpose: Called from MSHTML.DLL's IOleInPlaceActiveObject::EnableModeless
  89. // *
  90. HRESULT FAR EXPORT  CCustomControlSite::XDocHostUIHandler::EnableModeless(BOOL /*fEnable*/)
  91. {
  92. METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
  93. return E_NOTIMPL;
  94. }
  95. // * CImpIDocHostUIHandler::OnDocWindowActivate
  96. // *
  97. // * Purpose: Called from MSHTML.DLL's IOleInPlaceActiveObject::OnDocWindowActivate
  98. // *
  99. HRESULT FAR EXPORT  CCustomControlSite::XDocHostUIHandler::OnDocWindowActivate(BOOL /*fActivate*/)
  100. {
  101. METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
  102. return E_NOTIMPL;
  103. }
  104. // * CImpIDocHostUIHandler::OnFrameWindowActivate
  105. // *
  106. // * Purpose: Called from MSHTML.DLL's IOleInPlaceActiveObject::OnFrameWindowActivate
  107. // *
  108. HRESULT FAR EXPORT  CCustomControlSite::XDocHostUIHandler::OnFrameWindowActivate(BOOL /*fActivate*/)
  109. {
  110. METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
  111. return E_NOTIMPL;
  112. }
  113. // * CImpIDocHostUIHandler::ResizeBorder
  114. // *
  115. // * Purpose: Called from MSHTML.DLL's IOleInPlaceActiveObject::ResizeBorder
  116. // *
  117. HRESULT FAR EXPORT  CCustomControlSite::XDocHostUIHandler::ResizeBorder(
  118. LPCRECT /*prcBorder*/,
  119. IOleInPlaceUIWindow* /*pUIWindow*/,
  120. BOOL /*fRameWindow*/)
  121. {
  122. METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
  123. return E_NOTIMPL;
  124. }
  125. // * CImpIDocHostUIHandler::ShowContextMenu
  126. // *
  127. // * Purpose: Called when MSHTML.DLL would normally display its context menu
  128. // *
  129. HRESULT FAR EXPORT  CCustomControlSite::XDocHostUIHandler::ShowContextMenu(
  130. DWORD /*dwID*/,
  131. POINT* /*pptPosition*/,
  132. IUnknown* /*pCommandTarget*/,
  133. IDispatch* /*pDispatchObjectHit*/)
  134. {
  135. METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
  136. return S_OK; // We've shown our own context menu. MSHTML.DLL will no longer try to show its own.
  137. }
  138. // * CImpIDocHostUIHandler::TranslateAccelerator
  139. // *
  140. // * Purpose: Called from MSHTML.DLL's TranslateAccelerator routines
  141. // *
  142. HRESULT FAR EXPORT  CCustomControlSite::XDocHostUIHandler::TranslateAccelerator(LPMSG lpMsg,
  143. /* [in] */ const GUID __RPC_FAR *pguidCmdGroup,
  144. /* [in] */ DWORD nCmdID)
  145. {
  146. METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
  147. return S_FALSE;
  148. }
  149. // * CImpIDocHostUIHandler::GetOptionKeyPath
  150. // *
  151. // * Purpose: Called by MSHTML.DLL to find where the host wishes to store
  152. // *    its options in the registry
  153. // *
  154. HRESULT FAR EXPORT  CCustomControlSite::XDocHostUIHandler::GetOptionKeyPath(BSTR* pbstrKey, DWORD)
  155. {
  156. METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
  157. return E_NOTIMPL;
  158. }
  159. STDMETHODIMP CCustomControlSite::XDocHostUIHandler::GetDropTarget(
  160. /* [in] */ IDropTarget __RPC_FAR *pDropTarget,
  161. /* [out] */ IDropTarget __RPC_FAR *__RPC_FAR *ppDropTarget)
  162. {
  163. METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
  164. return E_NOTIMPL;
  165. }
  166. STDMETHODIMP CCustomControlSite::XDocHostUIHandler::GetExternal(
  167. /* [out] */ IDispatch __RPC_FAR *__RPC_FAR *ppDispatch)
  168. {
  169. // return the IDispatch we have for extending the object Model
  170. IDispatch* pDisp = (IDispatch*)theApp.m_pDispOM;
  171. pDisp->AddRef();
  172. *ppDispatch = pDisp;
  173. return S_OK;
  174. }
  175. STDMETHODIMP CCustomControlSite::XDocHostUIHandler::TranslateUrl(
  176. /* [in] */ DWORD dwTranslate,
  177. /* [in] */ OLECHAR __RPC_FAR *pchURLIn,
  178. /* [out] */ OLECHAR __RPC_FAR *__RPC_FAR *ppchURLOut)
  179. {
  180. METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
  181. return E_NOTIMPL;
  182. }
  183. STDMETHODIMP CCustomControlSite::XDocHostUIHandler::FilterDataObject(
  184. /* [in] */ IDataObject __RPC_FAR *pDO,
  185. /* [out] */ IDataObject __RPC_FAR *__RPC_FAR *ppDORet)
  186. {
  187. METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
  188. return E_NOTIMPL;
  189. }

修改App类,截获COM容器事件

在自己的App类中添加一个成员,注意正确的include

  1. class CMyApp : public CWinApp
  2. {
  3. public:
  4. ...
  5. class CImpIDispatch* m_pDispOM;
  6. };

在CMyApp::InitInstance中替换原来的AfxEnableControlContainer(在生成项目时选中支持ActiveX容器,就会有这一项)

  1. BOOL CMyApp::InitInstance()
  2. {
  3. ...
  4. CWinAppEx::InitInstance();
  5. // Create a custom control manager class so we can overide the site
  6. CCustomOccManager *pMgr = new CCustomOccManager;
  7. // Create an IDispatch class for extending the Dynamic HTML Object Model
  8. m_pDispOM = new CImpIDispatch;
  9. // Set our control containment up but using our control container
  10. // management class instead of MFC's default
  11. AfxEnableControlContainer(pMgr);
  12. ...
  13. }

最后不要忘记在析构函数中清理m_pDispOM

转:CWebBrowser2去除边框、滚动条、右键菜单的更多相关文章

  1. Delphi中无边框窗体应用程序使任务栏右键菜单有效的方法

    最近在Delphi开发中用到了无边框窗体显示时,无法在任务栏使用右键弹出菜单的情况,经过整理,通过以下方法可以使右键菜单出现: procedure Tfrm_Base.InitSysMenu;var  ...

  2. WPf 带滚动条WrapPanel 自动换行 和控件右键菜单

    原文:WPf 带滚动条WrapPanel 自动换行 和控件右键菜单 技能点包括 WPf 样式的引用 数据的验证和绑定 比较适合初学者 前台: <Window.Resources> < ...

  3. Android GridView去除自带边框点击效果、去除右侧滚动条、禁止上下滑动

    一.去除自带边框点击效果: <com.example.gridview.MyGridView android:id="@+id/grid_upload_pictures" a ...

  4. VB6 Webbowser控件与JS交互,无边框和屏蔽右键菜单

    1. 屏蔽右键菜单  在菜单中单击"工程"->"引用",在列表中找到"Microsoft HTML Object Library"打上 ...

  5. AS3.0下去除flash右键菜单

    这两天工作中遇到一个问题,就是网页中内嵌的flash小游戏的用户体验,当鼠标在flash上点击右键时,出现的右键菜单中会有播放,停止等选项,虽然不会造成什么漏洞,但是体验非常差.在寻找解决方案的时候, ...

  6. python 通过js控制滚动条拉取全文 通过psutil获取pid窗口句柄,通过win32gui使程序窗口前置 通过autopy实现右键菜单和另存为操作

    1.参考 利用 Python + Selenium 自动化快速截图 利用 Python + Selenium 实现对页面的指定元素截图(可截长图元素) 使用python获取系统所有进程PID以及进程名 ...

  7. 去除 Git 安装后的右键菜单

    64位 windows 8.1 安装 Git 后,右键菜单多了3个选项(Git Init Here,Git Gui, Git Bash),但是用不着,需要删掉.方法如下: 1.在 CMD 中进入 Gi ...

  8. QTableWidget详解(样式、右键菜单、表头塌陷、多选等)

    在Qt的开发过程中,时常会用到表单(QTableWidget)这个控件,网上的资料不少,但是都是最基本的,有一些比较经常遇到的问题也说得不太清楚.所以,今天就在这里总结一下! 以下为个人模拟Windo ...

  9. 【C#】分享一个弹出容器层,像右键菜单那样召即来挥则去

    适用于:.net2.0+ Winform项目 ------------------201508261813更新(源码有更新.Demo未更新)------------------ 重新绘制调整大小手柄( ...

随机推荐

  1. OC 内存管理-01

    创建对象 .分配内存空间,存储对象 .初始化成员变量 .反回对象的指针地址 //过程 ()对象在完成创建的同时,内部会自动创建一个引用计数器,这个计数器,是系统用来判断是否回收对象的唯一依据, 当我们 ...

  2. postgresql学习文档

    字符串函数: http://www.php100.com/manual/PostgreSQL8/functions-string.html http://gavin-chen.iteye.com/bl ...

  3. 同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式

    1. 概念理解        在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式:   同步/异步主要针对C端: 同步:    ...

  4. iOS内存管理之浅见

    当我们用alloc.new.copy创建对象时,对象的应用计数为1,当把这个对象retain时.引用计数+1.当对这个对象发送release消息时,引用计数-1,当对象的引用计数为0时,系统回收这个对 ...

  5. encodeURI() 函数概述

    encodeURI() 函数的作用是将URI中的某些特定的字符以一位到四位的转义序列来替代,这些转义序列就是这些字符的UTF-8编码(如果说某些字符是由两个代替字符构成的,该字符也只会是四位的转义序列 ...

  6. "无法加载 DLL“oramts.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。" —— 的解决方法

       Oramts.dll 文件公开登记 Oracle 连接所涉及到在通过 Microsoft 分布式事务处理协调器 (MSDTC) 启动的事务中的公共 API. 在事务处理环境中运行时, Syste ...

  7. COGS 693. [SDOI2005]Antiprime数 唯一分解定理逆用

    693. Antiprime数 ★★   输入文件:antip.in   输出文件:antip.out   简单对比 时间限制:1 s   内存限制:128 MB 如果一个自然数n(n>=1), ...

  8. poj1840

    Eqs Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 15133   Accepted: 7426 Description ...

  9. 用javascript复制富文本

    由于项目需求,希望能够用javascript复制富文本格式的数据,例如全选一个网页Ctrl+C, Ctrl+V到一个word文档中,数据还是原来的格式,显示出来的样子也都和原来一样.现在希望使用jav ...

  10. Grafana---graph

    主面板简单的命名为Graph.它提供了一组非常丰富的图形选项. 单击面板的标题将显示一个菜单.edit选项为面板打开了额外的配置选项. 一.General general允许定制面板的外观和菜单选项. ...