捕捉梦想
※H※L※
博客园
::
首页
::
新随笔
::
联系
::
订阅
::
管理
::
17 随笔 :: 0 文章 :: 248 评论 :: 10 引用
只启动一个窗体,如果再次启动则激活该窗体
只启动一个窗体,如果再次启动则激活该窗体
以前就很想实现这个功能,不过不知从何处下手,初步做了一下只实现了只启动一个窗体,却无法实现激活该窗体,这是一个很大的遗憾呀!也是唯一美中不足之处.在网上找了好久,终于实现了这个功能,在这和大家一起分享一下.
1
using
System;
2
using
System.Collections.Generic;
3
using
System.Windows.Forms;
4
using
System.Diagnostics;
5
using
System.Runtime.InteropServices;
6
7
namespace
WindowsApplication2
8
{
9
static
class
Program
10
{
11
/**/
///
<summary>
12
///
应用程序的主入口点。
13
///
</summary>
14
15
[DllImport(
"
User32.dll
"
)]
16
private
static
extern
bool
ShowWindowAsync(IntPtr hWnd,
int
cmdShow);
17
[DllImport(
"
User32.dll
"
)]
18
private
static
extern
bool
SetForegroundWindow(IntPtr hWnd);
19
private
const
int
WS_SHOWNORMAL
=
1
;
20
21
[STAThread]
22
static
void
Main()
23
{
24
//
得到正在运行的例程
25
Process instance
=
RunningInstance();
26
if
(instance
==
null
)
27
{
28
//
如果没有其它例程,就新建一个窗体
29
Application.EnableVisualStyles();
30
Application.SetCompatibleTextRenderingDefault(
false
);
31
Application.Run(
new
Form1());
32
}
33
else
34
{
35
//
处理发现的例程
36
HandleRunningInstance(instance);
37
}
38
}
39
/**/
///
<summary>
40
///
得到正在运行的进程
41
///
</summary>
42
///
<returns></returns>
43
public
static
Process RunningInstance()
44
{
45
Process current
=
Process.GetCurrentProcess();
46
Process[] processes
=
Process.GetProcessesByName(current.ProcessName);
47
48
//
遍历正在有相同名字运行的进程
49
foreach
(Process process
in
processes)
50
{
51
//
忽略现有的进程
52
if
(process.Id
!=
current.Id)
53
{
54
//
确保进程从EXE文件运行
55
if
(process.MainModule.FileName
==
current.MainModule.FileName)
56
{
57
//
返回另一个进程实例
58
return
process;
59
}
60
}
61
}
62
//
没有其它的进程,返回Null
63
return
null
;
64
}
65
/**/
///
<summary>
66
///
处理正在运行的进程,也就是将其激活
67
///
</summary>
68
///
<param name="instance">
要处理的进程
</param>
69
public
static
void
HandleRunningInstance(Process instance)
70
{
71
//
确保窗口没有被最小化或最大化
72
ShowWindowAsync(instance.MainWindowHandle, WS_SHOWNORMAL);
73
//
设置真实进程为foreground window
74
SetForegroundWindow(instance.MainWindowHandle);
75
}
76
}
77
}
(作者:
侯垒
)
Tag标签:
只启动一个窗体
,
激活窗体
posted on 2008-04-15 11:57
侯垒
阅读(370)
评论(7)
编辑
收藏
网摘
所属分类:
C#
评论
#1楼
2008-04-15 12:18
李战
金鱼不错啊
回复
引用
查看
#2楼
[
楼主
]
2008-04-15 12:34
侯垒
@李战
呵呵,装饰页面而己.谢谢了.
回复
引用
查看
#3楼
2008-04-16 18:52
黄 [未注册用户]
不错不错,楼主辛苦了!
回复
引用
#4楼
[
楼主
]
2008-04-16 18:54
侯垒
@黄
呵呵.共同进步.
回复
引用
查看
#5楼
2008-05-24 17:04
SHUFE.41
Singleton 设计模式
lz加油
回复
引用
查看
#6楼
[
楼主
]
2008-06-03 08:00
侯垒
@SHUFE.41
以前我也用Singleton试着做过,不过没有成功,因为应用程序启动,再次启动的时候,它是不同的进程,所以用Signleton不是很好解决呀!
回复
引用
查看
#7楼
2008-07-04 21:18
egghead [未注册用户]
这样的窗体怎样实现:
在Vs2005中,当点击查找的时候(或者Ctrl+F)的时候会弹出查找窗体,如果再次点击“查找”按钮,或者按下Ctrl+F,如果该查找窗体没有被关闭,会自动激活,如果关闭会出现,并且在查找窗体显示的时候我还可以进行其他的操作(查找窗体不是模式的),我想用C#(NET2.0)来实现这样的功能,要求能达到那样的效果,并且,最好能够实现弹出窗体的时候(类似查询窗体),如果我在其他窗体操作的时候,操作的信息能够自动实时的显示在弹出的窗体中(此处有点类似日志窗口,或者是父窗体更新子窗体),这样的功能怎样才能实现!
回复
引用
新用户注册
刷新评论列表
标题
姓名
主页
Email
(博主才能看到)
验证码
*
看不清,换一张
[
登录
][
注册
]
内容(请不要发表任何与政治相关的内容)
网站首页
新闻频道
社区
小组
博问
网摘
人才
找找看
Remember Me?
登录
使用高级评论
新用户注册
返回页首
恢复上次提交
[使用Ctrl+Enter键可以直接提交]
Google站内搜索
相关文章:
相关搜索:
只启动一个窗体
激活窗体
相关链接:
所属分类的其他文章:
SQL 数据库操作类
只启动一个窗体,如果再次启动则激活该窗体
一个非常拽的效果
如何将自己的代码自动添加版权信息的及其扩展
如何将自己的代码自动添加版权信息
最新IT新闻:
后“开放”平台时代
李彦宏首次表态竞价排名问题:有错能改善莫大焉
杨致远发表博客解释辞职原因
微软公布免费安全软件计划
《时代》:杨致远被Google玩弄于股掌之间?
<
2008年6月
>
日
一
二
三
四
五
六
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
公告
我的最新闪存
又是一个星期天,闪一个.
11-14 17:56
与我联系
发短消息
搜索
常用链接
我的随笔
我的空间
我的短信
我的评论
更多链接
我的参与
我的新闻
最新评论
我的标签
留言簿
(2)
给我留言
查看留言
我管理的小组
大学生联盟
郑州Net俱乐部
我参加的小组
ASP.NET
每日一句英语
.NET 3.x
读书(Books)
web标准设计
jQuery
设计模式
NHibernate
博客园发展小组
创业交流
我参与的团队
Design & Pattern团队(0/886)
上海.NET俱乐部(0/2293)
博客园创业者(0/51)
三月软件工作室(0/28)
WCF技术研究团队(0/207)
asp.net开发团队(0/278)
经验汇(0/49)
大学生联盟(0/86)
WF技术研究团队(0/44)
我的标签
设计模式
(3)
C#
(2)
特效
(1)
技巧
(1)
模板
(1)
添加版权信息
(1)
版权信息参数
(1)
只启动一个窗体
(1)
激活窗体
(1)
SQL Operater
(1)
更多
随笔分类
(13)
asp.net(5)
(rss)
C#(5)
(rss)
设计模式(3)
(rss)
随笔档案
(17)
2008年7月 (1)
2008年5月 (3)
2008年4月 (2)
2008年3月 (5)
2008年2月 (1)
2008年1月 (1)
2007年12月 (1)
2007年11月 (1)
2007年8月 (2)
新闻档案
(4)
2008年5月 (4)
我的好友
我的博客
我的社区空间
我们软件小组
最新评论
1. re: 如何将自己的代码自动添加版权信息的及其扩展
@Sam Lin
哈哈,实用就好.
--侯垒
2. re: 如何将自己的代码自动添加版权信息的及其扩展
四个字,方便实用
--Sam Lin
3. re: 大学生联盟开发团队需要我们共同的努力
@狂热者
请注册博客园账号再加入.
--侯垒
4. re: 大学生联盟开发团队需要我们共同的努力
申请加入!
--狂热者
5. re: 大学生联盟开发团队需要我们共同的努力
已经加入.
--侯垒
6. re: 大学生联盟开发团队需要我们共同的努力
生请加入!!!
用户名:ttzhang
期待和大家一起学习和交流,共同提高!
--上不了岸的鱼{ttzhang}
7. re: 大学生联盟开发团队需要我们共同的努力
@海阔
当然可以.欢迎加入.
已经加入.
--侯垒
8. re: 大学生联盟开发团队需要我们共同的努力
我是海阔,学ASP.NET .我可以加入吗?
--海阔
9. re: 大学生联盟开发团队需要我们共同的努力
@烟头上的探戈
强烈同意,为了咱们自己毕业后能找个好工作,为了自己美好的将来,一定要好好的学习.
已经加入.
--侯垒
10. re: 大学生联盟开发团队需要我们共同的努力
博客园用户名 :pochonlee
对我们或者咱们大学生学习的建议:学生时代抓紧学习的机会
对团队的建议:好好发展
--烟头上的探戈
阅读排行榜
1. 如何将自己的代码自动添加版权信息(3869)
2. 如何将自己的代码自动添加版权信息的及其扩展(2680)
3. 设计模式-----桥接模式(Bridge Pattern)(2066)
4. 轻松学习适配器模式(Adapter Pattern)(1845)
5. 设计模式----建造者模式(Builder Pattern)(1469)
6. 大学生联盟开发团队需要我们共同的努力(1251)
7. SQL 数据库操作类(679)
8. ASP.NET 2.0 ajax中gridView的刷新问题! (591)
9. asp.net中我们所不希望看到的事情------刷新重复操作(551)
10. asp.net性能浅析(500)
评论排行榜
1. 如何将自己的代码自动添加版权信息(82)
2. 大学生联盟开发团队需要我们共同的努力(53)
3. 如何将自己的代码自动添加版权信息的及其扩展(29)
4. 设计模式----建造者模式(Builder Pattern)(22)
5. 设计模式-----桥接模式(Bridge Pattern)(20)
6. asp.net中我们所不希望看到的事情------刷新重复操作(8)
7. 只启动一个窗体,如果再次启动则激活该窗体(7)
8. SQL 数据库操作类(6)
9. 轻松学习适配器模式(Adapter Pattern)(6)
10. ASP.NET 2.0 ajax中gridView的刷新问题! (5)
Powered by:
博客园
Copyright © 侯垒
Powered by:
houlei