346上位机VC MFC实现上网监控功能实现上网监控功能
346上位机VC MFC实现上网监控功能实现上网监控功能功能展示
工控软件一般都在工控机上运行,工控机上网就会带来一定风险,所以我们软件自带屏蔽功能就可以对恶意的网站进行过虑,当前历程就实现了这一功能,效果如图,点击开始监视,程序就会每隔1秒左右扫描用户打开的网址,并显示在列表框中,点击停止,可停止监视
要点提示
例程监控功能的实现主要是通过组件SHDocVw和MSHTML实现,SHDocVw的IwebBrowser2Ptr指针主要对应着IE浏览器,MSHTML组件的IHTMLDocument2Ptrl指针主要对应浏览器所浏览的内容,所以例程仅能监视IE浏览器上网址,但在工控机上基本也只会安装IE浏览器。例程实现过程是先通过SHDocVw的IShellWindowsPtr指针的GetCount方法获得浏览器的个数,再将IShellWindowsPtr指针的Item对象赋给IWebBrowser2Ptr指针,然后通过IWebBrowser2Ptrl指针的GetDocument函数获得IHTMLDocument2Ptr指针对象,最后通过此指针对象的Geturl()函数获得IE浏览器地址;
实现功能
1.新建基于对话框的应用程序
2.添加列表控件IDC_LIST1用于罗列出用户浏览的网址,添加两按钮<开始监视><停止监视>关联点击函数及添加计时器处理函数
void CGkbc8Dlg::OnTimer(UINT nIDEvent)
{
CListCtrl *pList = (CListCtrl *)GetDlgItem(IDC_LIST1);
BOOL bSame=FALSE;
int n = m_spSHWinds->GetCount();
for (int i = 0; i < n; i++)
{
_variant_t v = (long)i;
IDispatchPtr spDisp = m_spSHWinds->Item(v);
SHDocVw::IWebBrowser2Ptr spBrowser(spDisp);
MSHTML::IHTMLDocument2Ptr pDoc2=spBrowser->GetDocument();
if(pDoc2!=NULL)
{
BSTR bsurl=pDoc2->Geturl();
CString strurl=(CString)bsurl;
int count=pList->GetItemCount();
for(int p=0;p<=count;p++)
{
CString itemstr=pList->GetItemText(p,0);
if(itemstr==strurl)
bSame=TRUE;
}
if(bSame==FALSE)
pList->InsertItem(0,strurl,0);
bSame=FALSE;
}
}
CDialog::OnTimer(nIDEvent);
}
void CGkbc8Dlg::OnMonitor()
{
SetTimer(1,1500,NULL);
}
void CGkbc8Dlg::OnStop()
{
KillTimer(1);
}
3.在主对话框类中添加网络类的头文件及一变量#include "atlbase.h“ #include <Mshtml.h> #import "shdocvw.dll“ #import "mshtml.tlb“SHDocVw::IShellWindowsPtr m_spSHWinds;
4.在程序初始化时实现化变量及控件
CListCtrl *pList = (CListCtrl *)GetDlgItem(IDC_LIST1);
pList->SetExtendedStyle(LVS_EX_GRIDLINES);
pList->ModifyStyle(0,LVS_REPORT,0);
pList->InsertColumn(0, "IE地址", LVCFMT_LEFT, 500);
CoInitialize(NULL);
m_spSHWinds.CreateInstance(__uuidof(SHDocVw::ShellWindows));
我们来演示下功能实现的整个过程
如果您认可,可联系功能定制! 如果您着急,充值会员可直接联系发您资料!
|