DskPrt1.txt の最後の行まで正常に動作する次のコードがありますassign letter=
。ファイルは必要に応じて書き込まれます。ドロップダウン リストで、ドライブ文字を選択し、選択した文字を に送信しFILE fp
、書き出してから、diskpart に読み取らせるように指示します。これが出力です
ボリューム 1 が選択されたボリュームです
このコマンドに指定された引数は無効です。
これは、DskPrt.txt の 2 行目まですべて実行していることを示しています。手動でコピーしassign letter=X
てdiskpartに貼り付けましたが、問題なく動作します。私のコードで動作しないのはなぜですか?
パート1
SendMessage(
(HWND) hWndDropMenu, // handle to destination window
CB_GETLBTEXT, // message to send
(WPARAM) wParam, // not used; must be zero
(LPARAM)tmpMsg // not used; must be zero
);
パート2
FILE *fp;
fp = fopen("DskPrt1.txt", "wt");
char DskPrt11[] = "select volume 1";
char DskPrt12[] = "assign letter=";
fwrite (DskPrt11 , 1 , sizeof(DskPrt11) , fp ); //Line 1
fwrite("\n", sizeof(char), 1, fp); //New line
fwrite (DskPrt12 , 1 , sizeof(DskPrt12) , fp ); //Line 2
fwrite (tmpMsg , 1 , sizeof(tmpMsg) , fp ); //Letter
fclose(fp);
//Execute part 1 commands
std::wstring arrString[3] = {L"/C mkdir C:\\Users\\Andrew\\Desktop\\test",L"/C DISKPART /s C:\\Users\\Andrew\\Desktop\\DskPrt1.txt"};
LPWSTR cmd =L"C:\\Windows\\System32\\cmd.exe";
for(int i=0; i<2; i++)
{
STARTUPINFO info={sizeof(info)};
PROCESS_INFORMATION processInfo;
CreateProcessW(cmd, &arrString[i][0], NULL, NULL, TRUE, CREATE_NO_WINDOW, NULL, NULL, &info, &processInfo);
::WaitForSingleObject(processInfo.hProcess, INFINITE);
CloseHandle(processInfo.hProcess);
CloseHandle(processInfo.hThread);
}