FindWindow 使用

WPS无虚拟打印机?从原理到修复的完整解决方案 虚拟打印机是操作系统提供的一项核心服务,它允许应用程序将文档输出为PDF等格式文件,而非实体纸张。其工作原理是作为系统级的打印驱动接口,被WPS等办公软件调用。这项技术的价值在于实现高质量、跨平台、格式保真的文档转换,是无纸化办公和高效协作的关键支撑。在文档归档、电子合同、报告分享等应用场景中不可或缺。当WPS中缺失虚拟打印机选项时,通常并非软件本身故障,而是系统服务未启用、驱动冲突或权限问题所致。本文针对‘WPS无虚拟打印机’这一高频痛点,系统梳理了从启用系统自带‘Microsoft Print to P 阅读详情
查找指定窗口								
								
TCHAR szTitle[MAX_PATH] = {0};								
HWND hwnd = ::FindWindow(TEXT("#32770"),TEXT("飞鸽传书  IP Messenger"));								
if(hwnd != NULL)								
{								
	//修改窗口标题							
	::SetWindowText(hwnd,"新的窗口标题");							
}								
else								
{								
	::MessageBox(NULL,TEXT("窗口没有找到"),TEXT("[ERROR]"),MB_OK);							
}								
								
								
窗口控制								
								
TCHAR szTitle[MAX_PATH] = {0};								
HWND hwnd = ::FindWindow(TEXT("#32770"),TEXT("飞鸽传书  IP Messenger"));								
if(hwnd != NULL)								
{								
	typedef void (WINAPI *PSWITCHTOTHISWINDOW) (HWND,BOOL);							
	PSWITCHTOTHISWINDOW SwitchToThisWindow;							
	HMODULE hUser32=LoadLibrary("user32.dll");							
	SwitchToThisWindow=(PSWITCHTOTHISWINDOW)GetProcAddress(hUser32,"SwitchToThisWindow");							
								
	//切换窗口							
	SwitchToThisWindow(hwnd,false);							
								
	Sleep(3000);							
	//关闭窗口 							
	::SendMessage(hwnd,WM_CLOSE,0,0);							
}								
else								
{								
	::MessageBox(NULL,TEXT("窗口没有找到"),TEXT("[ERROR]"),MB_OK);							
}								

查找子窗口								
								
TCHAR szTitle[MAX_PATH] = {0};								
HWND hwnd = ::FindWindow(TEXT("#32770"),TEXT("飞鸽传书  IP Messenger"));								
if(hwnd != NULL)								
{								
	//查找子窗口							
	HWND hEdit = FindWindowEx(hwnd,NULL,"Edit","");							
	//设置标题							
	::SetWindowText(hEdit,"文本框新的标题");							
	//修改内容							
	::SendMessage(hEdit,WM_SETTEXT,0,(LPARAM)"新的内容");							
}								
else								
{								
	::MessageBox(NULL,TEXT("窗口没有找到"),TEXT("[ERROR]"),MB_OK);							
}								
								
								
TCHAR szTitle[MAX_PATH] = {0};								
HWND hwnd = ::FindWindow(TEXT("#32770"),TEXT("飞鸽传书  IP Messenger"));								
if(hwnd != NULL)								
{								
	//查找子窗口							
	HWND hEdit =::GetDlgItem(hwnd,0x3E9);							
	//获取内容							
	::SendMessage(hEdit,WM_GETTEXT,MAX_PATH,(LPARAM)szTitle);							
	//修改内容							
	::SendMessage(hEdit,WM_SETTEXT,0,(LPARAM)"新的内容");							
}								
else								
{								
	::MessageBox(NULL,TEXT("窗口没有找到"),TEXT("[ERROR]"),MB_OK);							
}								
//////////////////////////////////////////////////////////////////////////////
枚举子窗口								
								
BOOL CALLBACK EnumChildProc(HWND hWnd,LPARAM lParam)  								
{  								
    TCHAR szTitle[MAX_PATH] = {0};								
    ::GetWindowText(hWnd,szTitle,MAX_PATH); 								
    MessageBox(NULL,szTitle,"[子窗口]",MB_OK);  								
    return true;  								
}  								
								
VOID EnumChildWindow()								
{								
	TCHAR szTitle[MAX_PATH] = {0};							
	HWND hWnd = ::FindWindow(TEXT("#32770"),TEXT("飞鸽传书  IP Messenger"));							
	if(hWnd != NULL)							
	{							
		::EnumChildWindows(hWnd,EnumChildProc,0);  						
	}							
	else							
	{							
		::MessageBox(NULL,TEXT("窗口没有找到"),TEXT("[ERROR]"),MB_OK);						
	}							
}								
/////////////////////////////////////////////////////////////////////////////////
枚举所有打开窗口						
						
BOOL CALLBACK EnumOpenWindowProc(HWND hWnd,LPARAM lParam)  						
{  						
    TCHAR szTitle[MAX_PATH] = {0};						
    ::GetWindowText(hWnd,szTitle,MAX_PATH); 						
    MessageBox(NULL,szTitle,"[窗口]",MB_OK);  						
    	if(strcmp(szTitle,"飞鸽传书  IP Messenger") == 0)					
	{					
		MessageBox(NULL,szTitle,"[窗口]",MB_OK);  				
		return FALSE;				
	}					
    return TRUE;  						
}  						
VOID EnumOpenWindows()						
{						
	EnumWindows(EnumOpenWindowProc,NULL);					
}						
/////////////////////////////////////////////////////////////////////
隐藏控制台	
	
#pragma   comment(linker,"/subsystem:\"windows\"  /entry:\"mainCRTStartup\""   ) 	
	
模拟鼠标单击	
	
	
TCHAR szTitle[MAX_PATH] = {0};	
RECT r;	
HWND hwnd = ::FindWindow(TEXT("#32770"),TEXT("飞鸽传书  IP Messenger"));	
if(hwnd != NULL)	
{	
	HWND hButton = FindWindowEx(hwnd,NULL,"Button","刷新(&R)");
	
	//获取窗口坐标
	::GetWindowRect(hButton,&r);
	
	printf("%d %d",r.left,r.top);
	
	//设置鼠标的位置
	::SetCursorPos(r.left+10,r.top+10);
	Sleep(2000);
	//鼠标左键单击
	mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);//点下左键 
	mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);//松开左键
}	
else	
{	
	::MessageBox(NULL,TEXT("窗口没有找到"),TEXT("[ERROR]"),MB_OK);
}	
///////////////////////////////////////////////////////////////////
模拟键盘点击(搜索:键盘键与虚拟键码对照表)	
	
	
TCHAR szTitle[MAX_PATH] = {0};	
RECT r;	
HWND hwnd = ::FindWindow(TEXT("#32770"),TEXT("飞鸽传书  IP Messenger"));	
if(hwnd != NULL)	
{	
	//HWND hButton = FindWindowEx(hwnd,NULL,"Button","刷新(&R)");
	HWND hEdit =::GetDlgItem(hwnd,0x3E9);
	
	//获取窗口坐标
	::GetWindowRect(hEdit,&r);
	
	//设置鼠标的位置
	::SetCursorPos(r.left+1,r.top+1);
	Sleep(1000);
	
	//鼠标左键单击
	mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);//点下左键 
	mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);//松开左键
	
	//模拟键盘
	keybd_event(97,0,0,0);
	keybd_event(97,0,KEYEVENTF_KEYUP,0);
	Sleep(1000);
	keybd_event(66,0,0,0);
	keybd_event(66,0,KEYEVENTF_KEYUP,0);
	Sleep(1000);
	keybd_event(16,0,0,0);
	keybd_event(67,0,0,0);
	keybd_event(67,0,KEYEVENTF_KEYUP,0);
	keybd_event(16,0,KEYEVENTF_KEYUP,0);
	
}	
else	
{	
	::MessageBox(NULL,TEXT("窗口没有找到"),TEXT("[ERROR]"),MB_OK);
}	

 

绕过超星PDG打印限制:虚拟打印机重命名实现PDF转换 在数字文档处理领域,虚拟打印机技术是一种将任何可打印文档输出为PDF或图像文件的系统级工具。其工作原理是模拟物理打印机的驱动接口,拦截应用程序的打印指令,并将其重定向至文件生成引擎。这项技术的核心价值在于实现了文档格式的标准化与跨平台兼容,解决了专有格式文件在流通、批注和归档时面临的障碍。在电子书阅读、技术文档管理等应用场景中,常会遇到某些阅读软件对打印输出进行限制以保护版权,例如超星阅读器对PDG格式文件的打印管控。通过分析打印机的识别机制,可以采取重命名虚拟打印机驱动的方法,将其伪装成常见物理打印机型号 阅读详情

相关推荐

WPS虚拟打印机:PDF精准截取与批量处理技巧

虚拟打印机技术通过模拟物理打印流程实现文档格式转换,其核心价值在于保留原始文件的矢量信息。在办公自动化场景中,WPS虚拟打印机结合PDF裁剪功能,能够实现0.1毫米级的精准内容提取,大幅提升合同条款摘录、财务报表分析等工作的效率。相比传统截图工具,这种方法通过参数化设置支持批量处理,特别适合法律、财务等需要高频处理文档的岗位。实际应用中,配合Python脚本可实现动态数据监控看板等高级功能,而预设模板则让学术文献管理变得轻松高效。

weixin_29032489的博客 295

《Windows核心编程》第一章创建对话框使用类名#32770的探讨

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34378767的博客 2208

Altium Designer生成1:1比例PCB PDF的终极解决方案(附虚拟打印机配置)

本文针对Altium Designer内置‘智能PDF’功能输出比例不准的痛点,提供了生成精确1:1比例PCB图纸PDF的终极解决方案。核心策略是绕过智能PDF,通过配置虚拟打印机(如ULTRA PDF)并严格设置打印参数(缩放比例为1.00、自定义纸张尺寸、零页边距),实现稳定可靠的高精度输出。文章附有完整的配置流程、验证方法及疑难排坑指南,确保工程师能获得分毫不差的制作文件。

t8u9v0w1x的博客 631

Windows API一日一练(41)FindWindowEx函数

当你想控制一个现有的窗口程序时,就需要获取那个程序的窗口句柄。比如有一些黑客软件需要查找到窗口,然后修改窗口的标题。在外挂流行的今天,惊奇地发现它们也可以修改输入窗口的文字。这其中,就需要使用到FindWindowEx函数来定位窗口。下面就来使用这个函数来实现控制Windows里带的计算器程序。打开计算器程序,最小化在状态下面,运行本例子,点击创建按钮后,就可以点按钮,就会把计算器显示在...

anjichan4261的博客 1420

UOS/deepin安装CUPS-PDF虚拟打印机:配置与排错指南

在国产操作系统日益普及的今天,如何高效生成标准PDF文档成为办公自动化中的常见需求。虚拟打印机技术基于CUPS打印系统,通过将打印任务交由Ghostscript处理,实现从任意应用到PDF文件的透明转换,其技术价值在于无需依赖特定应用内置导出功能,即可统一文档格式。该方案广泛应用于业务单据归档、网页保存、手册交付等场景,尤其适合UOS和deepin等Linux发行版用户。CUPS-PDF(常被误写为CPUS-PDF)是此类虚拟打印机的典型代表,本文从概念原理出发,梳理了在其在国产系统下的安装方式、核心配置项

weixin_34262482的博客 391

Android蓝牙打印服务,Android 模拟蓝牙打印机

1: 思路百度百科的介绍所谓蓝牙打印机,就是指在主机端用一单片机来仿真打印机进行工作,截取从主机并口传出的数据及控制信号,并通过蓝牙无线连接传送到打印机端。在打印机侧的单片机则根据所收到的蓝牙数据来仿真主机对打印机进行控制操作,从而实现打印机与主机的蓝牙无线连接.具体逻辑由于蓝牙的协议栈比较复杂, 以及蓝牙的状态机相关的代码也比较多, 所以实现的方式可以通过framework代码注入一个假的蓝牙打...

weixin_39629075的博客 1559

FindWindow和FindWindowEx

函数原型:FindWindow(lpszClassName,lpszWindowName) 参数:lpszClassName--窗口类名;lpszWindowName--窗口标题 功能:查找窗口,未找到则返回NULL SDK中 HWNDhwnd=FindWindow(NULL,"计算器"); if(m_pWnd) { AfxMessageBox("找到了!"); ::Pos...

weixin_34313182的博客 4537

Altium Designer输出1:1比例PCB PDF的虚拟打印机方案

在PCB设计领域,将设计文件输出为1:1比例的PDF文档是硬件工程师和PCB设计者的常见需求,用于结构确认、装配参考和尺寸验证。然而,Altium Designer自带的Smart PDF功能由于内部渲染管线的浮点运算误差,往往导致输出比例偏差,影响装配精度。虚拟打印机方案通过操作系统级别的比例控制,能够实现精确的1:1输出,误差可控制在0.1mm以内。该方案涉及页面设置、层配置、打印机属性调整等关键步骤,适用于需要高精度PCB装配图、尺寸确认图的场景。本文详细介绍了从AD到1:1 PDF的完整实操流程,包

weixin_31858171的博客 314

FindWindow函数的用法

   函数的声明: Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long   这个函数有两个参数,第一个是要找的窗口的类,第二个是要找的窗口的标题。在搜索的时候不一定两者都知道

王敏的专栏 4万+

lpadmin 添加打印机

lpadmin -v接受的 device-uri 按后端(scheme)分类,常见类型如下:下面通过几个实际场景,帮助理解不同 device-uri 的选型思路。

zhangdaolong 116

Altium Designer导出1:1 PCB PDF:虚拟打印机配置与尺寸精确控制实战

在电子工程领域,PCB设计文件的精确输出是确保制造与装配一致性的基础。1:1比例的PDF文档能够准确反映物理尺寸,避免因缩放导致的误差。其原理在于通过虚拟打印机将设计软件中的逻辑尺寸固化为物理尺寸,从而绕过PDF阅读器的默认缩放行为。这项技术的价值在于提升工程协作的准确性和效率,广泛应用于结构核对、焊接治具制作和归档等场景。实现过程中,自定义纸张尺寸和打印缩放设置是关键,同时需注意层顺序和输出质量。本文以Altium Designer为例,详细介绍了如何通过虚拟打印机配置,生成精确的1:1 PCB PDF,

weixin_29190169的博客 243

EnumChildWindows枚举所有子窗口缺漏的问题

EnumChildProc callback function An application-defined callback function used with the EnumChildWindows function. It receives the child window handles. The WNDENUMPROC type defines a pointer to this ...

jota 1359

UOS/Deepin下CUPS-PDF虚拟打印机安装配置与排错实战

在Linux桌面环境中,文档转PDF是高频办公需求,但许多应用并未提供直接导出功能。虚拟打印机通过CUPS(通用Unix打印系统)与Ghostscript引擎,将打印任务自动渲染为PDF文件,实现了任意软件的统一输出路径。这一机制在国产操作系统UOS与deepin上尤为重要,它让报销归档、合同传递、OA流转等场景只需选择“打印”即可生成标准PDF,大大降低用户学习成本。本文从虚拟打印机的工作原理出发,系统讲解CUPS-PDF的源码编译、打印机队列注册、输出目录配置及中文字体处理等关键环节,并结合实际排查经验

weixin_33981932的博客 460

保姆级教程:用USB Redirector+cpolar实现远程打印机共享(含固定公网IP配置)

本文提供了一套基于USB Redirector与内网穿透工具的远程打印机共享保姆级教程。详细讲解了从服务端部署、客户端连接到固定公网IP配置的全流程,帮助企业及个人用户安全、稳定地实现异地USB设备访问,有效解决混合办公下的硬件使用难题。

b0c1d2的博客 694

Python Flask打造企业级打印服务器:5分钟搞定局域网多设备共享(附虚拟打印机过滤技巧)

本文介绍如何使用Python Flask快速构建企业级打印服务器,实现局域网内多设备共享打印。通过智能虚拟打印机过滤技术,有效排除PDF导出等虚拟设备干扰,提供Web管理界面和批量打印功能,5分钟即可完成部署,大幅提升办公效率。

m2n3b4v5c6的博客 231

PrintPDF与主流PDF虚拟打印机横评:选型对比与实操指南

虚拟打印机是解决任意文档转PDF的核心技术,它通过模拟系统打印接口,实现格式归一化与高质量输出。在合同归档、报销单据、图纸分发等高频场景中,相比系统自带功能,专业工具在字体嵌入、压缩控制、批量处理与权限设置上优势明显。本文从打印原理出发,横向对比PrintPDF与Microsoft Print to PDF、PDFCreator、Adobe Acrobat Pro、doPDF的安装部署、输出质量、附加功能及授权模式,并结合实际踩坑经验,提供针对不同人群的选型建议。无论你是办公文员、IT运维还是设计工程人员,

weixin_28520495的博客 211

解决打印机驱动程序无法使用的实用指南

打印机驱动问题的解决需要建立系统化的诊断思维,从服务状态、驱动版本、系统配置三个维度进行排查。建议技术管理者建立标准化处理流程,普通用户可制作包含关键步骤的快速检查清单。对于企业环境,部署打印管理软件(如PaperCut)可实现驱动集中管控,显著降低故障发生率。通过本文介绍的分层排查方法,90%以上的打印驱动问题可在15分钟内解决。实际操作中需特别注意驱动来源的可靠性,避免使用第三方驱动包造成的系统不稳定。

mmoo_python的博客 1840

HFSS入门 - 传输线线路损耗和串扰仿真

下图中两相近传输线存在端口间的串扰,而同一根传输线存在线路损耗。 我们可用S21描述端口1到端口2的线路损耗(插损?),用S13描述近端串扰,S24描述远端串扰,串扰通常要求-20dB以下。 实验目的:传输线线路损耗和串扰仿真 具体步骤: 1.草图: 其中板厚Subh为1mm。其余参数具体值如下: 2.由草图作图: 其中介质板表面设为GND。 3.设置激励:先在第一根传输线相连的XZ平面上做一...

qq_37274411的博客 9160
上一篇: CreateProcess的做了什么
下一篇: C/C++ windows 进程间通信
__网瘾少年
博客等级 码龄11年 122粉丝 103原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值