我使用的示例代碼打獵過程中我的Windows窗體應用程序從具體名單運行C#程序中其他應用程序與他的孩子的
void processStartEvent_EventArrived(object sender, EventArrivedEventArgs e)
{
string processName = e.NewEvent.Properties["ProcessName"].Value.ToString();
int processID = Convert.ToInt32(e.NewEvent.Properties["ProcessID"].Value);
if (_processNames.Contains(processName))
{
Process proc = Process.GetProcessById(processID);
if (GlobalVar.SourceWinForm.InvokeRequired)
{
GlobalVar.SourceWinForm.Invoke(new MethodInvoker(delegate { ProcessHandler.SetParent(proc.MainWindowHandle, GlobalVar.SourceWinForm.Handle); }));
}
else
{
ProcessHandler.SetParent(proc.MainWindowHandle, GlobalVar.SourceWinForm.Handle);
}
}
}
,你可以看到我使用的功能:
[DllImport("user32.dll")]
public static extern IntPtr SetParent(IntPtr hwc, IntPtr hwp);
除了一件事情,一切都很好。 例如,我將記事本應用程序捕獲到我的應用程序中。 所以它真的給我的記事本到我的應用程序窗口,但問題開始時,我按例如記事本「格式 - >字體」它打開記事本,這個子窗口的新子窗口,我apllication不是父親這個子窗口。
我怎麼可以追捕整個過程?包括他的孩子(子)窗戶?
如果你是**你的兒子的父親**那麼你不能也**他的兒子的父親**。一般而言,您可以重新監視您監控表單的每個子窗口,但必須通過輪詢(列舉子項)來執行此操作,並且還可能會中斷目標應用程序。退後一步。你爲什麼需要它? –
我做了一個KIOSK應用程序。我的應用程序阻止了窗口中的每一件事情,當他保護用戶執行除了我的應用程序之外的其他活動時,我只向用戶提供一個他可以使其運行和使用的程序。所以我希望這個用戶只會使用一個應用程序而不需要到桌面以外。 –
這不是製作自助服務終端應用程序的方法......您必須用您自己的應用程序(它是註冊表設置)替換默認的外殼程序,並使用策略和權限來確定用戶可以做什麼(或不能做什麼)。它與其他應用程序更兼容,當然更安全。 –