Как разрешить перетаскивание файла на * .exe и получить его как параметр?

Что мне нужно сделать, чтобы моя программа использовала файл, который был перетащен на его значок в качестве параметра?

Мой текущий метод main выглядит так это:

int main(int argc, char* argv[])
{
    if (argc != 2) {
        cout << "ERROR: Wrong amount of arguments!" << endl;
        cout << "\n" << "Programm closed...\n\n" << endl;
        exit(1);
        return 0;
    }

    Converter a(argv[1]);
    // ...

    cout << "\n" << "Programm finished...\n\n" << endl;

    // cin.ignore();
    return 0;
}

Что я действительно хотел бы сделать, так это выбрать 10 (или около того) файлов, перетащить их в EXE и обработать их из моего приложения.


РЕДАКТИРОВАТЬ:

Входящий параметр используется как имя файла, созданное в cunstructor.

Converter::Converter(char* file) {
       // string filename is a global variable
   filename = file;
   myfile.open(filename.c_str(), ios_base::in);
}

Метод, при котором текстовый файл читается:

string Converter::readTextFile() {
char c;
string txt = "";

if (myfile.is_open()) {

    while (!myfile.eof()) {
        myfile.get(c);
        txt += c;
    }

} else {
    error("ERROR: can't open file:", filename.c_str());
}
return txt;
}

EDIT2: удалено

Обновление:
Я снова добрался до этой точки.

Фактический Основной метод:

// File path as argument

int main (int argc, char * argv []) { if (argc <2) { cout << "ОШИБКА: неверное количество аргументов! Укажите хотя бы один аргумент ... \ n" << endl; cout << "\ n" << "Программа закрыта ... \ n \ n" << endl; cin.ignore (); выход (1); возврат 0; }

vector<string> files;

for (int g = 1; g < argc; g++) {
    string s = argv[g];
    string filename = "";
    int pos = s.find_last_of("\\", s.size());

    if (pos != -1) {
        filename = s.substr(pos + 1);

        cout << "argv[1] " << argv[1] << endl;
        cout << "\n filename: " << filename << "\n pos: " << pos << endl;
        files.push_back(filename);

        }
    files.push_back(s);
    }

for (unsigned int k = 0; k < files.size(); k++)
    {
    cout << "files.at( " << k << " ): " << files.at(k).c_str() << endl;
    Converter a(files.at(k).c_str());
    a.getATCommandsFromCSV();
    }


cout << "\n" << "Programm finished...\n\n" << endl;

cin.ignore();

return 0;
}

На самом деле окно консоли появляется примерно на 0,5 секунды и снова закрывается.
Это не останавливается ни на одном из моих cin.ignore (); Может быть, он не доходит?

Кто-нибудь может помочь?

6
задан Beasly 2 February 2011 в 12:47
поделиться