2009-05-11 3 views
0

내 보스는 그가 작성한 Windows 응용 프로그램을 가지고 있습니다. Windows 콘솔 응용 프로그램이 아니라 Windows GUI 응용 프로그램입니다. 우리는 물론 소스 코드를 갖고 있지만 콘솔 앱이되기를 원하지 않습니다. 일반 GUI 응용 프로그램으로 유지되기를 원합니다.PHP를 사용하여 Windows 응용 프로그램에서 출력 얻기

그는 PHP에서 호출하여 매개 변수를 전달하고 응용 프로그램에서 호출 PHP 스크립트에 정보를 반환 할 수 있기를 바랍니다. Windows 콘솔 응용 프로그램을 쉽게 호출하고 출력을 읽을 수 있습니다. VBS 스크립트를 호출하여 출력을 얻을 수도 있습니다.

그러나 일반 Windows 응용 프로그램에서 텍스트 파일에 출력을 쓰고 PHP 내에서 읽지 않고도 호출하는 PHP 스크립트에 데이터를 출력하는 방법을 알기 어렵습니다.

아무도 이것을 할 수 없었습니까? 그렇다면 어떻게?

미리 감사드립니다. 에이미


편집 추가 할

: 분명히, 보스 그의 응용 프로그램에서이 코드를 넣어 : PHP는 그는이 콘솔에 쓰기 작업을 수행하는 정보를

BOOL bConsole = AllocConsole(); 
HANDLE hOutput = GetStdHandle(STD_OUTPUT_HANDLE); 
DWORD dwCharsWritten = 0; 
string sS3Path = sCommandLine.substr(sCommandLine.find("S3://") + 5); 
string sMessage = "S3 Path: " + sS3Path; 

BOOL bWritten = WriteConsole(hOutput, sMessage.c_str(), sMessage.size(), &dwCharsWritten, NULL); 

그러나보고되지 않습니다. 우리는 exec 및 shell_exec를 사용하지 않으려 고 시도했습니다.

답변

0

우리의 최종 해결책은 내 상사가 자신의 Windows 응용 프로그램을 수정하는 것이 었습니다. 그는 앱 내에서 콘솔에 글을 쓸 수 있었고 그 결과 콘솔을 읽을 수있었습니다.

에이미

3

여기서 가장 좋은 점은 응용 프로그램이 지정된 경우 콘솔 응용 프로그램처럼 동작하게하는 명령 줄 스위치를 추가하는 것입니다. 그렇지 않은 경우 GUI입니다.

표준 출력 또는 파일을 통해 출력을 보내지 않는 한 GUI 응용 프로그램에서 정보를 얻을 수 없습니다.

+1

분명히 이것은 GUI 응용 프로그램 또는 콘솔 응용 프로그램과 같은 응용 프로그램을 실행하는 선택으로하지 런타임에, 응용 프로그램의 빌드 시간에 만들어, 비 간단하다 - 당신은 할 수 없습니다 * 정말 * 명령 줄 스위치를 기반으로 선택하게하십시오. 참조 : http://stackoverflow.com/questions/54536/win32-gui-app-that-writes-usage-text-to-stdout-when-invoked-as-app-exe-help –

+0

내가 말했듯이, LIKE처럼 행동하십시오. ... GUI 응용 프로그램이더라도 정보를 표준 출력으로 파이프 할 수 있습니다. 콘솔 창은 나타나지 않지만 다른 프로그램은 계속 정보를 읽을 수 있습니다. –

3

가장 좋은 방법은 COM GUI 구성 요소로 노출되도록 Windows GUI 응용 프로그램의 논리를 적절하게 다시 설계하는 것입니다. GUI 응용 프로그램과 PHP 스크립트는 모두 COM 구성 요소를 호출하고 동일한 논리를 사용할 수 있습니다.

이 경우 데이터 교환은 필요 없으며 문자를 통해 이루어져서는 안됩니다. COM 구성 요소에서 형식화 된 속성을 설정하고 읽음으로써 데이터 교환을 수행 할 수 있습니다.

이것은 COM의 의도입니다. 물론 PHP에는 Windows에서 COM 구성 요소를 호출 할 수있는 성숙한 라이브러리가 있습니다.

웹 응용 프로그램에서 GUI 응용 프로그램을 호출하는 것은 정말 좋은 생각입니다. 그 일을 할 때 문제가 있는지 묻고 있습니다. COM 접근 방식이 훨씬 더 좋습니다.

업데이트 : 당신은 응용 프로그램 많이 명령 줄 응용 프로그램하고자하는 방법을 승리 양식에 매개 변수를 전달할 수 있습니다 PHP COM DOC

0

. main 메소드에서 arguments 매개 변수 사용.

이것은 winforms 응용 프로그램을 약간 수정해야하지만 일부 매개 변수를 전달하면 php에서 exe를 호출 할 수 있습니다.

비즈니스 요구 사항은 확실하지 않지만 비즈니스 도메인과 GUI를 구분하여 응용 프로그램을 작성하는 것이 이상적입니다.이 cmd 행 프로세스가 winforms의 모든 기능을 갖출 필요가 없을 가능성이 높기 때문입니다 app이 아니라 일부 입력에서 적절한 출력을 생성하는 경우 업무용 논리를 다시 작성하지 않고도 응용 프로그램의 cmd 버전을 구현하는 데 너무 큰 거래를해서는 안됩니다.

관련 문제