控件ID可以在程序中查找或者自己根据ID类型定义更换 
源代码可在此处下载
 点击打开链接

http://download.csdn.net/download/zggzgw/10168993
毕竟查资料把积分花光了,所以收了点积分为下次查资料使用

// HTMLContrlDlg.cpp : 实现文件
//#include "stdafx.h"
#include "HTMLContrl.h"
#include "HTMLContrlDlg.h"
#include <mshtml.h>
#include <oleacc.h>
#include <atlbase.h>
#include <COMUTIL.H>
#include"myHead.h"
#include<ole2.h>
#pragma comment(lib,"ole32")
CComModule _Module;
#include<atlcom.h>
#pragma comment(lib,"comsupp.lib") #ifdef _DEBUG
#define new DEBUG_NEW
#endif
SpDoc spdoc[8];void FindWindowsHwnd(HWND hWnd);
CString strReadRate = NULL;// CHTMLContrlDlg 对话框BEGIN_DHTML_EVENT_MAP(CHTMLContrlDlg)DHTML_EVENT_ONCLICK(_T("ButtonOK"), OnButtonOK)DHTML_EVENT_ONCLICK(_T("ButtonCancel"), OnButtonCancel)
END_DHTML_EVENT_MAP()CHTMLContrlDlg::CHTMLContrlDlg(CWnd* pParent /*=NULL*/): CDHtmlDialog(IDD_HTMLCONTRL_DIALOG, IDR_HTML_HTMLCONTRL_DIALOG, pParent), m_SeqReadRate(_T("")), testNumber(_T("1")), csTestSize(_T("1000MB"))
{m_WinThread1 = NULL;m_WinThread = NULL;m_bBtnDn = FALSE;m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}void CHTMLContrlDlg::DoDataExchange(CDataExchange* pDX)
{CDHtmlDialog::DoDataExchange(pDX);DDX_Text(pDX, IDC_EDIT1_RADE, m_SeqReadRate);DDX_CBString(pDX, IDC_TESTNUMBER, testNumber);DDX_Control(pDX, IDC_TESTNUMBER, cbTestNumber);DDX_Control(pDX, IDC_TESTSIZE, cbTestSize);DDX_CBString(pDX, IDC_TESTSIZE, csTestSize);
}BEGIN_MESSAGE_MAP(CHTMLContrlDlg, CDHtmlDialog)ON_BN_CLICKED(IDC_BUTTON_OPEN, &CHTMLContrlDlg::OnBnClickedButtonOpen)ON_MESSAGE(WM_MYUPDATEDATA,OnUpdateMyData)ON_MESSAGE(WM_OPENWINDOWS,OpenMyWindows)ON_BN_CLICKED(IDC_BUTTON_SELECT, &CHTMLContrlDlg::OnBnClickedButtonSelect)ON_CBN_SELCHANGE(IDC_TESTNUMBER, &CHTMLContrlDlg::OnSelchangeTestnumber)ON_CBN_SELCHANGE(IDC_TESTSIZE, &CHTMLContrlDlg::OnSelchangeTestsize)ON_WM_MOVE()ON_WM_NCLBUTTONUP()ON_WM_NCLBUTTONDOWN()ON_WM_LBUTTONUP()ON_WM_DESTROY()ON_BN_CLICKED(IDC_BUTTON_ALL, &CHTMLContrlDlg::OnBnClickedButtonAll)
END_MESSAGE_MAP()// CHTMLContrlDlg 消息处理程序BOOL CHTMLContrlDlg::OnInitDialog()
{CDHtmlDialog::OnInitDialog();SetIcon(m_hIcon, TRUE);           // 设置大图标SetIcon(m_hIcon, FALSE);        // 设置小图标cbTestNumber.AddString("1");cbTestNumber.AddString("2");cbTestNumber.AddString("3");cbTestNumber.AddString("4");cbTestNumber.AddString("5");cbTestNumber.AddString("6");cbTestNumber.AddString("7");cbTestNumber.AddString("8");cbTestNumber.AddString("9");cbTestSize.AddString("50MB");cbTestSize.AddString("100MB");cbTestSize.AddString("500MB");cbTestSize.AddString("1000MB");cbTestSize.AddString("2000MB");cbTestSize.AddString("4000MB");return TRUE;
}void CHTMLContrlDlg::OnPaint()
{if (IsIconic()){CPaintDC dc(this); // 用于绘制的设备上下文SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);// 使图标在工作区矩形中居中int cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;// 绘制图标dc.DrawIcon(x, y, m_hIcon);}else{CDHtmlDialog::OnPaint();}
}//当用户拖动最小化窗口时系统调用此函数取得光标
//显示。
HCURSOR CHTMLContrlDlg::OnQueryDragIcon()
{return static_cast<HCURSOR>(m_hIcon);
}HRESULT CHTMLContrlDlg::OnButtonOK(IHTMLElement* /*pElement*/)
{OnOK();return S_OK;
}HRESULT CHTMLContrlDlg::OnButtonCancel(IHTMLElement* /*pElement*/)
{OnCancel();return S_OK;
}DWORD RandomLeftThread(CHTMLContrlDlg *pDlg)
{//自定义消息函数,实现在非对话框的线程函数里进行对话框数据的刷新pDlg->SendMessage(WM_MYUPDATEDATA, FALSE);return 0;
}LRESULT CHTMLContrlDlg::OnUpdateMyData(WPARAM Wparam, LPARAM lParam)
{UpdateData(Wparam);return TRUE;
}LRESULT CHTMLContrlDlg::OpenMyWindows(WPARAM Wparam, LPARAM lParam)
{return TRUE;
}UINT MyThreadRead(LPVOID dlg)
{CHTMLContrlDlg *pDlg = (CHTMLContrlDlg*)dlg;while (true){//RandomLeftThread(pDlg);pDlg->m_SeqReadRate = strReadRate;Sleep(2000);//RandomLeftThread(pDlg);}return TRUE;
}UINT MyWindows(LPVOID dlg)
{CHTMLContrlDlg *pDlg = (CHTMLContrlDlg*)dlg;pDlg->FindWindowsHwnd();return TRUE;
}BOOL CALLBACK EnumChildProc(HWND hwnd, LPARAM lParam)
{/*EnumChildWindows的枚举函数枚举找到Internet Explorer_Server的窗口的句柄*/TCHAR szClassName[100];::GetClassName(hwnd, szClassName, sizeof(szClassName));if (_tcscmp(szClassName, _T("Internet Explorer_Server")) == 0){*(HWND*)lParam = hwnd;return FALSE; // 找到第一个 IE 控件的子窗口就停止}else return TRUE; // 继续枚举子窗口
}void CHTMLContrlDlg::FindWindowsHwnd()
{for (int i = 0; i < 8; i++){::EnumChildWindows(spdoc[i].ExplorerWnd, EnumChildProc, (LPARAM)&(spdoc[i].hWndChild));//通过枚举找到窗口句柄if (NULL == (spdoc[i].hWndChild)){MessageBox("FindWinwsHwnd error", "警告");return;}}//UINT nMsg = ::RegisterWindowMessage(_T("WM_HTML_GETOBJECT"));//LRESULT lRes;//::SendMessageTimeout((spdoc[i].hWndChild), nMsg, 0L, 0L, SMTO_ABORTIFHUNG, 1000, (DWORD*)&(lRes));//CComPtr < IHTMLDocument2 > spDoc;////HRESULT hr = ::ObjectFromLresult((lRes), IID_IHTMLDocument2, 0, (LPVOID *)&(spDoc));//if (FAILED(hr)) return ;//                          // 程序运行到此,已经找到了 IHTMLDocument2 的接口指针//CComBSTR bstrTitle;//spDoc->get_title(&bstrTitle);//取得文档标题  //CString str(bstrTitle);//CComPtr < IHTMLElementCollection > spElementCollection;// hr = spDoc->get_all(&spElementCollection);/*///获取读取速度CComPtr<IHTMLElement> ele;spDoc->elementFromPoint(143, 92, &ele);BSTR eleText;BSTR eleOutText;BSTR clss;BSTR ID1;while (1){ele->get_innerText(&eleText);strReadRate = eleText;Sleep(500);}*/}void CHTMLContrlDlg::OnBnClickedButtonOpen()
{/*打开工具按钮的实现:通过ShellExecute函数找到本工程目录下的DiskMarkX64.exe工具,并执行打开通过SetWindowPos排布打开工具的初始位置通过FindWindow找到DiskMarkX64.exe工具主窗口的句柄创建一个线程执行查找IE窗口的接口,线程执行函数MyWindows,使用线程是避免在执行循环查找的时候,对话框失去控制*/if (m_WinThread1){return;}//m_WinThread  = AfxBeginThread(MyThreadRead, (void*)this);int temp=0;for (int i = 0; i < 8; i++){HINSTANCE hInstance = ::ShellExecute(NULL, "open", "\.\\CrystalDiskMark_3.0.0d_azo\\DiskMarkX64.exe", NULL, NULL, SW_SHOW);Sleep(200);spdoc[i].ExplorerWnd = ::FindWindow(NULL, _T("CrystalDiskMark 3.0 x64"));if (!(spdoc[i].ExplorerWnd)){::MessageBox(m_hWnd, TEXT("CrystalDiskMark - Internet Explorer"), NULL, MB_OK);return;}if (i < 4){::SetForegroundWindow(spdoc[i].ExplorerWnd);::SetWindowPos(spdoc[i].ExplorerWnd, HWND_TOP,pos_x + i * WIDTH, pos_y, 0, 0,  SWP_NOSIZE);}else{::SetForegroundWindow(spdoc[i].ExplorerWnd);::SetWindowPos(spdoc[i].ExplorerWnd, HWND_TOP, pos_x + temp * WIDTH, pos_y + OFFSET_Y, 0, 0, SWP_NOSIZE);temp++;}}m_WinThread1 = AfxBeginThread(MyWindows, (void*)this);}void CHTMLContrlDlg::OnBnClickedButtonSelect()
{}void CHTMLContrlDlg::OnSelchangeTestnumber()
{/*按钮1-9选择的实现有8个窗口,所以每点击一下按钮要遍历8个窗口并发送消息通过::RegisterWindowMessage(_T("WM_HTML_GETOBJECT"));函数注册调用::ObjectFromLresult函数通过::SendMessageTimeout函数阻塞等待消息的注册然后通过::ObjectFromLresult获得IE接口*/for (int i = 0; i < 8; i++){if ((spdoc[i].hWndChild) == NULL){MessageBox("hWndChild为空", "警告!");return;}CComPtr < IHTMLDocument2 > spDoc;LRESULT lRes;UINT nMsg = ::RegisterWindowMessage(_T("WM_HTML_GETOBJECT"));::SendMessageTimeout(spdoc[i].hWndChild, nMsg, 0L, 0L, SMTO_ABORTIFHUNG, 1000, (DWORD*)&(lRes));   HRESULT hr = ::ObjectFromLresult(lRes, IID_IHTMLDocument2, 0, (LPVOID *)&(spDoc));if (FAILED(hr)){return;}CComPtr < IHTMLElementCollection > spElementCollection;hr = spDoc->get_all(&spElementCollection);              //获取HTML网页上的所有元素if (FAILED(hr)){return;}long elementLength;hr = spElementCollection->get_length(&elementLength);//计算HTML网页上的所有元素的数量if (FAILED(hr)){return;}VARIANT name;CComBSTR tag;name.vt = VT_I4;for (int i = 0; i < elementLength; i++) //循环找到网页上的元素,通过控件标识判别指定的元素{name.lVal = i;IDispatch * pDispatch = NULL;HRESULT res = spElementCollection->item(name, name, &pDispatch);//通过指针遍历元素if (FAILED(res)){continue;}CComPtr<IHTMLSelectElement> pHtmlElement;hr = pDispatch->QueryInterface(IID_IHTMLSelectElement, (void**)&pHtmlElement);//查询是否为指定的接口,不是继续查找下一个if (FAILED(hr)){continue;}BSTR name;CString tempStr;long value;long selectedIndex = 2;pHtmlElement->get_name(&name);tempStr = name;int nIndex = cbTestNumber.GetCurSel(); //当前选中的项if (tempStr.Compare("TestNumber") == 0){pHtmlElement->get_length(&value);pHtmlElement->put_selectedIndex(nIndex);//向网页输出选定的层次i += value;}}}}void CHTMLContrlDlg::OnSelchangeTestsize()
{/*按钮50MB-4000MB选择的实现有8个窗口,所以每点击一下按钮要遍历8个窗口并发送消息通过::RegisterWindowMessage(_T("WM_HTML_GETOBJECT"));函数注册调用::ObjectFromLresult函数通过::SendMessageTimeout函数阻塞等待消息的注册然后通过::ObjectFromLresult获得IE接口*/for (int i = 0; i < 8; i++){if ((spdoc[i].hWndChild) == NULL){MessageBox("hWndChild为空", "警告!");return;}CComPtr < IHTMLDocument2 > spDoc;LRESULT lRes;UINT nMsg = ::RegisterWindowMessage(_T("WM_HTML_GETOBJECT"));::SendMessageTimeout(spdoc[i].hWndChild, nMsg, 0L, 0L, SMTO_ABORTIFHUNG, 1000, (DWORD*)&(lRes));HRESULT hr = ::ObjectFromLresult(lRes, IID_IHTMLDocument2, 0, (LPVOID *)&(spDoc));if (FAILED(hr)) return;CComPtr < IHTMLElementCollection > spElementCollection;hr = spDoc->get_all(&spElementCollection);if (FAILED(hr)){return;}long elementLength;hr = spElementCollection->get_length(&elementLength);if (FAILED(hr)){return;}VARIANT name;CComBSTR tag;name.vt = VT_I4;for (int i = 0; i < elementLength; i++){name.lVal = i;IDispatch * pDispatch = NULL;HRESULT res = spElementCollection->item(name, name, &pDispatch);if (FAILED(res)){continue;}CComPtr<IHTMLSelectElement> pHtmlElement;hr = pDispatch->QueryInterface(IID_IHTMLSelectElement, (void**)&pHtmlElement);if (FAILED(hr)){continue;}BSTR name;CString tempStr;long value;int nIndex = cbTestSize.GetCurSel(); //当前选中的项pHtmlElement->get_name(&name);tempStr = name;if (tempStr.Compare("TestSize") == 0){pHtmlElement->get_length(&value);pHtmlElement->put_selectedIndex(nIndex);i += value;}}}}void CHTMLContrlDlg::OnMove(int x, int y)
{/*通过MoveWindow函数实现,当窗口移动时,指定窗口跟随移动*/CDHtmlDialog::OnMove(x, y);pos_x = x;pos_y = y;for (int i = 0; i < 8; i++){if (NULL == (spdoc[i].ExplorerWnd))return;}::MoveWindow(spdoc[0].ExplorerWnd, x,            y + 50 ,WIDTH, HEIGHT, FALSE);::MoveWindow(spdoc[1].ExplorerWnd, x + WIDTH,   y + 50, WIDTH, HEIGHT, FALSE);::MoveWindow(spdoc[2].ExplorerWnd, x + WIDTH*2, y + 50, WIDTH, HEIGHT, FALSE);::MoveWindow(spdoc[3].ExplorerWnd, x + WIDTH*3, y + 50, WIDTH, HEIGHT, FALSE);::MoveWindow(spdoc[4].ExplorerWnd, x,            y + 400, WIDTH, HEIGHT, FALSE);::MoveWindow(spdoc[5].ExplorerWnd, x + WIDTH,   y + 400, WIDTH, HEIGHT, FALSE);::MoveWindow(spdoc[6].ExplorerWnd, x + WIDTH*2, y + 400, WIDTH, HEIGHT, FALSE);::MoveWindow(spdoc[7].ExplorerWnd, x + WIDTH*3, y + 400, WIDTH, HEIGHT, FALSE);// TODO: 在此处添加消息处理程序代码
}void CHTMLContrlDlg::OnNcLButtonUp(UINT nHitTest, CPoint point)
{// TODO: 在此添加消息处理程序代码和/或调用默认值CDHtmlDialog::OnNcLButtonUp(nHitTest, point);
}void CHTMLContrlDlg::OnNcLButtonDown(UINT nHitTest, CPoint point)
{// TODO: 在此添加消息处理程序代码和/或调用默认值CDHtmlDialog::OnNcLButtonDown(nHitTest, point);
}void CHTMLContrlDlg::OnLButtonUp(UINT nFlags, CPoint point)
{// TODO: 在此添加消息处理程序代码和/或调用默认值CDHtmlDialog::OnLButtonUp(nFlags, point);
}void CHTMLContrlDlg::OnDestroy()
{CDHtmlDialog::OnDestroy();/*当控制窗口销毁时,对8个窗口进行关闭*/for (int i = 0; i < 8; i++){::SendMessage(spdoc[i].ExplorerWnd, WM_CLOSE, NULL, NULL);}// TODO: 在此处添加消息处理程序代码
}void CHTMLContrlDlg::OnBnClickedButtonAll()
{/*按钮All 控制的实现有8个窗口,所以每点击一下按钮要遍历8个窗口并发送消息通过::RegisterWindowMessage(_T("WM_HTML_GETOBJECT"));函数注册调用::ObjectFromLresult函数通过::SendMessageTimeout函数阻塞等待消息的注册然后通过::ObjectFromLresult获得IE接口*/for (int i = 0; i < 8; i++){if ((spdoc[i].hWndChild) == NULL){MessageBox("请先打开工具", "警告!hWndChild为空");return;}CComPtr < IHTMLDocument2 > spDoc;LRESULT lRes;UINT nMsg = ::RegisterWindowMessage(_T("WM_HTML_GETOBJECT"));::SendMessageTimeout(spdoc[i].hWndChild, nMsg, 0L, 0L, SMTO_ABORTIFHUNG, 1000, (DWORD*)&(lRes));HRESULT hr = ::ObjectFromLresult(lRes, IID_IHTMLDocument2, 0, (LPVOID *)&(spDoc));if (FAILED(hr)) return;CComPtr<IHTMLElement> ele;BSTR eleText;spDoc->elementFromPoint(40, 41, &ele);//对指定位置上的按钮进行控制ele->get_innerText(&eleText);strReadRate = eleText;ele->click();}//改变按钮All的显示CString IdName = NULL;GetDlgItemText(IDC_BUTTON_ALL, IdName);if (IdName.Compare("Stop")==0){SetDlgItemText(IDC_BUTTON_ALL, "All");}else{SetDlgItemText(IDC_BUTTON_ALL, "Stop");}}

// HTMLContrlDlg.h : 头文件
//#pragma once
#include "afxwin.h"
#define WM_MYUPDATEDATA WM_USER+100
#define WM_OPENWINDOWS  WM_USER+102
#define WIDTH 406
#define HEIGHT 368
#define OFFSET_Y 375 //Y方向的偏移// CHTMLContrlDlg 对话框
class CHTMLContrlDlg : public CDHtmlDialog
{
// 构造
public:CHTMLContrlDlg(CWnd* pParent = NULL);   // 标准构造函数// 对话框数据
#ifdef AFX_DESIGN_TIMEenum { IDD = IDD_HTMLCONTRL_DIALOG, IDH = IDR_HTML_HTMLCONTRL_DIALOG };
#endifprotected:virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持HRESULT OnButtonOK(IHTMLElement *pElement);HRESULT OnButtonCancel(IHTMLElement *pElement);LRESULT OnUpdateMyData(WPARAM Wparam, LPARAM lParam);LRESULT OpenMyWindows(WPARAM Wparam, LPARAM lParam);// 实现
protected:HICON m_hIcon;// 生成的消息映射函数virtual BOOL OnInitDialog();afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon();DECLARE_MESSAGE_MAP()DECLARE_DHTML_EVENT_MAP()
public:CString m_SeqReadRate;volatile CWinThread* m_WinThread;volatile CWinThread* m_WinThread1;public:void FindWindowsHwnd();afx_msg void OnBnClickedButtonOpen();afx_msg void OnBnClickedButtonSelect();int pos_x;int pos_y;bool m_bBtnDn;CString testNumber;CComboBox cbTestNumber;CComboBox cbTestSize;CString csTestSize;afx_msg void OnSelchangeTestnumber();afx_msg void OnSelchangeTestsize();afx_msg void OnMove(int x, int y);afx_msg void OnNcLButtonUp(UINT nHitTest, CPoint point);afx_msg void OnNcLButtonDown(UINT nHitTest, CPoint point);afx_msg void OnLButtonUp(UINT nFlags, CPoint point);afx_msg void OnDestroy();afx_msg void OnBnClickedButtonAll();
};
/*
myHead.h的实现
*/#pragma once
#include<afxstr.h>
extern CString strReadRate;
struct SpDoc
{HWND hWndChild;HWND ExplorerWnd;
}

												

在VS2015下通过MFC实行对IE浏览器Internet Explorer类的控制 控制的工具CrystalDiskMark相关推荐

  1. 安装ie9提示未能完成安装_Windows 7下安装IE11失败,提示:Internet Explorer未能完成安装...

    这几天想把杀毒软件换成Bitdefender,但是安装过程中要求系统安装的IE必须是最新版.之前从Windows 7升级到Windows 10,使用了几天感觉Win10还是不如Win7用的习惯,于是又 ...

  2. 雷塞SMC304系列控制器VC6.0例程在VS2015下编译遇到的若干问题及解决办法

    雷塞SMC304系列控制器VC6.0例程在VS2015下编译遇到的若干问题及解决办法 标签(空格分隔): 雷塞 SM304 WIN10 VS2015 最近由于导师要求,负责喷涂机器人的控制部分,接触到 ...

  3. VS2015下OpenGL库的配置

    写在前面: 最近要用到OpenGL,光是在VS2015下配置就费了很大的劲,现在将我的成果直接贡献给大家,希望能为需要在VS2015下配置OpenGL的读者省去一些麻烦. 正文: 资源地址1:http ...

  4. gdal1.6linux编译,VS2015下编译64位GDAL总结

    使用VS2015编译最新的64位GDAL(最新gdal2.11),确实有一些问题,看来双方还是太新了,有点不兼容,特总结如下. 以前经常用的通过VisualStudio IDE进行编译的方式现在似乎不 ...

  5. VS2010/VS2012/VS2015下openGL环境配置(转)

    按:按照下述博文,三个例子均成功. https://blog.csdn.net/so_geili/article/details/51685005 请仔细阅读每一个字. 为了学习<OpenGL超 ...

  6. VS2015下解决:error LNK2019: 无法解析的外部符号 __iob_func

    在使用VS2015下使用libjpeg-turbo静态库,编译时报错了: error LNK2019: 无法解析的外部符号 __iob_func,该符号在函数 output_message 中被引用 ...

  7. VS2015下解决:无法解析的外部符号 __imp___vsnprintf 及__iob_func

    1.解决:无法解析的外部符号 __imp___vsnprintf 在 vs2015 工程选项,链接器附加依赖项里面添加 legacy_stdio_definitions.lib 即可. 出现这个问题的 ...

  8. opencv2.4.13在win10+VS2015下的配置过程

    opencv2.4.13在win10+VS2015下的配置过程 参考https://blog.csdn.net/shanghairuoxiao/article/details/69391229一个是本 ...

  9. VS2015下opengl的freeglut,glew以及gltools库的配置

    由于上网搜索的答案各不相同,我只是为了配置glew就花费了将近一天的时间,深深感到了不同版本的Visual studio在配置opengl库中方法各异.在这里分享一个也是上网搜索得到的Visual S ...

最新文章

  1. 虚幻引擎4:打造街机经典游戏学习教程 Unreal Engine 4: Create an Arcade Classic
  2. 概念艺术绘画学习教程 Schoolism – Foolproof Concept Painting with Airi Pan
  3. 【脚本整理】docker-compose 部署prometheus + grafana
  4. 超级简单:在你的ASP.NET页面自定义列表和分页
  5. 产品部门四大角色——PM/PD/UE/UI
  6. socket_基础2_传输大数据
  7. Jquery—Jquery中的(function($){...})(jQuery)
  8. 通过注册表快速清理残留的软件
  9. 【PAT B1024】科学计数法(C语言)
  10. Dubbo的failsafe容错策略
  11. android framework之priv-app,系统特权app权限那些坑
  12. 2022-03-26-Subline3的常用快捷键
  13. 【华为OD机试真题 python】连续出牌数量【2022 Q4 | 200分】
  14. etal斜体吗 参考文献_期刊论文参考文献着录注意问题
  15. poi导入数据工具类,直接复制使用,有详细注释
  16. 黑磷量子点/无机荧光量子点/石墨烯量子点水凝胶/量子点/纳米水凝胶荧光探针的研究制备
  17. /etc下的host配置文件们
  18. 3D模型欣赏:原始部落女神 自带仙气 让人眼前一亮
  19. win 下光盘刻录方式
  20. 悟空CRM SAAS平台接口API文档

热门文章

  1. 主题:【转】单例模式完全剖析
  2. Lebesgue外测度—实变函数与泛函分析
  3. k线图投资技巧详解:阳线孕十字线
  4. CSDN要求必须绑定手机号
  5. 《聊聊我的故事 | 谈谈自己大学的收获,以及毕业的求职经历》
  6. python各种插件安装_如何在各种环境下正确地安装python——Windows
  7. html title自动换行,css控制文字自动换行的实现方法
  8. SQL SERVER 判断文件是否存在
  9. efi分区能不能删除 win10_Win10+Ubuntu20.04双系统完全删除Ubuntu20.04
  10. 指针和固定大小缓冲区只能在不安全的上下文中使用_关于Redis的使用,你必须要弄懂这些常见的疑难杂症...