现在,我需要模拟给定打开表单上的点击,而不会显示在其他所有表单之上。为了模拟点击,我使用的代码与https://stackoverflow.com/a/11161632/533599非常相似:我必须实现2次更改
代码工作得非常好,并且点击被触发,但每次它都会被触发,目标Form会获得焦点并弹出所有兄弟姐妹的顶部(但是会在我打开的每个窗口后面停留)。有没有办法防止这种行为?
答案 0 :(得分:0)
目前我设法做了类似于我需要的事情
[DllImportAttribute("user32.dll", EntryPoint = "SetForegroundWindow")]
[return: MarshalAsAttribute(UnmanagedType.Bool)]
public static extern bool SetForegroundWindow([InAttribute()] IntPtr hWnd);
[DllImportAttribute("user32.dll", EntryPoint = "GetForegroundWindow")]
public static extern IntPtr GetForegroundWindow();
[DllImportAttribute("user32.dll", EntryPoint = "BringWindowToTop")]
[return: MarshalAsAttribute(UnmanagedType.Bool)]
public static extern bool BringWindowToTop([InAttribute()] IntPtr hWnd);
IntPtr old = GetForegroundWindow();
LeftClick(hw, x, y);
SetForegroundWindow(old);
BringWindowToTop(old);
缺点是,“点击”形式仍然会弹出一秒钟,造成不良的风格效果。任何其他有助于将表单保留在后台的提示都很受欢迎:)