激活后台运行程序的窗口

MFC程序多窗口引起的激活和非激活问题 公司的项目一直都是基于MFC开发的,界面上面布满了各种各样的窗口,有时候就会出现一些奇怪的现象。我就是写了这么一篇文章来记录下自己遇到的奇怪现象。 1、在我的程序中,有一个CView的派生类窗口。上面有一些编辑框和下拉框。因为需求的原因,在我的编辑框失去焦点的时候要去保存编辑框中的文本。我处理了EN_KILLFOCUS消息,简要代码如下: BOOL CMaskEdit::OnEnKillfocus 阅读详情

   最近工作的时候遇到激活后台程序窗口的问题,试了好多方法才成功,在这里留点记忆。

   我的程序一般不显示画面直接在后台运行,启动后直接进入系统托盘(Task Tray ),但在用户需要的时候需要显示运行状态画面。画面启动方法有两种:系统推盘启动和Explorer的右击菜单启动。系统托盘启动的时候没有问题,但是从Explorer启动的时候无法让窗口显示到最前端。尝试了SetForegroundWindow和BringWindowToTop等各种方法都没有成功,最后想到SetWindowPos的HWND_TOPMOST先把窗口显示到最上面,显示后再用HWND_NOTOPMOST把窗口的topmost属性删掉,这样的确显示是没有问题了,但是出现以下问题:启动后我的UI和Explorer都是被激活状态(标题栏深色显示),focus还是显示在explorer上。试着用setfoucs还有killfoucs之类处理都没有取得成功,最后用下面一段代码实现。

 

HWND hCurWnd = NULL;

DWORD dwCurID, dwMyID;

 

hCurWnd = ::GetForegroundWindow();

dwMyID = ::GetCurrentThreadId();

dwCurID = ::GetWindowThreadProcessId( hCurWnd, NULL );

::AttachThreadInput( dwCurID, dwMyID, TRUE );

::SetForegroundWindow( m_hWnd );

::AttachThreadInput( dwCurID, dwMyID, FALSE );

 

::SetWindowPos( m_hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE );

::SetWindowPos( m_hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE );

 

Win32 程序在启动时激活前一个启动程序的窗口 UWP 程序天生单实例。当然,新 API (10.0.17134)开始也提供了多实例功能。不过,传统 Win32 程序可就要自己来控制单实例了。 本文介绍简单的几个 Win32 方法调用,使 Win32 程序也支持单实例。 激活之前进程的窗口 我们可以通过进程名称找到此前已经启动过的进程实例,如果发现,就激活它的窗口。 [STAThread] static void Mai... 阅读详情

相关推荐

WorkBuddy结合DeepSeek与Skill:文献检索自动化与Token成本控制实战

Agent工具与大模型API的结合正重塑知识工作者的日常流程。在实际工程中,调用大模型处理批量任务常面临Token消耗过快、成本不可控的痛点,而国产大模型DeepSeek以极低的API定价和兼容OpenAI接口的特性,为规模化文本处理提供了“Token自由”的可能。同时,可复用的Skill机制能够将特定领域的工作流固化为标准化步骤,让Agent自动执行检索式生成、文献筛选与摘要归纳等复杂操作。本文从这一技术背景出发,以科研文献检索为应用场景,演示如何利用WorkBuddy、DeepSeek API与自建文献

weixin_29061509的博客 483

winform show 子窗体之后,保持当前窗体的状态栏激活状态

为了提供用户体验,有需求是窗体的窗体不抢父窗体的激活状态,因为window激活、失活的时候状态栏会有明显的改变 以下说的窗体都是Show的情景,不是ShowDialog 1.在窗体下使用ShowWithoutActivation protected override bool ShowWithoutActivation { get { return true; } } 这可以在show的了之后,不会使父窗体失去激活状态 但是当鼠标show的窗体,主窗体还是失活了 ...

kangkang18185的专栏 1902

3D Slicer中安装MedSAM插件

大家应该都读过这篇论文:《Segment Anything in Medical Images》这个插件便是该论文团队推出的在3D Slicer上使用的插件,可以分割医学图像的任何感兴趣区域。

m0_73719342的博客 2329

[搬家帖]窗口总在最前并保持激活

最近写一个程序,要求对话框总在最前,并且始终保持激活状态。在网上搜了半天,找到一段代码: CRect rc; GetWindowRect(&rc); SetWindowPos(&wndTopMost,rc.left,rc.top,rc.bottom,rc.right, SWP_NOMOVE |SWP_...

weixin_30924087的博客 849

TMP112/TMP102温度传感器驱动开发与嵌入式实战

数字温度传感器是嵌入式系统环境感知的核心器件,其通过I²C等标准总线实现高精度、低功耗测温。原理上依赖ΔΣ模数转换与二进制补码数据格式,结合寄存器配置实现模式控制、阈值报警与功耗管理。技术价值体现在±0.5°C级精度、1μA级静态电流及SOT-563超小封装带来的系统集成优势。广泛应用于工业MCU热监控、电池物联网终端、医疗电子温度补偿及汽车ECU板级测温等场景。本文围绕TMP112/TMP102展开,深入解析寄存器协议、硬件接口约束、HAL驱动分层设计、FreeRTOS任务调度及生产级校准方法,覆盖从芯片

weixin_35756690的博客 674

halcon3d点云补全方法

属于halcon实例中的内容,后面还接了一部分的匹配

Tianwen_running的博客 1231

C# 同时保持两个窗体激活

C#中,如何同时保持两个窗体激活?基本的思想是当一个窗体激活时设置另一个窗体激活。这样相互激活。然而我们只是用单纯的C#代码是无法实现的,我们需要用到WinApI。我们现在有Form1和Form3两个窗体,Form1作为起始窗体。public partial class Form

abrahu的专栏 5380

秋叶ComfyUI整合包使用FRP实现公网访问教程 ComfyUI内网穿透 秋叶整合包

最近在做 ComfyUI 的实验时,我发现很多小伙伴都遇到一个问题:本地启动的 ComfyUI 服务只能在本地访问,想要通过公网远程访问,就必须借助来实现。作为一名前端开发工程师,我花了点时间把 ComfyUI 启动器和 FRP 配置整合了一下,今天就分享给大家。本文适合已经了解。需要注意的是 穿透到公网的话任何人都能访问 为了安全建议看我另一篇帖子加上密码验证 防止恶意攻击。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1344

让子窗口和父窗口同时处于激活状态

                                    让子窗口和父窗口同时处于激活状态                                             周银辉   一般情况下,激活父窗口的时候,子窗口会失去焦点,同理,激活子窗口的时候,父窗口也会失去焦点,这在某些时候不太好看,比如子窗口作为ToolWindow漂浮在父窗口上面时。Visual Stud...

weixin_33862041的博客 598

2025年CSP-J初赛真题及答案解析(完整版)

2025年CSP-J初赛真题及答案解析(完整版)

王老师青少年编程 1万+

学Simulink--基础光伏储能场景实例:基于Simulink的光储微电网主从控制策略仿真

摘要:本文详细介绍基于Simulink的光储微电网主从控制策略仿真方法。通过"储能V/f控制+光伏PQ控制"架构,实现孤岛运行时电压频率稳定和功率平衡。文章包含系统建模步骤、核心控制算法实现(附MATLAB代码)、三种典型工况仿真测试(稳态、光伏突变、负荷波动),结果显示系统满足电压偏差<±2.5%、频率偏差<±0.3%、动态响应<1s的性能要求。最后提出双主冗余、分层控制等优化方向,为光储微电网控制提供完整仿真解决方案。

amy_mhd的博客 73

VBS学习日记(三) 运行外部程序

利用 Vbs 运行外部程序

仒雨的专栏 3263

【RT-DETR涨点改进】独家小目标涨点改进篇 | TGRS 2025 | RT-DETR引入ABRNet小目标检测顶刊中的:ARF自适应性感受野和MCA双向交叉轴注意力,适合小目标检测有效涨点

本文提出了一种改进的RT-DETR小目标检测方法,通过集成自适应感受野模块(ARF)和多尺度交叉轴注意力模块(BC)来提升检测性能。ARF模块采用多种卷积核动态调整感受野,有效捕获多尺度目标特征并减少背景干扰;BC模块通过多尺度交叉轴注意力机制增强全局信息提取和特征融合能力。实验表明,该方法在复杂背景下显著提升了红外小目标检测的精度和效率,同时降低了计算开销。文章详细介绍了模块结构、原理及实现代码,并提供了多种改进配置方案,为小目标检测任务提供了有效的解决方案。

Ai缝合怪、助力小伙伴高效发论文 570

c# BS程序只能运行一次(多次运行只能打开同一个程序)

using System.Diagnostics; using System.Reflection; using System.Runtime.InteropServices; namespace WindowsFormsApplication1 { static class Program { [DllImport("User3...

aidao7436的博客 200

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

在MFC程序中激活以前的实例,并退出本实例

本文地址:http://www.starsdust.info/blog/ 要求如下: 只启动一个实例 如果已经启动,则激活以前的实例 实现方法: 程序启动时,首先尝试打开一个命名的CEvent对象,如果打开失败,说明本程序是第一次启动,启动一个等待线程,监视CEvent对象状态。如果打开成功,说明本程序已经在运行。此时,设置这个CEvent对象为有信号状态,监视线程检测到信号,激活自己。 实现代码: 比如新建项目 Demo 在CDemoApp类中,增加如下代码 static vo

zhglzh的专栏 665

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

WPF防止程序多次运行

【代码】WPF防止程序多次运行。

啸啸说的博客 830

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

一次完整的 tmux 使用流程(带示例)以后再也不怕跑代码的时候关机断网了

tmux是一款强大的终端工具,可让程序在后台持续运行,解决断网关机导致进程中断的困扰。使用步骤:1)新建命名会话;2)激活conda环境;3)进入项目目录;4)运行脚本(可记录日志);5)按Ctrl+b+d退出后台运行;6)通过tmux attach恢复会话;7)可随时终止会话。还提供一键后台运行命令,支持自动日志记录,是科研工作者的实用工具。

m0_67165162的博客 1739

使用screen命令实现本地终端关闭后继续在远程服务器继续跑训练或者其他代码

GNU Screen是一款由GNU计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换。GNU Screen可以看作是窗口管理器的命令行界面版本。它提供了统一的管理多个会话的界面和相应的功能。在用服务器跑深度学习模型的时候,往往需要用到后台运行,否则一断开终端程序就终止了。使用screen管理会话,不仅可以临时断开一个会话,让程序在后台继续运行。也可以在一个窗口管理多个会话,非常方便。

记录学习过程中的笔记 782

终极AutoRaise完整指南:让macOS窗口管理变得如此简单

还在为macOS上繁琐的窗口切换而烦恼吗?每次都要点击才能激活窗口,多任务操作效率低下?今天我要为你介绍一款彻底改变macOS窗口管理体验的神器——AutoRaise。这款免费开源工具能让你的鼠标悬停自动激活窗口,让多任务处理效率提升300%!无论你是程序员、设计师还是普通办公用户,AutoRaise都能让你的工作流更加流畅自然。 ## 🎯 为什么你需要AutoRaise? 想象一下这样的场

gitblog_00581的博客 500

该函数设置由不同线程产生的窗口的显示状态。

using System;using System.Collections.Generic;using System.Linq;using System.Windows.Forms;using System.Runtime.InteropServices;using System.Diagnostics;using System.Reflection; namespace WindowsForm...

weixin_30750335的博客 81

在后台运行任务,同时允许tkinter处于活动状态

例如,通过使用深度学习技术,我们可以自动学习和调整算法参数,以提高模型的准确性和鲁棒性。在这个示例中,我们在后台线程中启动了`background_task`函数,该函数模拟了一个耗时任务。同时,我们也在主线程中创建了一个Tkinter窗口和标签,并且通过定时更新标签的文本来显示任务的进度。在Python中,实现后台运行任务的同时保持Tkinter窗口活动是常见的需求。这是一个简单的示例,实际应用中,你可以根据具体需求调整后台任务的实现和Tkinter窗口的操作。# 创建一个标签,用于显示信息。

412

程序只运行一次并激活原来的程序

我们的程序有时候只允许运行一次,并且最好的情况是,如果程序第二次运行,就激活原来的程序。网上有很多的方法实现程序只运行一次,但对于激活原来的窗口却都不怎么好。关键就在于激活原来的程序,一般的做法是在工程开始时,打开互斥量对象,如果打不开表示程序还没有运行,创建一个互斥量对象;如果打得开表示程序已经运行了,查找程序中一个特定的窗口,一般是主窗口,然后发送一个自定义消息,主窗口在这个消息处理中激活

colin 8930

tmux用于linux服务器后台运行程序

tmux

帆的博客 2585

Delphi实现程序只运行一次并激活已打开的程序

我们的程序有时候只允许运行一次,并且最好的情况是,如果程序第二次运行,就激活原来的程序。网上有很多的方法实现程序只运行一次,但对于激活原来的窗口却都不怎么好。关键就在于激活原来的程序,一般的做法是在工程开始时,打开互斥量对象,如果打不开表示程序还没有运行,创建一个互斥量对象;如果打得开表示程序已经运行了,查找程序中一个特定的窗口,一般是主窗口,然后发送一个自定义消息,主窗口在这个消息处理...

dkopg24406的专栏 811
上一篇: 窗口分析
下一篇: 模拟用户登录(张佩)
ShenRui
博客等级 码龄20年 63粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值