2013-08-08 25 views
7

Próbuję uzyskać główną formę procesu, który rozpocząłem, ale FromChildHandle i FromHandle zawsze zwracają wartość null. MainWindowHandle jest jednak niezerowe.Otrzymywanie formy procesu potomnego

IntPtr p = process_wrapper.MainWindowHandle; 
Form form = (Form) Control.FromChildHandle(p); 
if (form != null) 
{ 
    form.Close(); 
} 

Odpowiedz

2

Formularz można pobrać tylko jako formant, jeśli formularz został wygenerowany przez aplikację. Nie można pobrać formularza z innego procesu, ponieważ proces nadrzędny nie jest świadomy obsługi < -> Mapowanie kontrolne procesu potomnego. Jeśli chcesz "zatrzymać" proces potomny (form.close()? Albo "czysty", lub przez życie:

process.CloseMainWindow() vs process.kill()

+0

dzięki. proces rozpoczyna się od mojej aplikacji. więc jest procesem podrzędnym. i chcę jawnie wywołać form.close(), aby przetestować coś konkretnego. – clamp

+0

@clamp Nawet jeśli proces jest wywoływany z procesu PARENT, proces potomny tworzy formularz i jest to część innego zakresu aplikacji. I dlatego nie można uzyskać do niego dostępu z ParentProcess. – dognose

+0

ok dzięki. więc nie ma sposobu, aby uzyskać ten formularz? – clamp

Powiązane problemy