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;
};
相关推荐
MChine慕青2 小时前
顺序表与单链表:核心原理与实战应用
linux·c语言·开发语言·数据结构·c++·算法·链表
骄傲的心别枯萎4 小时前
RV1126 NO.16:通过多线程同时获取H264和H265码流
linux·c++·音视频·rv1126
落羽的落羽4 小时前
【C++】特别的程序错误处理方式——异常机制
开发语言·c++
空山新雨(大队长)4 小时前
C 语言第一课:hello word c
c++·c·exe
春蕾夏荷_7282977254 小时前
c++ 第三方库与个人封装库
c++·三方库
牵牛老人4 小时前
Qt C++ 复杂界面处理:巧用覆盖层突破复杂界面处理难题之一
数据库·c++·qt
离越词5 小时前
C++day8作业
开发语言·c++·windows
MMjeaty5 小时前
deque容器
c++
CYRUS_STUDIO5 小时前
如何防止 so 文件被轻松逆向?精准控制符号导出 + JNI 动态注册
android·c++·安全
CYRUS_STUDIO5 小时前
C&C++ 代码安全再升级:用 OLLVM 给 so 加上字符串加密保护
c++·安全·llvm