如何使windows窗体在c#中完成的Windows应用程序前来?
我在Windows应用程序中完成了全局鼠标事件。当我点击我的鼠标的中心按钮时,我想制作一个特定的表格最顶层...如何使windows窗体在c#中完成的Windows应用程序前来?
有一些应用程序在全屏模式下运行,所以我需要这样做,为了使我的表单对用户可见,因为这是查看它的唯一方法。由于Alt + Tab被禁用。这是一个Kiosk应用程序。
我尝试使用Topmost = true的特定形式和 我试着使用下面的代码...但没有用。我没有得到我的表格。
[DllImport("User32.dll")]
public static extern Int32 SetForegroundWindow(int hWnd);
[DllImport("user32.dll")]
public static extern int FindWindow(string lpClassName, string lpWindowName);
private void BringToFront(string className,string CaptionName)
{
SetForegroundWindow(FindWindow(className,CaptionName));
}
必须触发此窗体带来前端的全局热键正在完美工作。
如何让我的表单前来?谢谢。
得到窗口的句柄,并为此
SetWindowPos(HWND,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW);
不关我事,但是你有没有试过搞乱:
this.BringToFront();
this.Activate();
这对我的作品。 – 2014-03-20 18:24:44
要设置的全屏窗体的最顶层为false,然后继续。
您可能无法正确调用BringToFront方法。对于FindWindow API函数,lpClassName将是您的应用程序的名称(例如“MyApplication.exe”),而lpWindowName是指特定窗体的标题栏中的标题(例如“Form1”)。通常使用FindWindow通过其中一个或另一个,例如:
FindWindow("MyApplication.exe", null);
// or
FindWindow(null, "Form1");
我不确定当你通过这两者时会发生什么。
您可能还需要做一些简单的事情来实现这一点,比如调用特定窗体的Activate()方法。
我试过上面的,但是没有工作... – Anuya 2009-09-28 03:47:47
我想你应该发布一些额外的代码。我不确定您在做什么,完全处于信息亭模式。在Windows中显示表单并改变它们在z-stack中的位置是非常简单和基本的,但是你可能会做些奇怪的事情。 – MusiGenesis 2009-09-28 03:58:00
@MusiGenesis,我不能在这里发布我的整个代码,因为有很多。 是的,这对我来说也很奇怪......在全屏模式下,我的系统上还会运行另一个应用程序。当用户点击鼠标中心按钮时,我需要一种方式向用户显示我的表单。 我通过添加“HI”消息框来测试我的鼠标中心按钮为全局事件。它的工作完美。 唯一的是,我需要现在显示我的表单。 注::我的代码显示表单不是在相同的形式,它是在不同的地方。这是否会造成任何问题? – Anuya 2009-09-28 04:14:45
我解决它,这样做:
this.TopMost = true;
this.TopMost = false;
这对我有用。 – 2014-03-20 18:25:29
这对我有用,但我必须先做“this.BringToFront()”第一个 – 2015-10-09 13:10:03
@Andrew Keith,我试过了,但还是没有成果。 – Anuya 2009-09-28 06:20:48