2016-07-25 4 views
0

VBScript를 실패 errorOccurred을 방출하지 않습니다 Qt는에서QProcess 내가 탭으로 Excel 파일을 변환하는 VBScript를 텍스트 파일로 구분 한

format = -4158 

Set objFSO = CreateObject("Scripting.FileSystemObject") 

src_file = objFSO.GetAbsolutePathName(Wscript.Arguments.Item(0)) 
dest_file = objFSO.GetAbsolutePathName(WScript.Arguments.Item(1)) 

Dim oExcel 
Set oExcel = CreateObject("Excel.Application") 

oExcel.DisplayAlerts = False 
oExcel.ProtectedViewWindows.Open(src_file) 
oExcel.ActiveProtectedViewWindow.Edit 

Dim oBook 
Set oBook = oExcel.Workbooks.Open(src_file) 

oBook.Worksheets(5).Activate 

oBook.SaveAs dest_file, format 

oBook.Close False 
oExcel.DisplayAlerts = True 
oExcel.Quit 

나는이 코드를 실행하기 위해 WScript와는를 사용하여 신호 QProcess를 연결 한을 :: errorOccurred to lambda :

QObject::connect(&wscript, &QProcess::errorOccurred, [=](QProcess::ProcessError error) 
{ 

    qDebug() << "Error has occured"; 

}); 

내 VB 스크립트에서 제한된보기가 제거되었습니다. 그러나 보호 된보기를 사용하지 않도록 스크립트를 수정했습니다. 이로 인해 내 스크립트에서 보호 된보기에있는 Excel 파일을 열 수 없으므로 Excel 파일을 열 수 없다는 오류가 발생합니다. 그러나 errorOccured 신호는 절대로 전송되지 않습니다. 왜 이런 일이 일어나는 걸까요?

답변

3

QProcess 자체에 문제가 있거나 실행중인 프로세스가 충돌하는 경우에만 신호가 방출됩니다 (이유는 here 참조).

VB 스크립트가 앱에 오류를 알리 길 원한다면 스크립트는 QProcess::exitCode을 통해 읽을 수있는 0이 아닌 종료 코드를 사용하거나 스크립트의 표준 오류 스트림에 쓸 수 있습니다. 잡아서 QProcess::readyReadStandardError 신호를 읽으십시오.