MyApp(.NET C#)由OtherApp(c++)触发。

触发后,我的应用将接管整个屏幕,并为用户提供两个选择。一个选项退出MyApp并返回到OtherApp主屏幕。第二个选项退出初始屏幕,并显示另一个屏幕供用户输入-输入后,它退出并返回到OtherApp。

有时,OtherApp屏幕不会重新绘制(只能看到背景,不能看到按钮)-我不能轻易复制它(当我做这很偶然时),但是我已经在许多应用程序上看到了。

MyApp是否有办法强制对OtherApp进行屏幕重绘?

是什么原因造成的?

声明-不是我们的其他应用程序。我们的客户使用OtherApp。 MyApp由文件监视程序事件触发。当我们看到文件时,将对其进行处理。如果这是我们要查找的文件,则为用户提供两个选项。 OtherApp不知道MyApp存在。

最佳答案

尝试获取OtherApp主窗口的hwnd并使整个事情无效:

[DllImport("user32.dll")]
static extern bool InvalidateRect(IntPtr hWnd, IntPtr lpRect, bool bErase);

[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

static void InvalidateOtherApp()
{
  IntPtr hWnd = FindWindow(null, "OtherApp's Main Window's Title");
  if (hWnd != IntPtr.Zero)
    InvalidateRect(hWnd, IntPtr.Zero, true);
}

08-26 18:37