2013-08-08 22 views
7

alma Başlarken bir işlemin ana formunu almaya çalışıyorum, ancak FromChildHandle ve FromHandle her zaman null döndürür. MainWindowHandle ancak sıfırdan farklıdır.Bir alt işlemin formu

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

cevap

2

Söz konusu form, uygulamanız tarafından oluşturulmuşsa, formu yalnızca bir denetim olarak alabilirsiniz. Ana işleminiz tanıtıcıdan haberdar olmadığından, başka bir işlemden form alamazsınız. < -> Alt işlemin denetim eşlemesi.

Sadece çocuk işlemini "durdurmak" istiyorsan (form.close()?) Tüm işlemi basitçe durdurabilirsiniz. Ya, ya zorla "Temiz":

process.CloseMainWindow()

+0

process.kill() vs teşekkürler. süreç başvurumdan başlatıldı. bu yüzden çocuk süreçtir. ve açıkça buna özel bir şeyi test etmek için form.close() öğesini çağırmak istiyorum. – clamp

+0

@clamp İşlem, PARENT sürecinizden çağrılsa bile, formu oluşturan alt işlemdir ve bu başka bir uygulama kapsamının parçasıdır. İşte bu yüzden ParentProcess'ten erişemezsiniz. – dognose

+0

tamam teşekkürler. Yani bu formu almanın bir yolu yok mu? – clamp

İlgili konular