C#将另一个应用程序的窗口移动到前端的问题

     这个问题源于做C#项目的时候,要实现的一个功能:桌面应用程序,点击图标,弹出登录界面,输入用户名及密码,登录;如果该用户名已登录,则不创建程序的新实例,而是直接将该用户的应用程序弹出,置于桌面前端,类似于Windows Alt+Tab功能。

     实现这个功能有多个函数,其中,尝试了:SetForegroundWindow(IntPtr hWnd)、SwitchToThisWindow(IntPtr hWnd,bool isRestore)。要使用这两个函数,需要:using System.Runtime.InteropServices,然后导入user32.dll:[DllImport("user32.dll")]。SetForegroundWindow(IntPtr hWnd)函数不能达到预期,只会在windows状态栏将应用程序改成当前窗口的状态(xp)。SwitchToThisWindow(IntPtr hWnd,bool isRestore)函数能实现要求。hWnd参数为进程句柄,isRestore参数指示是否要模拟一个Alt+Tab动作(将程序窗口提到前端)。要获得程序的进程句柄,方法如下。

using System.Diagnostics;

Process[] localByName=Process.GetProcessesByName(processName); //string processname 为程序运行时进程名称,可在Windows任务管理器--->进程--->映像名称中找到

IntPtr hWnd=localByName[i].MainWindowHandle; //一个应用程序可能有打开了好几个(如不同用户),i取决于你要获得哪个

SwitchToThisWindow(hWnd,true);

这样就可以了。   

类似windows任务管理器的“切换到”这个功能应该也可以用这个方法实现。

转载于:https://www.cnblogs.com/kangs/archive/2013/04/24/3040549.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值