003
31.01.2004, 18:33 Uhr
~Salvador12
Gast
|
Hallo
danke für deine Antwort, ich tu mal maine ganze funktion posten:
C++: |
void CFindFilesDlg::OnConvert() { //AddInfo(); UpdateData(TRUE); STARTUPINFO si; PROCESS_INFORMATION pi; TCHAR cPath[MAX_PATH]; CString aktPhad=this->AktPfadFinden(); CString Anfang ="cmd.exe /c cscript.exe "+aktPhad+"\\wmcmd.vbs -input "; CString Quele,a; CString Output; CString aut=" -output "; CString sPath; CString sPath1; int nOrdner,l,n; CString NameQ; CString Prov = " -loadprofile "+aktPhad+"\\Data\\";
if(m_list.GetItemText(0,4)=="Bereit") { for(int i=0;i<m_list.GetItemCount();i++) { //m_in=i; //m_Flag = 1; //CWinThread* pThread = AfxBeginThread (thrFunction, this); m_Flag = 0; //UpdateData(false); //Sleep(200); //MessageBox("Hall"); Output=m_list.GetItemText(i,1); l=Output.GetLength(); n=0; nOrdner=0; while(nOrdner!=-1) { if(nOrdner!=l-1) n=nOrdner; if(nOrdner!=l-1) nOrdner=Output.Find("\\",n+1); if(nOrdner==l-1) nOrdner=-1; } Output.Delete(n,l-n); Output+="\\Web\\"; CreateDirectory(Output,NULL); for(int j=0;j<m_list2.GetItemCount();j++) { NameQ=m_list.GetItemText(i,0); //MessageBox(NameQ); //int a=NameQ.GetLength(); NameQ.Replace(NameQ.Right(4),m_list2.GetItemText(j,0)); Quele=m_list.GetItemText(i,1)+m_list.GetItemText(i,0); NameQ.Replace(NameQ.Right(3),_T("wmv")); sPath=Anfang+Quele+aut+Output+NameQ+Prov+m_list2.GetItemText(j,0); strcpy(cPath, LPCSTR(sPath));
//die Conbertierung wird über Comandlind mit dem skript wmcmd.vbs ausgeführt ZeroMemory( &si, sizeof(si) ); si.cb = sizeof(si); ZeroMemory( &pi, sizeof(pi) ); if ( !CreateProcess(0,cPath, NULL, // Process handle not inheritable. NULL, // Thread handle not inheritable. FALSE, // Set handle inheritance to FALSE. 0, // No creation flags. NULL, // Use parent's environment block. NULL, // Use parent's starting directory. &si, // Pointer to STARTUPINFO structure. &pi )) { MessageBox("Konvertierung fehlgeschlagen","Error", MB_ICONERROR | MB_OK); }
WaitForSingleObject( pi.hProcess, INFINITE );//I // Close process and thread handles. CloseHandle( pi.hProcess ); CloseHandle( pi.hThread ); } m_list.SetItemText(i,4,"Fertig"); UpdateData(false); } }
if(m_list.GetItemText(0,0)=="") MessageBox("Video Dateien fehlen");
if(m_list2.GetItemText(0,0)=="") MessageBox("Provile Dateien fehlen");
}
|
Wie man sieht habe ich das ganze über ein tread probiert, wo ich dann über UdateData versucht habe das Fenster zu aktualisieren. Ging leider schief, das Programm stürzt dann ab. Danach habe ich Update Data mit dem befehl m_list.SetItemText(m_in,4,"In Bearbeitung") ersetzt. Funktioniert hat’s leider nicht, aber das Programm stützte wenigstens nicht ab. Für etwas Hilfe were ich dankbar.
gruß Salfador |