远程控制编程中多窗口实现

Python实现NB-IoT模块远程控制 本来想尝试下如果不使用运营商网络应用平台情况下,只是在服务商服务器上是否可以实现对终端完全控制,如果这样可行,那么物联网应用服务端更有灵活性。实际情况下,很难实现和运营商网络对等的处理,用python代码原型确实能够实现参数的变化(如PSM,eDXR等),但是终端分配的IP地址毕竟属于接入网部分,更近似一个局域网,如果采用其他方式访问(如IMSI、IMEI等),还是需要与运营商核心网进行配合。以下 阅读详情
 

远程控制软件中窗口管理主要有两种模式,一种是以灰鸽子远控为代表的单窗口单任务管理模式,一种是以黑洞远控为代表的多窗口多任务管理模式。前一种比较简单,本文讲第二种方案的实现。这里着重讲窗口多开,多任务另起篇幅讲述。

假如我们需要同时对3台远程主机进行文件管理,那么需要打开3个文件管理的对话框,这3个对话框相同的是什么?不同的又是什么?相同的是对话框界面和处理过程,不同的是通信对象。好了,下面让我们思考下如何实现同与不同。要实现在不同的窗口自由切换,非模式对话框的效果自然是最理想。要实现不同的通信对象,只要绑定不同的SOCKET就行。下面是笔者根据开发和应用的经验,总结得三种方案,希望能对其他朋友有所帮助。

方案一:窗口数组

窗口数组比较好理解,你要3个对话框,正好我那有3个一样的对话框,只要拿过来绑上不同的通信对象就行了。窗口数组流程就是启动的时候建好对话框数组,需要的时候显示窗口并绑定一个通信对象,不需要的时候隐藏窗口并移除通信对象。

首先主窗口类中添加对话框数组CTestDlg1 m_TestDlg[10],在主对话框的OnInitDialog()中创建对话框数组,注意这里创建的是非模式对话框。

for (int i=0;i<10;i++)

{

       m_TestDlg[i].Create(IDD_DIALOG2, GetDesktopWindow());

       m_TestDlg[i].m_bUseing = FALSE;

       m_TestDlg[i].ShowWindow(SW_HIDE);

}

上面要注意到需要有个标识变量来表示对话框是否在使用中。另外由于是非模式对话框,所以我们需要在对话框的DestroyWindow()中销毁它们,不然会造成资源泄露。

for (int i=0;i<10;i++)

{

       m_TestDlg[i].DestroyWindow();

}    

下面看看如何利用这些对话框,主要是对话框的显示和隐藏。在显示的时候绑定通信对象,在关闭对话框的时候隐藏窗口和移除通信对象

//查找一个没有在使用的对话框

for (int i=0;i<10;i++)

{

       if(m_TestDlg[i].m_bUseing == FALSE)

       {

              m_TestDlg[i].ShowWindow(SW_SHOW);

              m_TestDlg[i].m_bUseing = TRUE;

        //绑定通信对象代码略

              break;

       }

}

//重载m_TestDlg对话框的OnCancel()函数,同时设置使用标识为未使用

void CTestDlg1::OnCancel()

{

       // TODO: Add extra cleanup here

       AfxMessageBox("这里只是隐藏,而没有销毁对话框");

       ShowWindow(SW_HIDE);

       m_bUseing = FALSE;

    //移除通信对象

       //CDialog::OnCancel();

}

总体来说这个方案比较容易理解,过程也比较清晰,也是我最初想出来的方案。

方案二:多线程加消息循环

    很多人问为什么不直接创建非模式对话框?为了更好处理连接,我们使用了多线程。工作线程中缺乏对消息的响应机制,在其中创建模式对话框会造成窗口阻塞,创建非模式对话框会立即消失。方案二其实是构造一个UI线程,在线程里创建非模式对话框。因为该方案是多线程所以支持无限创建窗口,另外线程自带消息循环可以不同窗口前切换而不消息阻塞,并且在没有收到WM_QUIT消息前不会退出。

//具体线程实现,具体需要转换pParam并绑定通信对象

UINT WorkerThread(LPVOID   pParam)  

{

       CAboutDlg dlg;

       dlg.Create(IDD_ABOUTBOX);

       dlg.ShowWindow(SW_SHOW);

       MSG   msg;  

    while(GetMessage(&msg,NULL,0,0))  

    {  

              TranslateMessage(&msg);  

              DispatchMessage(&msg);  

       }  

       dlg.DestoyWindow();

       return 0;

}

要使用的时候,直接创建线程,传入通信对象就行了。值得注意的创建UI线程要使用AfxBeginThread而不是CreateThread。

方案三:消息通知主窗口创建

主窗口是个UI线程,可以创建非模式对话框而且参与到主窗口的消息泵中不会销毁。方案三就是利用了这个特性,从而可以在工作线程中发送消息给主窗口并让其创建对话框。

添加自定义消息处理函数LRESULT OnDlgTest(WPARAM wParam, LPARAM lParam),响应消息WM_DLGTEST。

//消息处理函数实现

LRESULT CTestModalDlg::OnDlgTest(WPARAM wParam, LPARAM lParam)

{

       CTestDlg* pDlg = new CTestDlg;

       pDlg->Create(IDD_DIALOG1, GetDesktopWindow());

       pDlg->ShowWindow(SW_SHOW);

       return 0;

}

当我们需要创建窗口的时候只要发送消息WM_DLGTEST给主窗口就行了。同前面的方案一样,需要非模式对话框都需要调用DestoryWindow来销毁窗口,另外方案三中要注意的是,pDlg由new分配的,需要delete指针,这个工作是重载CTestDlg的PostNcDestroy函数,在其中释放自己。

三种方案中,笔者比较推荐方案三,支持窗口无限创建,代码量也相对较少,处理起来简单。笔者才疏学浅,如有错误之处,欢迎读者斧正。

Codex AI编程远控软件怎么选?2026实测ToDesk与向日葵搭配避坑指南 远程控制软件通过实时传输被控端画面与输入指令,实现跨设备操作。其核心原理在于低延迟编码与网络自适应,技术价值体现在打破本地算力与移动办公的物理边界。在AI编程场景中,Codex等工具的高频交互特性对远控的延迟、画质与剪贴板同步提出严苛要求,典型应用包括跨国开发与多屏协同。围绕Codex安装、登录及Ubuntu黑屏等高频问题,合理配置ToDesk或向日葵的传输参数,能显著提升AI编程效率。 阅读详情

相关推荐

远程Vibe Coding实战:多会话低延迟让AI编程体验无感

AI辅助编程的普及让开发者的工作重心从逐行编写代码转向意图描述与结果审查,这种高密度交互模式对远程操作的延迟、画质和窗口管理提出了更高要求。远程控制技术的核心价值在于打破物理距离限制,将高性能计算资源无缝投射到任意终端,其原理涉及画面编码传输、输入回传与会话隔离等关键环节,直接影响AI生成代码的审查效率与多任务并行能力。在分布式开发、移动办公、云端工作站等场景中,低延迟与清晰画质是保障流畅协作的基础,而多会话功能则进一步扩展了远程桌面的边界,使开发者能够同时管理编辑器、浏览器预览与终端窗口。本文以UU远程为

weixin_33960567的博客 325

TD被控设备被限制连接?好用的远程控制软件推荐

连连控是一款轻量、功能全面、兼顾游戏娱乐与远程办公的软成控制软件,无需配置网络简单易用,支持Windows、MacOS、Android、iOS多平台。免费版没有使用时长和次数限制。Parsec是一款可以支持多人连接的P2P远程软件,支持Windows、MacOS、Android、Linux,但不支持iOS。以上几款远控软件它们各具特色,能满足不同用户的多样化需求 —— 无论是追求开源自主的技术爱好者,还是需要简单易用体验的普通用户,亦或是对远程游戏串流有需求的玩家,都能在这些软件中找到适合自己的解决方案。

ashocked的博客 3947

基于VC++的远程控制软件开发实战源码项目

先把系统拆成若干核心模块,明确各自边界:模块名称功能描述UI管理模块负责主窗口绘制、菜单响应、按钮事件处理屏幕捕获模块调用GDI/Blt函数抓取屏幕像素数据图像编码模块使用LibJPEG或其他库进行图像压缩输入捕获模块监听鼠标键盘事件并生成控制命令网络通信模块基于WinSock实现TCP连接与数据收发会话管理模块维护连接状态、心跳检测、异常恢复配置管理模块读写INI文件或注册表保存用户偏好。

weixin_31688273的博客 1060

ToDesk 新版本功能抢先看!指定窗口+快传文件+多人同控等多项亮点让远控不再妥协

本文详细测评了ToDesk远程控制软件的最新版本,重点展示了其在游戏场景中的出色表现。作者通过RTX4080主机远程调试经历,对比了不同远程工具的体验差异,突出ToDesk在画质(最高4K)、帧率(360Hz)、延迟(<3ms)方面的优势。新版本新增场景切换、预连接设置、窗口共享等实用功能,并强化了安全防护(二次验证、临时密码等)。文章对比了三个付费版本特性,建议游戏玩家选择支持4K60帧的游戏版。实测显示ToDesk能流畅运行《赛博朋克2077》,是兼顾性能与安全的专业级远程控制解决方案。

深入解析C/C++编程技巧,带你探索高效开发之路 1万+

全面的嵌入式开发工具合集:从编程到硬件调试

嵌入式开发是一种特殊的软件开发方式,它涉及到针对特定硬件平台进行软件设计和优化的过程。在这一章节中,我们将从嵌入式系统的基础知识开始,逐步深入了解其在现代技术中的应用、挑战及未来趋势。串口转USB适配器的功能主要包括:信号转换:提供物理层的信号转换,将RS-232电平转换为USB端口的TTL电平。协议适配:适配不同串行通信协议,保证数据的完整性和可靠性。虚拟COM端口:通过USB接口在操作系统中虚拟出COM端口,简化通信配置。数据缓冲。

weixin_28746213的博客 918

免费的远程控制软件

一个免费的远程控制工具,可以让用户任意电脑或手机的浏览器里控制远程windows电脑。 下载后解压直接运行,然后在浏览器里输入电脑的ID的密码就可以控制了。 手机,MAC,LINUX的浏览器都支持 . 需要远程控制的朋友可以下载。

Linux常用命令---screen

http://bjzero.blogbus.com/logs/30983025.html  linux screen 命令详解2008-10-22 15:05功能说明: 使用telnet或SSH远程登录linux时,如果连接非正常中断,重新连接时,系统将开一个新的session,无法恢复原来的session.screen命令可以解决这个问题。Screen工具

dengxingbo的专栏 563

5款最好用的远程控制软件点评

5款最好用的远程控制软件点评 主要用于远程办公管理,企业监控职员,家长监管儿童,网管管理电脑,电脑技术人员远程技术维护等

Screen多视窗远程控制管理服务

  Screen是一款由GNU开源计划开发的多视窗远程控制管理服务,简单来说就是为了解决上述情况中网络异常中断或同时控制多个远程窗口而设计的程序。   Screen服务程序不仅能够解决上述问题,而且用户在使用过程中还可以同时在多个终端会话中自由切换,能够做到会话恢复——即便网络中断,也可让会话随时恢复,用户不会失去对命令终端的控制,多窗口——每个会话都是独立运行的,拥有各自独立的编码、输入输出和...

weixin_33979203的博客 220

ArcGIS栅格拼接全攻略:从核心原理到色彩平衡与大数据处理

在GIS数据处理中,栅格拼接是一项基础且关键的操作,其本质是将多幅具有重叠区域的栅格图像无缝整合为一张完整地图。该技术涉及空间参考统一、像元对齐与色彩融合等核心原理,是构建连续地理空间数据的基石。其技术价值在于保障数据完整性、提升可视化效果,并为后续的空间分析提供可靠底图。在遥感影像处理、数字高程模型构建及地图制图等应用场景中,高质量的拼接成果至关重要。本文聚焦于ArcGIS平台,深入解析其栅格拼接工具,并针对常见的色彩不一致与大数据量处理难题,提供了基于**色彩平衡**和**金字塔**优化的实战解决方案,

weixin_33158887的博客 262

IC验证 AHB-RAM 项目(二)——接口与事务代码的编写

本文介绍了准备工作及接口、事务相关代码编写要点。在接口部分,重点说明了lvc_ahb_if.sv、rkv_ahbram_if.sv和rkv_ahbram_tb.sv三个关键文件的功能,其中rkv_ahbram_if.sv通过动态任务实现复位信号控制。事务部分则涉及lvc_ahb_types.sv中的枚举类型定义和lvc_ahb_transaction.sv中的随机化变量设置,用于构建AHB传输激励。整个验证环境采用模块化设计,通过接口实现TB与DUT的通信,为后续验证工作奠定基础。

weixin_45926435的博客 405

远程多窗口和Screen用法

在创建screen这个窗口时,会自动生成一个子窗口,也就是说只能在子窗口键入命令。如果当前的screen主窗口只剩下最后一个子窗口,那么这个screen主窗口就会退出。你这边是无法进入的。这样就进入创建的名字为pc-work的窗口下,其实这里和你平时看到的窗口没什么两样。我在当前的子窗口下输入了命令,比如说一个执行程序很长的,不断输出log信息的。平时我都是一个相似的任务会放在一个主窗口,然后这些相似的任务在一个主窗口下分别开不同的子窗口。新建一个子窗口后,当前执行的子窗口就会被覆盖,但是任务继续执行。

qq26983255的博客 1762

【CV论文精读】【协同感知综述】Collaborative Perception for Autonomous Driving :Current Status and Future Trend

感知是自动驾驶系统的关键模块之一,近年来取得了很大进展。然而,单个车辆的有限能力导致感知性能提高的瓶颈。为了突破个体感知的局限,协作感知被提出,它使车辆能够共享信息来感知视线和视野之外的环境。本文综述了有前途的协作感知技术的相关工作,包括介绍了基本概念,概括了协作模式,总结了协作感知的关键要素和应用。最后,我们讨论了这一研究领域面临的挑战和问题,并给出了一些潜在的进一步方向。

weixin_44184852的博客 4690

kitty 终端完全指南:设计哲学、平铺布局、远程控制与可编程扩展

kitty 是一款专为键盘重度用户设计的 GPU 加速终端模拟器,本指南基于项目官方文档 [docs/overview.rst](https://link.gitcode.com/i/9342e81632913189a74615ebbb77bae7) 及其关联文档,系统讲解它的设计理念、配置体系、七种窗口布局、kittens 扩展框架、远程控制(remote control)、会话(session

gitblog_01090的博客 896

IBIS模型中的Pullup和Pulldown曲线详解:如何避免信号完整性设计中的常见错误

本文深入解析IBIS模型中Pullup和Pulldown曲线的关键作用,揭示其在信号完整性设计中的黄金法则。通过详细分析曲线特性、常见误区及验证方法,帮助工程师避免设计错误,优化高速PCB设计。文章还展示了曲线数据在动态终端匹配、串扰预测和电源完整性分析中的高级应用,提升设计效率和可靠性。

weixin_30275415的博客 451

华为OD机试_2025 B卷_模拟消息队列(Python,100分)(附详细解题思路)

时间排序:确保事件处理顺序正确消费者管理:集合操作高效维护状态优先级实现:利用消费者ID自然排序边界处理:正确处理空消费者情况。

测试工程师的成长之路 1120

python界面编程和网口通信_python实现NB-IoT模块远程控制

本来想尝试下如果不使用运营商网络应用平台情况下,只是在服务商服务器上是否可以实现对终端完全控制,如果这样可行,那么物联网应用服务端更有灵活性。实际情况下,很难实现和运营商网络对等的处理,用python代码原型确实能够实现参数的变化(如PSM,eDXR等),但是终端分配的IP地址毕竟属于接入网部分,更近似一个局域网,如果采用其他方式访问(如IMSI、IMEI等),还是需要与运营商核心网进行配合。以下...

weixin_39580682的博客 300

【AI测试必学】DeepSeek API 快速入门:获取 API Key 与调用 API 步骤详解

DeepSeek API 使用与 OpenAI 兼容的格式,可以通过修改配置使用 OpenAI SDK。生成的 API Key 只会显示一次,请妥善保存。注册并登录账号,进入左侧导航栏的。创建 API Key。

blues_C的博客 1万+

易语言远程控制源码_远程运维开发人员的五款利器总结

1、MobaXterm——强大的远程连接工具MobaXterm,这是一款具有和Xshell和CRT相同强大功能的软件,同时它也是一款有限度的免费产品,足以够我们日常的使用。1、支持多种协议,使用Session会话进行管理;2、支持日常使用常见的功能,例如宏录制,多窗口分屏,远程桌面等;3、图形化的界面终端,易于使用。4、可以自定义终端的字体和颜色,满足个性化的需求。2、SourceInsight—...

weixin_39535349的博客 2286

回归预测 | MATLAB实现SVR(支持向量机回归)K折交叉验证

回归预测 | MATLAB实现SVR(支持向量机回归)K折交叉验证 目录回归预测 | MATLAB实现SVR(支持向量机回归)K折交叉验证基本介绍划分原理留一划分交叉验证K折交叉数据下载程序设计参考资料致谢 基本介绍 在机器学习里,通常来说我们不能将全部用于数据训练模型,否则我们将没有数据集对该模型进行验证,从而评估我们的模型的预测效果。为了解决这一问题,有如下常用的方法: 第一种是最简单的,也是很容易就想到的。我们可以把整个数据集分成两部分,一部分用于训练,一部分用于验证,这也就是我们经常提到的训练集

机器学习之心的博客,关注并私信文章链接,获取对应文章源码和数据。 6375

【DRAM存储器五十七】LPDDR5介绍--read DQ training和WCK DQ training

简述LPDDR5训练中的读写DQ训练

highman110的博客 522

kitty团队协作:共享会话和配对编程

在当今分布式开发环境中,团队协作和远程配对编程已成为开发工作流的重要组成部分。kitty终端模拟器通过其强大的远程控制功能、会话管理和广播工具,为开发者提供了卓越的团队协作体验。本文将深入探讨如何利用kitty的高级功能实现高效的共享会话和配对编程。 ## 核心功能架构 ```mermaid graph TD A[kitty协作功能] --> B[远程控制协议] A --> C...

gitblog_00824的博客 985

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

远程屏幕监视软件的设计与实现

原文转自:http://www.3800hk.com/news/w45/56263.html适合读者:编程爱好者、黑客工具爱好者前置知识:Borland C++ Builder 6.0基本使用方法Socket:本文主要介绍了远程屏幕监视软件EagleEye的开发与设计过程。逐一介绍了比较正规的专业程序开发步骤:需求分析、功能设计与实现、软件测试运行。在功能设计中用程序流程图展现了程序执

weixu_2008的专栏 2083

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

手机远程控制Mac上的Claude Code开发:完整实战指南

组件作用为什么选它Tailscale内网穿透无需公网IP,点对点直连,延迟低SSH + tmux远程终端 + 会话保持断网不丢进度,多窗口并行AI编程助手原生终端体验,直接改代码随时随地:只要有网络就能连接Mac开发稳定可靠:tmux保护会话,网络波动不影响安全可控:Tailscale的ACL + SSH密钥双重保护原生体验:Termius提供真正的终端,不是远程桌面适用场景通勤路上处理紧急Bug外出时需要查看服务器日志多台设备协同工作没有公网IP的内网环境不适用场景。

在渔村里看AI,偶尔捕点新鲜的。 649

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Codex 远程编程怎么选远控软件?终端清晰度、会话保持与方案实测

远程控制与远程开发的基础,是把图形桌面、终端画面和输入事件在低延迟、可压缩的网络通道中往返传输;而 AI 编程把写代码变成异步任务,Codex CLI 等工具会在后台持续读写文件、跑测试并输出 diff。此时,远控软件不仅要保证连接稳定,还要让等宽字体、滚动刷新和剪贴板同步足够清晰可用,否则终端里的代码差异会变成猜字游戏。对经常离开工位、用轻薄本或手机连回家中主机的开发者来说,远程控制软件、终端复用和会话保持共同决定了 AI 编程任务能否不中断地跑完。围绕 Codex 的 CLI、IDE 扩展与桌面形态,需

weixin_31061699的博客 209
上一篇: 远程控制编程之反弹端口模式
下一篇: 内存拷贝的优化方法(1)[转]
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值