2011-07-06 6 views
2

를 들어 나는 심지어 내가 Acrobat Reader가에이 시도 내가이읽기 MainWindowHandle이 프로세스

private Process pDocked; 
private IntPtr hWndDocked; 
pDocked = Process.Start(path, PDFPath); 
while (hWndDocked == IntPtr.Zero) 
{ 
    pDocked.WaitForInputIdle(1000); 
    pDocked.Refresh(); 
    if (pDocked.HasExited) 
    { 
     return; 
    } 
    hWndDocked = pDocked.MainWindowHandle; 
} 

을 시도하고 결과가 hWndDocked = 0 입니다 아크로뱃 리더 (10 개) 프로세스를 들어 MainWindowHanlde을 읽으려고 9 나는 MainWindowHandle을 가지고 있지만 그 다음 속성이있는 경우 TR 10

그리고 감사

+0

"AR 10에서 작동하지 않는다"는 의미는 무엇입니까? 메인 윈도우의 핸들을 찾을 수 없거나 그 윈도우에서 작업 할 수 없었습니까? – Tigran

+0

이 작업을 더 이상 안정적으로 수행 할 수 없습니다. 메인 윈도우가 무엇인지 알아낼 수 없다는 단점이있는 acrord32.exe는 단일 인스턴스 어플리케이션이기도합니다. 이미 실행 중일 때 코드가 충돌합니다. 그 새로운 행동은 당신의 계획에 큰 구멍을 뚫어서 창 부모와 어울리게 만듭니다. –

+0

안녕하세요 Tigran 그리고 고마워, 나는 MainWindowHandle을 고칠 수 없었다. 그리고 Hans에게 감사한다. 그러나 만일 당신이 그렇게 말할 때, 이것을하는 적당한 방법은 무엇 이냐? 나는 나의 신청에서 그것을 도킹하고 싶다. –

답변

1

내가 가지고 같은 문제를 도와 찾아주십시오 Acrobat Reader가 작동하지 않았다 ue, MainWindowHandle이 없으며 "main form"에 자식 창이 있으면 프로세스의 MainWindowHandle은 예상 기본 창이 아닌 자식 창 핸들이됩니다. 기묘한!!! 왜 내가 그 이유를 이해할 수 있기를 바란다. 하지만 일단 이것을 발견하면 내 문제를 다른 방식으로 해결합니다 (제 경우에는 MainWindowHandle이 실제로 필요하지 않습니다)! 다음

:

public frmMain() 
     { 
      InitializeComponent(); 
      this.ShowInTaskbar = false; 
      this.ShowIcon = false; 
     } 

없음 MainWindowHandle (= 0)!

당신이 하위 창을 만들 경우,이 경우 프로세스의 MainWindowHandle이 frmLogon의 핸들이 될 것입니다 :

private void frmMain_Load(object sender, EventArgs e) 
     { 
      frmLogon frm = new frmLogon(); 
      frm.Show(); 
     } 

이 0으로 다시 프로세스의 frmLogon과 MainWindowHandle을 닫습니다 (= 0)!

희망 정보는 도움이됩니다.