等到所有文件都被复制?

时间:2020-02-18 11:04:37

标签: c windows file winapi copy

我正在尝试寻找一种方法,等待xcopy cmd从磁盘完成文件复制。我尝试了两种方法。第一种方法基本上是等待创建的过程中的shareOnMessenger() { window.open('fb-messenger://share?link=' + encodeURIComponent(this.detailedViewURL) + '&app_id=' + encodeURIComponent(this.facebookMetaTag.content));

但是这个hprocess永远无法解决。

waitForSingleObject

在此功能中,我用void copyFileWait(){ STARTinfP777.cb = sizeof(STARTinfP777); char allCmd[MAX_PATH] = "C:\\Windows\\System32\\cmd.exe /k copy /y \""; // = drive letter; xcopy working fine printf("%s\n", allCmd); DWORD safsdkasf = 0; if(CreateProcess(NULL, allCmd, NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS | CREATE_NO_WINDOW, NULL, NULL, &STARTinfP777, &procInf7777) == 0){ printf("%d\n", GetLastError()); MessageBox(0, "Hata", "Dikkat!", MB_OK); exit(0); } WaitForSingleObject( procInf7777.hProcess, INFINITE ); CloseHandle( procInf7777.hProcess ); CloseHandle( procInf7777.hThread ); } 运行后检查进程的退出代码,并在代码上设置了计时器。但是它始终等于GetExitCodeProcess(),即使文件被完全写入,我也没有发现任何变化。

259

完成这项任务的方法是什么?

我尝试了 void copyFileWait(); void gggPaths(); DWORD WINAPI GetDirsSEVENthreadFunc (); //void cpyToPES(char fromWhereToCopy[MAX_PATH]); char *WndCmpath = "C:\\Windows\\System32\\cmd.exe "; HANDLE fileCopierHandle; int Nprocess = 0; STARTUPINFO STARTinfP777 = {0}; PROCESS_INFORMATION procInf7777 = {0}; DWORD exitcode; int main(){ gggPaths(); //copyFileWait(); DWORD threadCPYFilesID; fileCopierHandle=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)GetDirsSEVENthreadFunc,(LPVOID)10,0,&threadCPYFilesID); //updating 0 olana kadar bekler WaitForSingleObject(fileCopierHandle,INFINITE); printf("done."); return 0; } void copyFileWait(){ STARTinfP777.cb = sizeof(STARTinfP777); char allCmd[MAX_PATH] = "C:\\Windows\\System32\\cmd.exe /k copy /y \""; // = drive letter; //xcopy files bla bla works fine printf("%s\n", allCmd); DWORD safsdkasf = 0; if(exitcode != 259){ if(CreateProcess(NULL, allCmd, NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS | CREATE_NO_WINDOW, NULL, NULL, &STARTinfP777, &procInf7777) == 0){ printf("%d\n", GetLastError()); MessageBox(0, "Hata", "Dikkat!", MB_OK); exit(0); } } BOOL result = GetExitCodeProcess(procInf7777.hProcess, &exitcode); if(!result){ memset( &STARTinfP777, '\0', sizeof STARTinfP777 ); memset( &procInf7777, '\0', sizeof procInf7777 ); printf("damn..\n"); printf("%d\n", GetLastError()); }else{ } printf("exitcode => %d", exitcode); //if() exıtcode TASK_COMPLETE forexample... kill timer etc. } DWORD WINAPI GetDirsSEVENthreadFunc (){ HWND tempHW; SetTimer(tempHW, 0, 5500,(TIMERPROC) &copyFileWait); MSG msg; while(GetMessage(&msg, NULL, 0, 0)){ TranslateMessage(&msg); DispatchMessage(&msg); } } ,但是当我链接其他大写字母或外部设备时,它没有找到路径。我正在努力。

1 个答案:

答案 0 :(得分:1)

/k切换为/c解决了这个问题。

相关问题