2012-03-21 3 views
1

.net에서 chrome과 유사한 Windows 응용 프로그램을 만들 수 있습니까?.net에서 다중 프로세스 UI를 만들 수 있습니까?

이것은 각 화면/탭이 프로세스라는 것을 의미합니다.

+0

예를 들어 각기 고유 한 브라우저가있는 여러 탭을 의미하는 경우 가능합니다. –

+0

@MrWednesday 아니요 각 양식/컨트롤 (winform 또는 wpf)이 자체 프로세스에서 호스팅됨을 의미하지 않습니다. – Simon

답변

1

크롬의 복용량에는 기본적으로 마법이 없습니다.

기본 UI를 제공하는 호스트 프로세스가 필요합니다. 그런 다음이 호스트 프로세스는 분리 된 각 컨텍스트에 대해 자식 프로세스를 시작합니다 (예 : 크롬 페이지). 이제 자식 프로세스가 호스트와 통신 할 수있는 방법이 필요합니다. 이 작업은 Windows의 명명 된 파이프를 사용하여 수행 할 수 있습니다. 호스트는 파이프를 작성하고 프로세스 인수를 통해 해당 파이프 이름을 하위에 처리 할 수 ​​있습니다. (프로세스 탐색기를 열고 크롬의 하위 프로세스를 보면, --channel = 6831.059FF640.845232221과 같은 인수가 보일 것입니다.

이제 경계가없는 각 하위 프로세스에 창을 추가합니다 일반 내용). 호스트는 이제 모든 창 변경 사항을 해당 하위 항목으로 전송해야합니다. 따라서 호스트가 움직이면 아이는 실시간으로 위치를 수정해야합니다. 호스트가 최소화되면 자식 또한 최소화해야합니다. 컨텍스트가 전환되면 하나의 하위 창이 보이지 않게되고 창이 표시됩니다.

아이가 죽으면 새 아이디 만 만들고 상태를 복원하면됩니다.

크롬 시나리오의 대안은 콘텐츠 내의 모든 마우스 및 키보드 상호 작용을 해당 하위 프로세스로 전송 한 다음 해당 하위 프로세스에서 모든 처리 및 계산을 수행하고 이름 지정 파이프를 통해 다시 호출 정보를 다시 보내는 것입니다. 그 다음 호스트는 렌더링을 이용한다.

0

Thread을 사용하여 각 양식을 만들 수 있으며 그 양식은 해당 스레드에 의해 보류됩니다. 그러나 다른 양식 컨트롤에 액세스 할 수는 없습니다. 당신은 응용 프로그램과 같은 완전한 크롬을 갖고 싶어

는, 당신은 응용 프로그램 비주얼 C++을 사용

0

내가 사용을 크롬 특정 메커니즘을 모르는을 개발해야합니다. 그러나 HWND를 다른 프로세스에 다시 적용 할 수 있다는 것을 알고 있습니다. 사실, 나는 크롬이 사용하는 모든 기술이 P/Invoke 비트로 닷넷에 복제 될 수 있다는 좋은 돈을 걸고 싶다.

관련 문제