2012-12-10 2 views
0

Java 용 COM 브리지 인 Jacob을 사용하여 기존 VFP 6 응용 프로그램을 호출하려고합니다.오류 발생시 VFP가 대화 상자를 표시하지 않게하십시오.

val vfp = new Application(new ActiveXComponent("VisualFoxPro.Application").getProperty("Application").toDispatch()) 
vfp.setVisible(false) 

try { 
    vfp.doCmd("do my.exe with myconfig.txt") 
} catch { 
    case t: Throwable => t.printStackTrace 
} finally { 
    vfp.doCmd("close data") 
    vfp.doCmd("clear all") 
    vfp.doCmd("clear") 
    vfp.quit 
    vfp.safeRelease 
} 

오류 조건이 없을 때이 코드는 잘 실행되고 예상 한 .dbfs를 생성합니다. 문제는 오류가 발생했을 때 (.dbf를 찾을 수 없거나, 다른 사용자가 사용중인 파일 등) GUI 창을 팝업하고 마우스를 사용하여 취소 할 때까지 프로그램 실행을 중지한다는 것입니다. 나는이 프로그램이 사용자 상호 작용이없는 서버에서 실행되기를 원하기 때문에 작동하지 않을 것이다.

VFP 6 프로그램을 변경하지 않고 오류를 정상적으로 처리하려면 어떻게해야합니까?

+0

VFP6 코드를 다시 빌드하기 위해 액세스 할 수 있습니까? – DRapp

+0

예, 코드에 액세스 할 수 있습니다. – rancidfishbreath

답변

2

, 내가

SYS sys 인 2335이 프로그램이 "자동"모드에서 실행중인 경우 식별하는 데 사용됩니다

(2335,0)에보고 제안, 그러한 팝업 대화 상자는 오류를 발생시키고 실제 "적중"ok/cancel/whatever 버튼이 계속되는 것을 방지합니다. 여기에는 사용자가 테이블을 선택하라는 팝업 창이 포함됩니다.

제한된 사용으로 인해 사용할 수있게되었을 때 나는 긍정적이지 않습니다. IIS에서 COM 서버를 처리 할 때 분명히 응답 할 사람이 없습니다.

+0

이것은 정확히 내가 찾고있는 것입니다. – rancidfishbreath

0

헤드리스 모드로 JVM을 시작하고 HeadlessException 또는 뭔가를 잡으십시오. 또는 런타임을 사용하여 GUI 프로그램을 실행할 Java 프로그램을 작성하고 콘솔에서 구문 분석 된 오류가 발생한 경우 다시 시작하십시오. 당신이 VFP6의 소스 코드를 가지고 있기 때문에

+0

HeadlessExceptions는 Runtime.exec 또는 OLE에 의해 시작되는 것과 같이 VM 외부에서 실행되는 UI에 의해 throw되지 않습니다. 또한 콘솔에 오류가 없습니다. – rancidfishbreath

관련 문제