说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

如何在后台弹出窗体(窗口置顶)?

编辑:说三道四文库 发布时间:2017-02-23 06:10
HTML文档下载 WORD文档下载 PDF文档下载
好像设置topmost没有效果
比如后台程序(msn)之类的,探出消息框
从后台弹出窗体是什么意思。

Topmost 
或者 ShowDialog()方法来显示窗体。

消息框就是 MessageBox.Show()的各种重载。
 MessageBox.Show()
up
你问题描述清楚啊
一个测试程序
Program.cs
创建TestForm窗体

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace TestTopMost
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new TestForm());
        }
    }
}
TestForm.cs
每1秒产生一个TestMessage窗口

using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;

namespace TestTopMost
{
    public partial class TestForm : Form
    {
        private System.Timers.Timer m_timer = new System.Timers.Timer(1000);

        private static bool m_bThreadRunning = false;
        private static object privateObjectLock = new object();

        static bool GetThreadRunning()
        {
            bool bReturn = false;
            lock (privateObjectLock)
            {
                bReturn = m_bThreadRunning;
            }
            return bReturn;
        }

        static void SetThreadRunning(bool run)
        {
            lock (privateObjectLock)
            {
                m_bThreadRunning = run;
            }
        }

        public TestForm()
        {
            InitializeComponent();
            m_timer.Elapsed += new System.Timers.ElapsedEventHandler(TimerHandler);

            m_timer.AutoReset = true;
            m_timer.Enabled = true;
        }

        public void TimerHandler(object source, System.Timers.ElapsedEventArgs e)
        {
            Thread thread = new Thread(ThreadFunc);
            thread.Start();
        }

        public static void ThreadFunc()
        {
            if (GetThreadRunning() == false)
            {
                SetThreadRunning(true);

                TestMessage msg = new TestMessage();
                msg.ShowDialog();

                SetThreadRunning(false);
            }
        }
    }
}
TestMessage.cs
弹出1秒钟之后销毁自己

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace TestTopMost
{
    public partial class TestMessage : Form
    {
        private System.Timers.Timer m_timer = null;

        public TestMessage()
        {
            InitializeComponent();

            m_timer = new System.Timers.Timer(1000);
            m_timer.Elapsed += new System.Timers.ElapsedEventHandler(TimerHandler);
            m_timer.AutoReset = false;
            m_timer.Enabled = true;

            TopMost = true;
        }
        public void TimerHandler(object source, System.Timers.ElapsedEventArgs e)
        {
            Close();
        }
    }
}
这个测试代码无法在当前窗口为其他程序的时候,弹出TestMessage窗体并置顶
后来在form load的时候调用api setforegroundwindow + setwindowpos,可以了

        private System.Timers.Timer m_timer = null;
        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        private static extern int SetWindowPos(IntPtr hWnd, int hWndInsertAfter, int x, int y, int Width, int Height, int flags);
        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        private static extern System.IntPtr GetForegroundWindow();
        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        public static extern bool SetForegroundWindow(IntPtr hWnd);


this.Load += delegate 
            {
                if (Handle != GetForegroundWindow())
                    SetForegroundWindow(Handle);
                SetWindowPos(Handle, -1, 0, 0, 0, 0, 1 | 2);
            };
Form frm=new Form1();
frm.TopMost=True;
frm.Show();
winForm里这样:

Form frm=new Form1(); 
frm.TopMost=True; 
frm.Show();

webForm里这样:

            System.Text.StringBuilder sb = new StringBuilder();
            sb.Append("<script>");
            sb.Append("window.open('BBSTieSearch.aspx"','','fullscreen =0,scrollbars=0,toolbar=0,resizable=1,top=100px,left=100px,width=800px,height=500px')");
            sb.Append("</script>");
            Page.ClientScript.RegisterStartupScript(typeof(string), "k1", sb.ToString());
引用 9 楼 bartoooon 的回复:
后来在form load的时候调用api setforegroundwindow + setwindowpos,可以了 

C# code
        private System.Timers.Timer m_timer = null;
        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        private static extern int SetWindowPos(IntPtr hWnd, int hWndInsertAfter, int x, int y, int Width, int Height, int flags);
        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        priv…


厉害!~~
黑莓47亿美元收购的背后 微软或成最大受益者 搜索大战升级:360搜狗相互起诉对方不正当竞争 诺基亚将于10月22日发布6款新产品 平板Lumia 2520等 从17美元到50美元 Facebook股价上涨背后的两大关键 12个理由:为什么我会认为Android比iOS 7好! AMD推 &quot;Mantle&quot; API 欲释放GPU全部潜能 Salesforce架构:日事务过13亿,2.4万TPS的数据库峰值 久违的iOS,新鲜的SDK,豌豆荚发布云相册 喜大普奔:谷歌15岁了,生日快乐! 传福特CEO Alan Mulally目前最有希望执掌微软 微软计划将WP8和Win8应用商店合并?太好了! 响应开发者要求:Kinect for Windows SDK 1.8发布 OpenStack基金会BD总监:希望有更多的中国公司加入 CTO如何避免决策失控(三):从CEO角度看CTO的应对能力 IT界需求最旺的16项技能 PMC发布8系列RAID卡 找准国内互联网企业需求 早Google一步,eBay数据中心率先搭载了火星上使用的技术 目标专利2000,技术研发人员占55%,斐讯的厚积薄发 SwiftStack CEO:分布式存储的未来 触控陈昊芝:“好声音”标王对移动游戏未来的预测 Office将更强大:微软正开发Office Reader和Office Lens 百度技术专家详解Clouda 并称计划推出相应UI解决方案 少年才俊:看IT界8个不到20岁的科技公司创始人 Oracle与Freescale展开深度合作,Java或将一统物联网? 探秘Google新搜索引擎算法Hummingbird的16个疑惑 如何在开发项目里进行自我激励! 或许很受用:苹果、谷歌和亚马逊等公司的14个怪异面试题 12款不容错过的新款jQuery插件 技术开发者如何看实时Web App开发框架? 高薪技术排行:大数据居首,苹果相关次之,Java、C等相去甚远 谷歌开发网络跟踪新技术:AdID将取代第三方Cookie 一个页面,如何实现左边为链接信息,右边为内容? 关于模式对话框的问题 项目实战两问,关于操作系统和光盘运行,高手请进! 怎样判断发信成功 CDONTS.NewMail 在杭州搞JSP的,请进来交换QQ,邮件!我们需要交流! 如何用sendmessage让一个窗口最小化 我想把COM+组件的客户端安装包打到install shield 的安装包中,并且自动安装com+客户端安装包,可是。。。。 word2000中不能使用打印功能,为什么? CSDN是怎么了,三天两头出问题啊~!!!!!!!!!!!!!!!!!!!!!!!!!!!!! OleContainer.SaveToFile的文件用Word怎么打不开? vb的多线程如何实现? 这句话是什么意思!!!! 有个女孩问我的代码理论问题……紧急!!有请各路大仙 指针与数组常通用,但一个存值,一个存地址,能不能讲一下他们的内存如何分配,怎样互用的 我一和女朋友有矛盾时,就感到浑身无力,什么也做不下去,脑袋乱七八糟的,做什么都不专一,直到问题解决,不知大家有没有和我有一样感觉的? 海星是南京大学的吗? 请问。vb有没有字体选择的控件(.ocx) 请问在该专区里有没有四川绵阳水校到深圳的王师兄!huan_91_cn@china.com 游戏爱好狂们注意:有没有愿意建立游戏网页!!! 各位大虾请帮忙!!谢谢!!!!! 有关数据报表的处理,采用EXCEL 听说所有Enterprise Manager工具都允许简单地通过单击鼠标来切换身份 怎么恢复? 在数据库中建立临时表来进行数据操作,我对它在使用时何时建立何时删除不太了解,能给我说明一下吗? 如何在触发器中调用存储过程(sql server 或者 oracle)(无内容) 请问哪里有完整版的sql server下载,不要钱的,不要序列号的??? 请较两个英文短语的理解 我要做个套打的程序,希望高手可以提示一点思路,能用QR吗? 加载驱动的问题!! 请教DELPHI中的打印机设置问题,各位师兄请进来看一下! 急问:怎样编程实现打开已保存的quickreport文件(*.QRP)?主要是得到保存的文件名后如何处理打开操作 请问这语句的意思? 在用Rose进行系统分析的过程中,如何对界面的进行详细描述? 谁知道Kylix要在linux内核2.?版本以上才能安装?? 急死菜鸟拉,大家帮帮忙呀 高分求助!!!配置Tomcat4.0 请问那里有php聊天程序?能适合虚拟主机(Unix)、无数据库 有兄弟如此,我..... 我的Access文件怎么变成只读了?怎么变回来? 如何判断传入的字符为空? 帮忙看看,去空格的问题 applet被限制调用系统资源,那么applet打印问题该如何解决,高手进来讨论 MOUNT 怎么给分啊? 关于用Adobe Acrobat看书的问题 根据母菜单变换子菜单???? 怎样用代码生成菜单,给个例子. 我明年想去读书,全日制的那种,我报计算机专业还是英语专业?各位水园的朋友个建议! 问一个很菜的C++的问题,不得不看罗!! 请问哪里有Acrobat Reader中文支持版本 applet的高手们,如何让applet在载入时显示"程序正在载入中"的提示?????? 发生电器短路引起的火灾怎么处理 某工程若由甲工程队单独做需要40天完成,若乙工程队先单独做30天,再由甲、乙两工程队共同做需20天可完成将工程分成两部分,甲做其中一部分用了X天,乙做另一部分用了Y天,其中X、Y均为正整 良好生活习惯的谚语、俗语 现有一项工程,甲单独做63天,再由乙做28天即可完成,如果甲乙合作需要48天完成任务.现在甲先做42天,然后由乙来完成,还需要几天?方程啊 现在流行讲A 题某工程若由甲工程队单独做需要40天完成,若乙工程队先单独做30天,再由甲、乙两工程队共同做需20天可完成将工程分成两部分,甲做其中一部分用了X天,乙做另一部分用了Y天,其中X、Y均为正 现有一项工程,甲单独做63天,再由乙单独做28天即可完成,如果甲乙合作需要48天完成任务.现在甲先做42天,然后这是常规解法另解:甲63天,乙28天能完成甲48天,乙48天也能完成甲63-48=15天的工作量 讲通俗一点. 海市蜃楼的倒影是光的什么现象? 某工程先由甲独做63天,再由乙独做28天即可完成.如果由甲乙两人合作,需48天完成,现在由甲先独做42天,然后再由乙完成,还需要多少天? 通俗的讲, 为什么海市蜃楼是正景,而沙漠蜃景是倒影?这是光的全反射原理,可为什么会有不同? 用热学知识解释“,霜前冷雪后寒”这句谚语雪后寒我知道,就是霜前冷,跪求各位大哥大姐大叔大姨大妈大伯! 流行说的八卦是什么意思 带有严字的成语 一定要是成语 用热学知识解释“霜前冷,雪后寒”请简略一点 有关狼的成语和谚语以及介绍狼的相关知识和故事 ( )兵( )政的成语( )凶( )恶的成语 ( )三( )四的成语( )兵( )政的成语[要求两个()内要添近义词] ( )凶( )恶的成语[要求两个()内要添近义词] ( )三( )四的成语[要求两个()内要添反义词] 俗话说 霜前冷,雪后寒 请用学过的知识加以解释? 梦到家里失火是什么意思昨晚梦到和宿舍玩的最好的两个女生在宿舍玩,然后我说快穿衣服,咱们出去,结果下了楼竟然是我在我家开的商店里.再后来突然店里失火了,我拽上她俩就跑,到了门口 三极管工作状态判断一般来说应该是要接Re的,若不然就是没有Re同时也没有Rb2这个路,但是有些题就是有Rb2却又没有Re.如图,若没有Re,发射极直接接地的话,是不是Vb小于0.7V时,三极管截止,Vb大于0 人为引起火灾的因素有哪些 为什么会有海市蜃楼这种现象呢? 美丽奇特的“海市蜃楼”是光的折射产生的一种现象,它通常发生在什么时候? 听朋友说,现在流行什么手机二维码? 海市蜃楼是什么意思? 关于光的奇异景象 Google 的含义 能告诉我海市蜃楼是什么意思 海市蜃楼是不是光的折射现象? "我的GG" 有女的说"我的GG"怎么怎么...喊的到底是谁啊 LG还是亲哥哥?为什么有人说"我家GG"是指LG 三极管工作状态的条件是什么 某工程若由甲工程队单独做需要40天完成,若乙工程队先单独做30天,在由甲、乙两工程队共同做需20天可完成.求乙工程队单独需要多少天完成 一项工程,甲、乙两队合做18天可以完成,如果甲先做20天后,再由乙独做15天即可完成.现先由甲单独做12天,然后再由乙来做,还要几天可以完成?这是一道工程问题,可以用方程来解.希望正确率高 海市蜃楼是什么现象 某工程甲工程队单独做40天完成,乙工程队单独做30天,甲乙两工程队合作20天即可完成,乙单独需要多少天完 一项工程,甲单独做63天后,再由乙做28天即可完成.如果甲、乙合作需48天完成.现在甲先做42天,剩下的由乙来完成,乙还需做多少天?详细写出答题过程、原因.thank you! 三极管工作状态有哪几种? 关于物理的成语有哪些?(搜索20个与物理有关的成语),如声,光,热等并附带所对应的物理知识 海市蜃楼为什么会出现古代的景象? 按要求写出表示“多”的成语.颜色多的成语,困难多的成语,知识多的成语三种类型的成语至少四个,今天就要 有关于物理学原理的成语快 海市蜃楼是什么现象 “海市蜃楼”属于物理中的什么现象? 一个最经典的关于物理的成语 火灾事故发生的原因有哪些? 如何快速判断三极管的工作状态 你还知道哪些关于光的奇异景象 英语翻译“Sad when a men hiding in their place no one to cry silently,afraid to speak afraid to see people,but has not stop the tears,fear of loneliness fear of dark” 判断三极管工作状态 三极管有哪几种工作状态,其工作条件和特点是什么? 海市蜃楼的现象是怎样形成的, 如何判断三极管的工作状态固定偏流式放大电路中,当Rc、Rb的参数分别为()时,该电路的静态工作点处在放大区.设三极管的β=100.A.5.6kΩ,10kΩ B.5.6kΩ,510kΩ C.5.6kΩ,1MΩ D.100kΩ,1MΩ 麻烦 引起火灾的主要原因是什么,什么和什么 小功率电器能引起火灾吗?如果加了保险管的话会不会燃烧? 如何判断电路中三极管工作状态 某道路改造工程,有甲,乙两工程队合作20天可以完成.甲工程队单独施工比乙工程队施工多用30天完成此工程求解甲乙完成各需要多少天 电器短路为什么会引起火灾? 家里起火如何扑救 一项工程,甲.乙合作需20天完成.甲工程队单独做需30天完成.求乙工程队单独做需多少天?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn