windows - Åbning c ++ program ved at dobbeltklikke tilknyttet fil. Hvordan får jeg filnavnet?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har et c ++-program, som jeg har tilknyttet .bin-filer, så at når .bin-filen åbnes, åbnes den med myProgram.exe.


Hvordan får jeg filnavnet til den tilknyttede fil, der åbnede mit program?

Bedste reference


I plain C ++ kan du bruge argumenterne på main:


#include <iostream>
int main( int argc, char* argv[] )
{
    using namespace std;
    cout << argc << " arguments:" << endl;
    for( int i = 0;  i < argc;  ++i )
    {
        cout << "[" << argv[i] << "]" << endl;
    }
}


Men der er et problem med det , nemlig at C og C ++ main er designet til * nix, ikke Windows. Hellig C ++ Standard anbefaler, at runtime skal levere main argumenterne UTF-8-kodede, men desværre sker det ikke med konventionelle Windows C ++-kompilere. Så i Windows fungerer denne metode muligvis ikke for filnavne med f.eks. Norske, græske eller russiske tegn.


I et program, der er beregnet til at blive brugt af andre, kan du i stedet bruge (Unicode-versionen af) Windows API-funktionen GetCommandLine og dens parser-fætter CommandLineToArgvW for at opdele kommandolinjen i individuelle argumenter. [9] [10]


Alternativt kan Microsofts implementeringer af C og C ++-sprogene bruge den ikke-standardiserede opstartsfunktion wmain. Jeg anbefaler dog ikke det. Jeg synes, det er en god ide at holde de internationale standarder for C og C ++ så meget som praktisk muligt, og der er bestemt ingen grund til at bruge wmain, selv om det kan være praktisk for små legetøjsprogrammer. [[[11]


Skål & HTH.,

Andre referencer 1


Processen med at åbne en fil via dens udvidelse styres af et sæt indgange i systemregistret. Et af de sidste trin angiver den kommando, der skal udføres, og normalt er filnavnet inkluderet i kommandoen. Tjek dine kommandolinjeparametre for at se, om filnavnet er angivet.


Processen er beskrevet her: http://msdn.microsoft.com/en-us/library/cc144175(v=vs.85).aspx[12]

Andre referencer 2


IIRC, bliver den anden kommandolinjeparameter sendt til din ansøgning. Den første parameter vil navnet på dit faktiske program (eksekverbar).