文档章节

C#:将另一个应用程序的主窗口移至屏幕最前

北风其凉
 北风其凉
发布于 2017/09/08 16:03
字数 325
阅读 24
收藏 0
点赞 0
评论 0

使用WindowsAPI函数SwitchToThisWindow,可以将指定窗口移动到屏幕最前。

如果要将另一个应用程序的窗口移动到最前,只需要找到该窗口的句柄,再调用SwitchToThisWindow函数即可。可通过遍历进程的方式找到该窗口主窗体的句柄。

建立一个C#写的Windows窗体应用程序,里面放一个TextBox用来写进程名,一个Button用来触发窗口置顶操作。

代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace TopWindowTest
{
    public partial class FormMain : Form
    {
        public FormMain()
        {
            InitializeComponent();
        }

        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        public static extern bool SwitchToThisWindow(IntPtr hWnd, bool fAltTab);

        /// <summary>
        /// 置顶
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnTop_Click(object sender, EventArgs e)
        {
            //找到指定的进程
            string processName = this.txtProcessName.Text;
            bool hasFound = false;
            Process processInfo = null;
            foreach (Process process in Process.GetProcesses())
            {
                if (process.ProcessName == processName)
                {
                    processInfo = process;
                    hasFound = true;
                    break;
                }
            }
            if (!hasFound)
            {
                MessageBox.Show("未找到指定进程");
                return;
            }

            //移动到最前
            SwitchToThisWindow(processInfo.MainWindowHandle, true);
        }
    }
}

程序运行结果如下,在文本框中输入calc后点击置顶按钮,计算器程序便会被移至屏幕最前:

DEMO程序下载地址:https://pan.baidu.com/s/1mimkCIG

END

© 著作权归作者所有

共有 人打赏支持
北风其凉

北风其凉

粉丝 114
博文 497
码字总数 462457
作品 4
朝阳
程序员
mac系统快捷键大全详细介绍

SimonXun
2016/10/17
6
0
mac 实用快捷键

参考自:Mac快捷键大全 https://jingyan.baidu.com/article/08b6a591aac09614a909224f.html 基本的快捷键: Command是Mac里最重要的修饰键,在大多数情况下相当于Windows下的Ctrl。所以以下最...

phpervip
2017/10/25
0
0
mac快捷操作

外部调用QQ聊天窗口:http://wpa.qq.com/msgrd?v=3&uin=624664181&site=qq&menu=yes 地址中624664181为对方QQ号,表示与QQ号为624664181人进行临时会话,实现QQ在线咨询(手机或PC都可以)。 ...

xiejunbo
2016/03/27
94
0
windows 10常用快捷键汇总

win10快捷键大全大家可以来了解一下,今天小编带来了win10常用快捷键,很多朋友喜欢使用快捷键来操作电脑,那么Windows10系统有哪些新的快捷键呢 • 贴靠窗口:Win +左/右> Win +上/下>窗口可...

三极行者
06/26
0
0
Lync 2013快速入门手册之七:Windows 8 支持—Lync MX的快速入门

登录并开始使用Lync 在 Windows 8开始 菜单中, 单击Lync。 (您需要提前从应用商店下载并安装。) 如果您看到您的姓名和状态,表明您已经登录成功。 1. 单击窗口右上角您的照片。 2. 单击 今天...

tianjinhm
2013/01/31
0
0
Android学习之Activity属性设置大全

Activity是Android组件中最基本也是最为常见用的四大组件之一,在android开发中,运用极为广泛,作为初学者需要熟练掌握,下例为Activity属性常用设置。 android:allowTaskReparenting 是否允...

maiziedu
2015/01/16
354
0
macbook 网络及使用技巧

macbook 快捷键总结 Command是Mac里最重要的修饰键,在大多数情况下相当于Windows下的Ctrl 1. Command+Option+Esc 键,可以调出后台任务管理界面 Command-Z 撤销  Command-X 剪切   Comm...

陈小扁
2016/05/11
65
0
基于Visual Studio2010与.NET 4.0--多显示器支持使开发效率事半功倍

在科幻电影中那些黑客们的屏幕装备:中间一个大屏幕,绿色的代码不断翻滚,一会排成个“高”字,一会排成个“手”字。主屏幕旁边还有几个小显示器,显示着来自各个方向的信息。这样的装备是不...

junwong
2012/03/09
0
0
activity属性设置大全

属性 可选值 含义 android:allowTaskReparenting true or false 是否允许activity更换从属的任务,比如从短信息任务 切换到浏览器任务。 android:alwaysRetainTaskState true or false 是否保...

会飞柚子
2016/03/02
18
0
Mac OS X 窗口操作快捷键

Finder 部分 组合键 快捷键 Command-A 选中最前面的 Finder 窗口中的所有项(如果未打开任何窗口则选中桌面内容) Shift-Command-C 打开“电脑”窗口 Option-Command-F 导航到已打开的 Spot...

xzs1913
2012/07/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

idea tomcat 远程调试

tomcat 配置 编辑文件${tomcat_home}/bin/catalina.sh,在文件开头添加如下代码。    CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=7829" Idea端配......

qwfys
今天
1
0
遍历目录下的文件每250M打包一个文件

#!/usr/bin/env python # -*- utf-8 -*- # @Time : 2018/7/20 0020 下午 10:16 # @Author : 陈元 # @Email : abcmeabc@163.com # @file : tarFile.py import os import tarfile import thr......

寻爱的小草
今天
1
0
expect同步文件&expect指定host和要同步的文件&构建文件分发系统&批量远程执行命令

20.31 expect脚本同步文件 expect通过与rsync结合,可以在一台机器上把文件自动同步到多台机器上 编写脚本 [root@linux-5 ~]# cd /usr/local/sbin[root@linux-5 sbin]# vim 4.expect#!/...

影夜Linux
今天
1
0
SpringBoot | 第九章:Mybatis-plus的集成和使用

前言 本章节开始介绍数据访问方面的相关知识点。对于后端开发者而言,和数据库打交道是每天都在进行的,所以一个好用的ORM框架是很有必要的。目前,绝大部分公司都选择MyBatis框架作为底层数...

oKong
今天
12
0
win10 上安装解压版mysql

1.效果 2. 下载MySQL 压缩版 下载地址: https://downloads.mysql.com/archives/community/ 3. 配置 3.1 将下载的文件解压到合适的位置 我最终将myql文件 放在:D:\develop\mysql 最终放的位...

Lucky_Me
今天
2
0
linux服务器修改mtu值优化cpu

一、jumbo frames 相关 1、什么是jumbo frames Jumbo frames 是指比标准Ethernet Frames长的frame,即比1518/1522 bit大的frames,Jumbo frame的大小是每个设备厂商规定的,不属于IEEE标准;...

问题终结者
今天
2
0
expect脚本同步文件expect脚本指定host和要同步的文件 构建文件分发系统批量远程执行命令

expect脚本同步文件 在一台机器上把文件同步到多台机器上 自动同步文件 vim 4.expect [root@yong-01 sbin]# vim 4.expect#!/usr/bin/expectset passwd "20655739"spawn rsync -av ro...

lyy549745
今天
1
0
36.rsync下 日志 screen

10.32/10.33 rsync通过服务同步 10.34 linux系统日志 10.35 screen工具 10.32/10.33 rsync通过服务同步: rsync还可以通过服务的方式同步。那需要开启一个服务,他的架构是cs架构,客户端服务...

王鑫linux
今天
1
0
matplotlib 保存图片时的参数

简单绘图 import matplotlib.pyplot as pltplt.plot(range(10)) 保存为csv格式,放大后依然很清晰 plt.savefig('t1.svg') 普通保存放大后会有点模糊文件大小20多k plt.savefig('t5.p...

阿豪boy
今天
3
0
java 8 复合Lambda 表达式

comparator 比较器复合 //排序Comparator.comparing(Apple::getWeight);List<Apple> list = Stream.of(new Apple(1, "a"), new Apple(2, "b"), new Apple(3, "c")) .collect(......

Canaan_
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部