Недавно я написал следующий код для школьного проекта; с моей целью сделать базовую программу шифрования. В настоящее время для шифрования файла с помощью этой программы имя файла должно быть известно и вводиться в консоль вручную, включая расширение файла. Чтобы улучшить удобство использования программы, я хотел реализовать функцию для открытия окна проводника Windows, чтобы пользователь мог выбрать файл, который они хотят зашифровать. После долгих поисков в Интернете я не смог найти способ реализовать это в своем коде. Поэтому мой вопрос заключается в том, существует ли эта функция в библиотеке C++, и если да, то как я могу реализовать ее в своем коде.
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <math.h>
using namespace std;
#define ENCRYPTION_FORMULA (int) Byte * 25
#define DECRYPTION_FORMULA (int) Byte / 25
int Encrypt (char * FILENAME, char * NEW_FILENAME)
{
std::ifstream inFile;
std::ofstream outFile;
char Byte;
inFile.open(FILENAME, ios::in | ios::binary);
outFile.open(NEW_FILENAME, ios::out | ios::binary);
while(!inFile.eof())
{
char NewByte;
Byte = inFile.get();
if (inFile.fail())
return 0;
NewByte = ENCRYPTION_FORMULA;
outFile.put(NewByte);
}
inFile.close();
outFile.close();
return 1;
}
int Decrypt (char * FILENAME, char * NEW_FILENAME)
{
std::ifstream inFile;
std::ofstream outFile;
char Byte;
inFile.open(FILENAME, ios::in | ios::binary);
outFile.open(NEW_FILENAME, ios::out | ios::binary);
while(!inFile.eof())
{
char NewByte;
Byte = inFile.get();
if (inFile.fail())
return 0;
NewByte = DECRYPTION_FORMULA;
outFile.put(NewByte);
}
inFile.close();
outFile.close();
return 1;
}
int main()
{
char EncFile[200];
char NewEncFile[200];
char DecFile[200];
char NewDecFile[200];
int Choice;
cout << "NOTE: You must encrypt the file with the same file extension!"<<endl;
cout << "Enter 1 to Encrypt / 2 to Decrypt"<<endl;
cin >> Choice;
switch(Choice)
{
case 1:
cout << "Enter the current Filename: ";
cin >> EncFile;
cout << "Enter the new Filename: ";
cin >> NewEncFile;
Encrypt(EncFile, NewEncFile);
break;
case 2:
cout << "Enter the current Filename: ";
cin >> DecFile;
cout << "Enter the new Filename: ";
cin >> NewDecFile;
Decrypt(DecFile, NewDecFile);
break;
}
return 0; //Exit!
}
Диалог "открытый файл", на который вы ссылаетесь, является частью Windows API. Чтобы добавить его, вам нужно написать кучу кода, и это, вероятно, не стоит для этой задачи. Если вы все равно хотите это сделать, прочитайте об этом в MSDN.
GetConsoleWindow
всего знать, что вам нужен HWND изGetConsoleWindow
.