#include "WMIManager.h"
#include <vector>
#include <string>
#include <boost/thread/thread.hpp>
#include <boost/array.hpp>
#include <boost/asio.hpp> /**************************************************************
技术博客
http://www.cnblogs.com/itdef/ 技术交流群
群号码:324164944 欢迎c c++ windows驱动爱好者 服务器程序员沟通交流
**************************************************************/ using namespace DEF;
using boost::asio::ip::tcp; void WMIManager::Transfer()
{
tcp::resolver resolver(io_);
tcp::resolver::query query("127.0.0.1", "");
tcp::resolver::iterator iterator = resolver.resolve(query);
try {
tcp::socket s(io_);
boost::asio::connect(s, iterator); while ()
{
std::unique_lock<std::mutex> lck(mtx_);
while (!ready_) // 如果标志位不为 true, 则等待...
cv_.wait(lck);
while (!strVec_.empty())
{
std::cout << strVec_.back() << std::endl;
size_t n = boost::asio::write(s, boost::asio::buffer((strVec_.back()).c_str(), (strVec_.back()).size()+));
strVec_.pop_back();
}
ready_ = false;
}
}
catch (std::exception& e)
{
std::cerr << "Exception: " << e.what() << "\n";
} } bool WMIManager::Start()
{
if (false == wmiInfo_.Init(L"ROOT\\CIMV2"))
{
return false;
}
boost::thread t(&WMIManager::Transfer,this);
t_.async_wait(boost::bind(&WMIManager::Loop,this,
boost::asio::placeholders::error, &t_, &wmiInfo_)); io_.run();
t.join();
return true;
} void WMIManager::Loop(const boost::system::error_code& e,
boost::asio::deadline_timer* t, WMIInfo* wmiInfo)
{
if ( wmiInfo->QueryWin32Process(L"WQL", L"SELECT * FROM Win32_Process", strVec_) )
{
// transfer std::vector<std::string>
}
t->expires_at(t->expires_at() + boost::posix_time::seconds());
t->async_wait(boost::bind(&WMIManager::Loop, this,
boost::asio::placeholders::error, t, wmiInfo));
}

代码片段

具体见

http://www.oschina.net/code/snippet_614253_56135

wmi收集系统信息 发送到服务器打印的更多相关文章

  1. Linux下dmesg命令处理故障和收集系统信息的7种用法

    目录: <syslog之一:Linux syslog日志系统详解> <syslog之二:syslog协议及rsyslog服务全解析> <syslog之三:建立Window ...

  2. windows7打印时,显示脱机,提示“服务器打印后台处理程序服务没有运行”。

    1. 问题 windows7打印时,显示脱机,提示“服务器打印后台处理程序服务没有运行”. 2. 解决方法. 将下面的文字保存为bat文件执行,其中\\192.168.40.110\Lenovo M7 ...

  3. angular2^ typescript 将 文件和Json数据 合并发送到服务器(2.服务端)

    nodejs 中使用框架 express web框架 multer 文件接受 直接贴代码了,我就不解释了 "use strict"; exports.__esModule = tr ...

  4. 主机性能监控之wmi 获取系统信息及内存性能信息

    标 题: 主机性能监控之wmi 获取系统信息及内存性能信息作 者: itdef链 接: http://www.cnblogs.com/itdef/p/3990240.html 欢迎转帖 请保持文本完整 ...

  5. form表单在发送到服务器时候编码方式

    enctype(编码方式):规定了form表单在发送到服务器时候编码方式.有如下的三个值可选: 1.application/x-www-form-urlencoded.默认的编码方式.但是在用文本的传 ...

  6. Ubuntu 16.04上安装并配置Postfix作为只发送SMTP服务器

    如果大家已经在使用第三方邮件服务方案发送并收取邮件,则无需运行自己的邮件服务器.然而,如果大家管理一套云服务器,且其中安装的应用需要发送邮件通知,那么运行一套本地只发送SMTP服务器则更为理想. 如何 ...

  7. dotnet 通过 WMI 获取系统信息

    本文告诉大家如何通过 WMI 获取系统信息 通过 Win32_OperatingSystem 可以获取系统信息 var mc = "Win32_OperatingSystem"; ...

  8. Android进阶——Crash异常捕获并发送到服务器

    在项目中,我们常常会遇到Crash的现象,也就是程序崩溃的时候,这个时候最常看到的就是这个界面 如果你的项目已经发布到市场上了,这样的崩溃对于开发人员是看不到的,所以我们得想方法将崩溃信息发送到服务器 ...

  9. 客户端必须在它发送到服务器的所有帧中添加掩码(Mask)

    在WebSocket协议中,数据是通过一系列数据帧来进行传输的.为了避免由于网络中介(例如一些拦截代理)或者一些在第10.3节讨论的安全原因,客户端必须在它发送到服务器的所有帧中添加掩码(Mask)( ...

随机推荐

  1. 文本框模糊匹配(纯html+jquery简单实现)

    一.项目中需要用到此功能,使用过EasyUI中的Combobox,网上也搜过相应的解决办法,对于我的项目来说都不太合适,因为我还是喜欢比较纯粹的东西,就自己动手写了一个,比较简单,但还算能用,我的项目 ...

  2. TypeScript学习笔记(五) - 泛型

    本篇将介绍在TypeScript如何使用泛型. 一.泛型方法 在TypeScript里,声明泛型方法有以下两种方式: function generics_func1<T>(arg: T): ...

  3. ORA-01652: 无法通过 128 (在表空间 TEMP 中) 扩展 temp 段(EXP-00056: 遇到 ORACLE 错误 1652 ORA-01652: unable to extend temp segment by 128 in tablespace TEMP)

    数据库报 ORA-01652: 无法通过 128 (在表空间 TEMP 中) 扩展 temp 段 两种解决方式: 第一种) sql>select * from v$tempfile; 发现tem ...

  4. Apache Commons Codec 与消息摘要算法(hash算法)

    首先我们要明白 Codec 是什么含义.它是 Coder + decoder = Codec,也就是编码器解码器.即是编码器,也是解码器. 官网地址:http://commons.apache.org ...

  5. Envoy 源码分析--程序启动过程

    目录 Envoy 源码分析--程序启动过程 初始化 main 入口 MainCommon 初始化 服务 InstanceImpl 初始化 启动 main 启动入口 服务启动流程 LDS 服务启动流程 ...

  6. 腾讯高性能RPC开发框架Tars实现服务治理(微服务)

    Github:https://github.com/Tencent/Tars 1. 介绍 Tars是基于名字服务使用Tars协议的高性能RPC开发框架,同时配套一体化的服务治理平台,帮助个人或者企业快 ...

  7. Docker系列05:docker镜像制作 &Docker file

    1 什么是Dockerfile? Dockerfile是一个包含用于组合映像的命令的文本文档.可以使用在命令行中调用任何命令. Docker通过读取Dockerfile中的指令自动生成映像. dock ...

  8. C++ 并发编程 01 线程api

    1.使用多线程的好处: 提高性能,分离关注点  2. 多线程所在头文件 <thread> 3. 使用线程方式为std::thread(functioncall),如: #include & ...

  9. win10初期版本administrator的限制

    win10初期版本administrator的限制,很多功能administrator用户无法使用如应用商店等等,在目前的新版本,差不多都可以使用了.

  10. Linux nohup和&的功效

    nohup和&究竟有啥区别?不少同学进行了回复,但并不是所有同学都理解得全对,今天把自己挖的坑自己填了. 测试代码如下: 是一个输出hello与循环轮数的死循环程序,每输出一行就休眠1秒. 使 ...