0
我有以下代码可以正常工作,直到DskPrt1.txt中的最后一行assign letter=
。该文件被写入,因为它应该。在下拉列表中,我选择一个驱动器号,将选定的字母发送到FILE fp
,写出来,然后直接用diskpart读取它。这是输出从文件读取的diskpart错误
第1卷是所选体积
对于该命令指定的参数是无效的。
这告诉我它正在做所有事情,直到DskPrt.txt的第二行。我已经将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);
}
这个工作只有现在它不写入选定的字符。如果我选择“G”,它将“A”写入文件。如果我选择“N”,则分配“B”。 – arynhard
这是因为您的SendMessage调用错误。在你的评论中你说wParam必须是零,但这不是事实。 wParam必须是要检索的列表框项目的索引。 http://msdn.microsoft.com/en-us/library/windows/desktop/bb775862%28v=vs.85%29.aspx –