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

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

编辑:说三道四文库 发布时间:2017-03-28 06:08
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…


厉害!~~
强大的树型编程控件TeeTree1.01-Delphi资料 确定MEMO控件中的当前行和列-Delphi资料 让字体左、右对齐-Delphi资料 如何给TListBox加上水平的滚动条?-Delphi资料 如何快速选择一个组件的父亲-Delphi资料 如何用Delphi编写自己的可视化控件 如何用VB创建控件-Delphi资料 生成程序组和项-Delphi资料 实现超级链接-Delphi资料 实战Delphi数据网格色彩特效 使dbgrid的某几笔资料变色-Delphi资料 树形图(Treeview)的使用概述-Delphi资料 透明FORM-Delphi资料 为列表框添光彩-Delphi资料 限制FORM的大小-Delphi资料 用Delphi开发分隔线组件 用Delphi设计拨动、跳线开关组件 用Delphi 设 计 拨 动、 跳 线 开 关 组 件 用Delphi实现JPEG格式图像的显示 用Delphi制作动态有声标签 运行时生成控件-Delphi资料 在DBGRID中实现COPY、PASTE功能-Delphi资料 在Delphi程序的About窗口中建立URL连接 在Delphi中利用Tbatch组件完成数据批处理 在Delphi中巧改窗体文件实现控件数组化 在Delphi中实现不同风格的SPEED和BUTTON 在Delphi中实现类似VB中的控件数组。 在RichEdit中的串查找-Delphi资料 在按钮中快速启动程序-Delphi资料 怎样读出MEMO控件的当前值-Delphi资料 怎样使用Delphi 5中的TExcelApplication操纵Excel 97/2000 请问现在除了Radiate.com还有没有广告条挣钱的网站了? 我calligrapher给分 ###如何用PB写一段程序,调用数据库存储过程sp_upgrade,输入两个字符串参数,返回一个布尔值(注:在存储过程中的两个输入参数为@sp_test 谁能给我推荐一本delphi开发数据库应用的好书 我calligrapher给分2 如何在一个超链中产生两个事件一个超链到AVI,另一个使计数器加一? 我calligrapher给分3 delphi中如何实现导航式的界面? 怎样判断一个对象已经unload或load? 119!119!有谁能救我?????? 我感觉有一半的人已经疯了~~`~~真他妈的~~~~~ 如何修改系统环境空间的大小? ListView Report styte,想在一个item的一个subtiem里显示check标志? 关于图片的问题,小意思?不看后悔 按试用期的工资算,年薪70000,在上海算个什么水平 拿位大侠有开发web手机短信平台经验。 请问那里可以找到学习C++Builder5做数据库方面的资料,我要基础一点的,谢谢! 高分征答:“停用了‘调用取消’”是什么错误? 如何得到本机上的OUTLOOK的帐号的EMAIL地址? 大家骂来骂去不爽~~~~ 我转两个笑话吧~~~~ ###Profiles使Powerbuilder与后台数据库联系起来。根据数据访问的不同,Profiles应用的接口又分为那两类?### EVC中的CFileDialog怎么不能选择文件啊? 备份数据日志时出现下面提示.请高手指教 对《程序员》的建议,大家都来说说!!! 100分!!!!!在Win32中用那个函数可以打开指定的字符文件,如指定code.out,怎样打开????? 安装VS.NET失败,不想重装系统,怎么回事? 如何退定CSDN的邮件? 救命啊!小弟遇到一个非常奇怪的问题 请问,delphi6的中文版有吗? 请问目前比较流行的数据库对中文表及中文段的支持情况 薪水问题求教 VB调用动态链接库的问题,HELP! 高分求教,MyODBC!!!!!!!!!!!!!!!!!! vc++ 写了一个vb控件,如何让客户端打包下载 关于如何在linux下运行xml的程序的问题 急!请问那为大虾知道wast这个软件啊? 求救:用VC怎么调试程序(怎样设断点) 各位高手:>>>送分问题.....谢谢!! 关于安装程序.... 在Form上放一个Memo,响应Form的onMouseMove时,为什么在Memo上移动鼠标,事件中的传递的参数Sender总是Form而不是Memo? tc++中怎样使用bitmap 送分了!! bcb报表中只有richedit可以自动折行,如何解决? 如何把asccii字符串转化为unicode形式的字符串??? 高手请帮帮我吧 打印RichTextBox 的内容时,如何设置页边距? 可变参数的函数 想找个老师帮我提高 要做一个dll需要在不同的平台调用该如何声明? 硬盘分区表是哪个文件? 小亮家今年承包的鱼塘到期了,共抓起鲫鱼和鲢鱼500鲢千克,共卖了2800元,已知鲫鱼和鲢鱼每千克分别为6元和5元,则鲫鱼和鲢鱼各多少千克? 1.两只相同的脸盆,一只是空的,另一只装满水,我们从脸盆的斜上方观察,脸盆深度较深的是 20元和50元面值的人名币共2100元,50元面值的张数比20元面值的多14张,50元面值的人名币有多少张 竞选大队委演讲稿,400字左右还有竞选中队长.有自我介绍等、 王叔叔在鱼池里放养的鳊鱼比鲫鱼的4倍少80尾.鳊鱼鲫鱼一共放养了200尾,鳊鱼放养了多少尾? 我想在脸盆里种菜,盆底要打洞吗 以我的青春我做主为题写一篇作文,600字左右,一定要原创, 3条鳊鱼与5条鲫鱼的价格相等,每条鳊鱼比每条鲫鱼贵1.2元.每条鲫鱼的价格是多少元?要算是滴 最好还要解说还有一道题:大小两瓶油共重3千克.把大瓶油的4分之1倒入小瓶后,大瓶油与小瓶油 向盛着半盆水的脸盆里倒水,水发出哗哗的响声.找一个空玻璃瓶,对着瓶口用里吹气,听到玻璃瓶发出声音.这两个实验说明了什么 李芳同学被评为"金星少年"的光荣称号.改病句```````````````````````````````` 初中写开开学典礼后有感 作文600字听了校长在开学典礼的发言 你对新学期的的感触 想法. 为什么把一个蜡烛放在脸盆里,再在脸盆里倒水(不把蜡烛淹没),点燃蜡烛.为什么火能点到水里? (二) 21%我从小在四川农村的外婆家长大.有一天傍晚,我随着大人们到大田里去干活.突然,狂风骤起,大雨降临.大人们怕大雨把我淋坏了,让我先单独回家.小小的我决定抄近路回去.在吹哨子一 一批零件,甲单独生产要15小时,乙的工作效率比甲高百分之50,甲乙二人共同生产了4小时,乙比甲多生产了28零件,甲乙二人继续共同生产,完成任务时,乙生产了多少个零件?快.急.列式子 1.我这个是什么花(草).2.根长出盆底怎么办?(不要换盆的方法) 小明家有一个鱼塘,若按7:4的比例来放养鲤鱼和鲫鱼,鲤鱼苗就比鲫鱼苗多1200尾.小明家应购买多少尾两种 冬天早上起来跑步,是跑步回来再洗脸呢还是先洗脸再跑步呢、?跑步有时出汗,出汗回来脸上不是很舒服还是要洗脸,但是冬天太冷,紧接着洗脸又不是很好. 竞选体育委员演讲稿500字 鲫鱼苗在哪买 甲乙丙三人同时合做一批零件,甲6分钟做5个,乙每分钟做0.75个,丙做2个要3分钟,谁的工作效率最高? 求竞选卫生委员的500字演讲稿要500百字 刚孵出来的鲫鱼苗吃什么 本题改了:做一个零件,甲要4分钟,乙要8分钟,丙要6分钟,甲和乙和丙的工作效率比是什么?甲乙丙工.看清楚,本题已更改,三个人的:2.思路,怎么考虑的,怎么求(1)做一个零件,甲要4分钟,乙要8 关于安全的作文(300字)好的加分不要事例像地震 火灾 交通安全的防范 把一元钱换成角币,有多少种换法 (人民币角币的面值有五角,二角,一角三种) 把手浸入水中,水对盆地的压强将会怎么变化金星同学早上起来打了半盆水准备洗脸,这时脑子中突然出现了一个问题,当我把手浸入水中时,水对盆底的压强将怎样变化(变大 变小 不变) 关于安全的作文300字急 竞选体育委员的演讲稿300字 金星同学想到:当他把手浸如脸盆水中时,水对脸盆的压强将怎样变化?A将变大B将变小C保持不变D条件不足 我们打算放学后打扫教室翻译成英文 若按7:4的比例来放养鲤鱼和鲫鱼,那么鲤鱼苗就比鲫鱼苗多1200尾.问:这两种鱼苗各购买了多少尾 求一篇400字的《我的家》说明文求一篇400字的《我的家》说明文求一篇400字的《我的家》说明文求一篇400字的《我的家》说明文求一篇400字的《我的家》说明文求一篇400字的《我的家》说明 以安全为主题的作文300字以上 如果按7:4的比例来放养鲤鱼和鲫鱼,那么,鲤鱼苗就比鲫鱼苗多1200尾.这两种鱼苗各有多少尾 我需要6篇作文,1我的同桌 2我的课余生活 3我的星期天 4我的爸爸/妈妈 5玩 6我喜欢的小动物我需要这些作文,请在4天内帮我回答, 安全与我,作文300字左右 若按7:4的比例来放养鲤鱼和鲫鱼,鲤鱼苗就比鲫鱼苗多1200尾.小明家应购买多少尾两种鱼苗 老实说写:我和妈妈看电视,这篇作文. 关于安全教育的文章,黑板报用的,300字左右, 若按7:4的比例来放养鲤鱼和鲫鱼,那么,鲤鱼苗就比鲫鱼苗多1200尾,问:这两种鱼苗各购买了多少尾? 洗脸盆哪种好 竞选劳动委员演讲稿 500字PS:劳动积极被班主任提了好几次,别写反了! 买了两种鱼苗,若按7:4的比例来放养鲤鱼和鲫鱼,那么,鲤鱼苗就比鲫鱼苗多1200尾.问:这两种鱼苗各购买了多少尾? 我喜欢的妈妈 作文 竞选卫生委员发言稿500字 小明有1角、5角、1元的硬币各10枚,要取出2元,共有多少种不同的取法? 如何锻炼盆底肌 去年冬天,学校的一根内直径2厘米的水管被冻裂,导致大量水流失,据了解水管内的水流速度为每秒8厘米.算算看,如果一小时不修好水管,将会浪费水多少升 (1、)六一班的评议成绩是全校最好的班级.(修改病句)(2、)这次期末考试,我非争个前三名不可.(改为肯定句) 作文:我的周末 500字急不是流水账 去年冬天,学校的一根内直径2厘米的自来水管被冻裂,导致大量水流失.据了解水管内的水流速度约为每秒5厘米.算算看,如果1小时不修好水管,将会浪费水多少升? 竞选大队委的演讲稿 500字要提到:在班级组织了哪些活动,有哪些效果.我在班上发过报纸、杂志,效果还不错多写一点亮点 什么助人为乐啊等等新颖一点 装满水的容器以加速度g向下运动,对底部无压强,对容器侧壁是否有压强 去年冬天,学校的一根内直径2厘米的自来水管被冻裂,导致大量水流失.据了解水管内的水流速度约为每秒8厘米,算算看,如果1小时不修好水管,将会浪费水多少升?我没读懂. 小明家承包的鱼塘到期了水抽干后捕到鲫鱼和鳊鱼共50千克卖的2800元已知鲫鱼每千克6元鳊鱼每千克5元两种鱼各多少钱 活塞质量为M,面积为S,它们一起以加速度a向下运动,求封闭气体的压强 去年冬天,学校的水管冻裂,水流速度每秒8厘米,如果1小时学不好水管,会浪费多少升水?这是今晚的作业!水管内直径是2厘米 最近鱼塘里的鳊鱼死了而鲫鱼没死这是为什么啊 一件工程,甲独做8天完成,乙独做10天完成.甲和乙工作效率的最简单整数比是( 面值为10元、20元、50元的人名币(每种至少有一张)共24张,合计1000元,那么其中面值为20元的人名币有
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘