QT-文件创建时间修改器

由于对某些文件需要进行时间修改,因此写了一个小的例子:

此程序具备拖拽文件功能,代码如下

cpp 复制代码
#include "MainWindow.h"


void GetFileTime(const char* filePath)
{
	FILETIME creationTime, lastAccessTime, lastWriteTime;
	//HANDLE hFile = CreateFile(filePath, GENERIC_READ, FILE_SHARE_READ, nullptr, OPEN_EXISTING, 0, nullptr);
	HANDLE hFile = CreateFile(filePath, GENERIC_READ, FILE_SHARE_READ, nullptr, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, nullptr);
	if (hFile != INVALID_HANDLE_VALUE)
	{
		if (GetFileTime(hFile, &creationTime, &lastAccessTime, &lastWriteTime))
		{
			SYSTEMTIME stUTC, stLocal;
			FileTimeToSystemTime(&creationTime, &stUTC);
			SystemTimeToTzSpecificLocalTime(nullptr, &stUTC, &stLocal);

			//std::wcout << L"File: " << filePath << std::endl;
			//std::wcout << L"Creation Time: " << stLocal.wYear << L"-" << stLocal.wMonth << L"-" << stLocal.wDay
			//	<< L" " << stLocal.wHour << L":" << stLocal.wMinute << L":" << stLocal.wSecond << std::endl;
		}
		CloseHandle(hFile);
	}
}

void SetFileTime(const char* filePath, const FILETIME& newTime)
{
	//HANDLE hFile = CreateFile(filePath, FILE_WRITE_ATTRIBUTES, FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, OPEN_EXISTING, 0, nullptr);
	HANDLE hFile = CreateFile(filePath, FILE_WRITE_ATTRIBUTES, FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, nullptr);
	if (hFile != INVALID_HANDLE_VALUE)
	{
		SetFileTime(hFile, &newTime, &newTime, &newTime);
		CloseHandle(hFile);
	}

}

MainWindow::MainWindow(QWidget *parent)
	: QMainWindow(parent)
{
	ui.setupUi(this);
	setAcceptDrops(true);

	connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(OnPushButton()));
}

MainWindow::~MainWindow()
{}

void MainWindow::dragEnterEvent(QDragEnterEvent * event)
{
	if (event->mimeData()->hasUrls())
	{
		event->acceptProposedAction();
	}
	else
		event->ignore();
}

void MainWindow::dropEvent(QDropEvent * event)
{
	const QMimeData *mimeData = event->mimeData();
	if (mimeData->hasUrls())
	{
		QList<QUrl> urlList = mimeData->urls();
		urlList.size();
		QStringList fileName;// = urlList.at(0).toLocalFile();
		for (int i = 0; i < urlList.size(); i++)
		{
			fileName.push_back(urlList.at(i).toLocalFile());
			qDebug() << urlList.at(i).toLocalFile();
			ui.lineEdit->setText(urlList.at(i).toLocalFile());
		}
	}
}

void MainWindow::OnPushButton()
{
	QString exePath = ui.lineEdit->text();

	SYSTEMTIME st;
	//GetSystemTime(&st);
	QDateTime dateTime1 = ui.dateTimeEdit->dateTime().toLocalTime();
	QDateTime dateTime = dateTime1.toUTC();
	st.wYear   = dateTime.date().year();
	st.wMonth  = dateTime.date().month();
	st.wDay    = dateTime.date().day();
	st.wHour   = dateTime.time().hour();
	st.wMinute = dateTime.time().minute();
	st.wSecond = dateTime.time().second();
	st.wMilliseconds = dateTime.time().msec();
	FILETIME newTime;
	SystemTimeToFileTime(&st, &newTime);

	SetFileTime(exePath.toLocal8Bit(), newTime);

	GetFileTime(exePath.toLocal8Bit());

}
h 复制代码
#pragma once

#include <QMainWindow>
#include "ui_MainWindow.h"

#include <QApplication>

#include <Windows.h>

#include <QDebug>
#include <QMimeData>
#include <QLineEdit>
#include <QDropEvent>
#include <QDragEnterEvent>

using namespace std;
class MainWindow : public QMainWindow
{
	Q_OBJECT

public:
	MainWindow(QWidget *parent = nullptr);
	~MainWindow();

protected:
	//拖拽外部文件读取arom功能
	void dragEnterEvent(QDragEnterEvent *event);  //拖拽进入事件

	void dropEvent(QDropEvent *event);  //放下事件

private slots:
	void OnPushButton();

private:
	Ui::MainWindowClass ui;
};
相关推荐
exm-zem24 分钟前
多用户图书管理系统
c++
我要成为c嘎嘎大王26 分钟前
【C++】初识C++(1)
开发语言·c++
还债大湿兄5 小时前
《C++内存泄漏8大战场:Qt/MFC实战详解 + 面试高频陷阱破解》
c++·qt·mfc
u_topian8 小时前
【个人笔记】Qt使用的一些易错问题
开发语言·笔记·qt
珊瑚里的鱼8 小时前
LeetCode 692题解 | 前K个高频单词
开发语言·c++·算法·leetcode·职场和发展·学习方法
AI+程序员在路上8 小时前
QTextCodec的功能及其在Qt5及Qt6中的演变
开发语言·c++·qt
Risehuxyc9 小时前
C++卸载了会影响电脑正常使用吗?解析C++运行库的作用与卸载后果
开发语言·c++
飞虾哥10 小时前
QT tabWidget移除页面和隐藏表头
qt
景彡先生11 小时前
C++编译期计算:常量表达式(constexpr)全解析
服务器·c++
tan77º12 小时前
【Linux网络编程】应用层自定义协议与序列化
linux·运维·服务器·网络·c++·tcp/ip