From f3f5135efc13d2f99bbd11898276ad473ca36a3b Mon Sep 17 00:00:00 2001 From: gmh5225 <2315157@qq.com> Date: Fri, 27 May 2022 21:01:54 +0800 Subject: [PATCH] Upload --- .gitmodules | 3 ++ DIYSystemMemoryDump.png | Bin 0 -> 10528 bytes README.md | 6 ++- tool/.gitignore | 73 +++++++++++++++++++++++++++ tool/NewWorld.ico | Bin 0 -> 4286 bytes tool/QDarkStyleSheet | 1 + tool/main.cpp | 26 ++++++++++ tool/mainwindow.cpp | 63 +++++++++++++++++++++++ tool/mainwindow.h | 34 +++++++++++++ tool/mainwindow.ui | 107 ++++++++++++++++++++++++++++++++++++++++ tool/tool.pro | 44 +++++++++++++++++ 11 files changed, 356 insertions(+), 1 deletion(-) create mode 100644 .gitmodules create mode 100644 DIYSystemMemoryDump.png create mode 100644 tool/.gitignore create mode 100644 tool/NewWorld.ico create mode 160000 tool/QDarkStyleSheet create mode 100644 tool/main.cpp create mode 100644 tool/mainwindow.cpp create mode 100644 tool/mainwindow.h create mode 100644 tool/mainwindow.ui create mode 100644 tool/tool.pro diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..96f5dbb --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "tool/QDarkStyleSheet"] + path = tool/QDarkStyleSheet + url = https://github.com/gmh5225/QDarkStyleSheet diff --git a/DIYSystemMemoryDump.png b/DIYSystemMemoryDump.png new file mode 100644 index 0000000000000000000000000000000000000000..2d97476dcf0b907463d1166367e7acf6ed11e03c GIT binary patch literal 10528 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 +#include +#include + +int main(int argc, char *argv[]) +{ +#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)) + QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); +#endif + QApplication a(argc, argv); + MainWindow w; + + QFile f(":/qdarkstyle/dark/style.qss"); + if (!f.exists()) { + printf("Unable to set stylesheet, file not found\n"); + } else { + f.open(QFile::ReadOnly | QFile::Text); + QTextStream ts(&f); + qApp->setStyleSheet(ts.readAll()); + } + + w.show(); + return a.exec(); +} diff --git a/tool/mainwindow.cpp b/tool/mainwindow.cpp new file mode 100644 index 0000000..2e64422 --- /dev/null +++ b/tool/mainwindow.cpp @@ -0,0 +1,63 @@ +#include "mainwindow.h" +#include "ui_mainwindow.h" +#include +#include +#include +#include + +MainWindow::MainWindow(QWidget *parent) + : QMainWindow(parent), ui(new Ui::MainWindow), mDumpType(DUMPTYPE::KERNEL), mStop(false), + mRunning(false) +{ + ui->setupUi(this); + setWindowFlags(windowFlags() & ~Qt::WindowMaximizeButtonHint); + setFixedSize(this->width(), this->height()); +} + +MainWindow::~MainWindow() +{ + delete ui; +} + +void MainWindow::on_pushButton_start_clicked() +{ + if (mRunning) { + QMessageBox::information(this, "Tips", "You are running now!"); + return; + } + mRunning = true; + mStop = false; + + //https://docs.microsoft.com/en-us/troubleshoot/windows-server/performance/memory-dump-file-options + if (ui->radioButton_Auto->isChecked()) { + mDumpType = DUMPTYPE::AUTO; + } else if (ui->radioButton_Complete->isChecked()) { + mDumpType = DUMPTYPE::COMPLETE; + } else if (ui->radioButton_Kernel->isChecked()) { + mDumpType = DUMPTYPE::KERNEL; + } else if (ui->radioButton_Small->isChecked()) { + mDumpType = DUMPTYPE::SMALL; + } + + std::thread t1([&] { + while (!mStop) { + //HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl + QSettings qRegQ("HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\CrashControl", + QSettings::NativeFormat); + qRegQ.setValue("AlwaysKeepMemoryDump", (int) 0); + qRegQ.setValue("CrashDumpEnabled", (int) mDumpType); + //20ms + QThread::msleep(20); + } + mRunning = false; + }); + t1.detach(); + + QMessageBox::information(this, "Tips", "Start new running!"); +} + +void MainWindow::on_pushButton_stop_clicked() +{ + mStop = true; + QMessageBox::information(this, "Tips", "Stop running!"); +} diff --git a/tool/mainwindow.h b/tool/mainwindow.h new file mode 100644 index 0000000..3640947 --- /dev/null +++ b/tool/mainwindow.h @@ -0,0 +1,34 @@ +#ifndef MAINWINDOW_H +#define MAINWINDOW_H + +#include + +QT_BEGIN_NAMESPACE +namespace Ui { class MainWindow; } +QT_END_NAMESPACE + +class MainWindow : public QMainWindow +{ + Q_OBJECT + +public: + MainWindow(QWidget *parent = nullptr); + ~MainWindow(); + +private slots: + void on_pushButton_start_clicked(); + + void on_pushButton_stop_clicked(); + +public: + enum DUMPTYPE { AUTO = 7, KERNEL = 2, SMALL = 3, COMPLETE = 1 }; + +public: + DUMPTYPE mDumpType; + bool mStop; + bool mRunning; + +private: + Ui::MainWindow *ui; +}; +#endif // MAINWINDOW_H diff --git a/tool/mainwindow.ui b/tool/mainwindow.ui new file mode 100644 index 0000000..ed6f310 --- /dev/null +++ b/tool/mainwindow.ui @@ -0,0 +1,107 @@ + + + MainWindow + + + + 0 + 0 + 411 + 228 + + + + + 16777215 + 16777215 + + + + DIYSystemMemoryDump + + + + + + + + + Dump Type + + + + + + + + + + Complete memory dump + + + + + + + Kernel memory dump + + + + + + + + + + + Automatic memory dump + + + + + + + Small memory dump + + + + + + + + + + + + + + Start + + + + + + + Stop + + + + + + + + + + + 0 + 0 + 411 + 21 + + + + + + + + diff --git a/tool/tool.pro b/tool/tool.pro new file mode 100644 index 0000000..0cc31a3 --- /dev/null +++ b/tool/tool.pro @@ -0,0 +1,44 @@ +QT += core gui + +greaterThan(QT_MAJOR_VERSION, 4): QT += widgets + +CONFIG += c++11 + +# You can make your code fail to compile if it uses deprecated APIs. +# In order to do so, uncomment the following line. +#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 + +SOURCES += \ + main.cpp \ + mainwindow.cpp + +HEADERS += \ + mainwindow.h + +FORMS += \ + mainwindow.ui + +!contains(QMAKE_HOST.arch, x86_64) { + TARGET = DIYSystemMemoryDump32 +} else { + TARGET = DIYSystemMemoryDump64 +} + + +# Default rules for deployment. +qnx: target.path = /tmp/$${TARGET}/bin +else: unix:!android: target.path = /opt/$${TARGET}/bin +!isEmpty(target.path): INSTALLS += target + + + +# ICO +RC_ICONS = NewWorld.ico + +# RESOURCES +RESOURCES += QDarkStyleSheet/qdarkstyle/dark/style.qrc +RESOURCES += QDarkStyleSheet/qdarkstyle/light/style.qrc +RESOURCES += QDarkStyleSheet/qdarkstyle/X64DBGDark/style.qrc + +#UAC +QMAKE_LFLAGS_WINDOWS += /MANIFESTUAC:"level='requireAdministrator'"