c ++ - ShellExeute Format DOS kommando

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at udføre DOS 'FORMAT-kommando ved hjælp af Windows ShellExecute API. Jeg er ikke sikker på, hvordan jeg skulle køre DOS-kommandoer til ShellExecute. I øjeblikket bruger jeg følgende kode:


DWORD returnCode=0;
TCHAR Command[1024];
\_stprintf\_s(Command, \_T("Format M: /FS:FAT32 /Q /X /V:RED"));

SHELLEXECUTEINFO sexi = {0};
sexi.cbSize = sizeof(SHELLEXECUTEINFO);
sexi.hwnd = NULL;
sexi.fMask = SEE\_MASK\_NOCLOSEPROCESS;
sexi.lpFile = \_T("cmd.exe");
sexi.lpParameters = Command;
sexi.nShow = SW\_SHOW;

if(ShellExecuteEx(&sexi))
{
    DWORD wait = WaitForSingleObject(sexi.hProcess, INFINITE);
    if(wait == WAIT\_OBJECT\_0)
        GetExitCodeProcess(sexi.hProcess, &returnCode);
}


Kørsel af dette stykke kode vil bare hænge som WaitForSingleObject vil vente, indtil cmd-vinduet er lukket. Jeg har forsøgt at bruge kommandostrengen som SHELLEXECUTEINFO lpFile, men det mislykkedes.


Og selv når du udfører denne kode, åbner den bare et CMD-vindue uden at udføre formatkommandoen.


Jeg skal udføre FORMAT-kommandoen lydløst uden at vise et konsolvindue. Jeg bruger DiskPart til at formatere drevet på Win7, men for XP er jeg fast med FORMAT.


Kan nogen hjælpe venligst? !!!


Hilsen


P. S. Jeg skal også tilsidesætte den 'Insert New Disk' -prompt, der viser, når du udfører en FORMAT-kommando, så brugeren ikke behøver at klikke på Enter for at formatprocessen skal starte.

Bedste reference


Du kan bruge SHFormatDrive-funktionen. Dette vil stadig vise dig en dialogboks. Eller kontroller volumenklassen, som synes at gøre, vil have, du vil have. [2] [3]