劫持另一个流程形式

时间:2018-02-22 10:53:30

标签: c# .net forms

因此,我被要求找出一种方法,使包含敏感数据的程序更加安全,因为我们的工作人员很高兴并且可能会使数据面临风险。

我已经加载了Visual Studio for C#,并找到了获得前面提到的应用程序的好方法。然后抓住主窗口并附上我自己的面板。该面板现在基本上可以像盲人一样在不使用时覆盖应用程序。

现在,我有一个在系统托盘中运行的程序,等待敏感数据出现在屏幕上,我的小面板劫持了整个窗口,现在看不到任何东西。

现在我的问题是,当我的面板被攻击时,我试图锁定的应用程序的主窗口似乎只是崩溃。我猜这是因为我的面板和应用程序属于不同的过程。

无论如何,我可以在这里做一些建议。

这是我的面板类。

class LockingPanel : System.Windows.Forms.Panel
{
    private IntPtr prn;

    [DllImport("user32.dll", SetLastError = true)]
    static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);

    public void SetParent(IntPtr parent)
    {
        prn = parent;
        SetParent(this.Handle, prn);
    }

    public IntPtr GetParent() {
        return prn;
    }

    [DllImport("user32.dll")]
    [return: MarshalAs(UnmanagedType.Bool)]
    static extern bool GetWindowRect(IntPtr hWnd, ref RECT Rect);

    [StructLayout(LayoutKind.Sequential)]
    public struct RECT
    {
        public int Left;        // x position of upper-left corner
        public int Top;         // y position of upper-left corner
        public int Right;       // x position of lower-right corner
        public int Bottom;      // y position of lower-right corner
    }

    public void FillParent()
    {
        RECT rtc = new RECT();
        GetWindowRect(prn, ref rtc);
        this.Location = new System.Drawing.Point(0, 0);
        this.Size = new System.Drawing.Size(rtc.Right, rtc.Bottom);

    }

任何人都对我如何解决这个问题有了更好的了解,或者至少让我的面板会让应用程序崩溃。

0 个答案:

没有答案