Windows API 实战教程:一日一练

需积分: 33 0 下载量 50 浏览量 更新于2024-07-26 收藏 2.29MB PDF 举报
"Windows API一日一练系列教程的PDF文档,由DreamFlyingFish整理,内容源自大坡3D软件开发的博客。" Windows API是Windows操作系统提供的一组接口,供开发者编写应用程序时调用,用于实现各种系统级别的功能。这个"Windows API一日一练"系列教程是针对初学者和有经验的开发者设计的,通过一系列逐步指导,帮助读者掌握Windows API的使用。 1. **第一个应用程序**: 这个章节通常介绍如何创建一个简单的Windows应用程序,包括设置工程、编写基本的主函数以及程序入口点。这通常是学习任何编程语言或API的第一步。 2. **应用程序句柄**: 应用程序句柄是Windows API中用来唯一标识一个对象(如窗口、线程或进程)的数值。在API调用中,句柄被用来执行特定操作,如获取或修改对象的状态。 3. **命令行参数**: 命令行参数是在启动程序时通过命令行界面提供的额外信息。Windows API提供了处理这些参数的方法,允许程序根据输入的参数执行不同的任务。 4. **MessageBox函数**: MessageBox是一个方便的函数,用于显示包含消息的对话框。开发者可以自定义对话框的文本、图标以及用户可以选择的按钮。 5. **RegisterClass和RegisterClassEx函数**: 这两个函数用于注册窗口类,这是创建窗口之前必需的步骤。RegisterClassEx允许设置更多的窗口样式和属性。 6. **CreateWindow函数**: CreateWindow用于创建一个窗口,它是Windows GUI编程中的核心函数之一。它接收窗口类、窗口标题、父窗口句柄等参数,返回新创建窗口的句柄。 7. **ShowWindow函数**: 该函数控制窗口的可见性,如显示、隐藏、最大化或最小化窗口。这对于窗口的生命周期管理至关重要。 8. **UpdateWindow函数**: UpdateWindow强制立即绘制窗口,确保所有更改都立即反映到屏幕上,尤其是在没有消息循环时。 9. **WindowProc和DefWindowProc函数**: WindowProc是应用程序定义的窗口过程,处理发送到窗口的消息。DefWindowProc是默认的窗口过程,处理未被WindowProc处理的消息。 10. **LoadAccelerators函数**: 该函数加载加速表,加速表是一组快捷键定义,允许用户通过键盘快捷键来执行菜单项或控件的操作。 11. **GetMessage函数**: GetMessage从消息队列中取出消息,是消息驱动程序的核心部分,它使得程序可以响应用户的输入和其他事件。 这个教程系列深入浅出地介绍了Windows API的基础知识,适合对Windows编程感兴趣的人学习。通过每天实践一个主题,读者将逐渐建立起对Windows API的理解和应用能力。

#-*- coding:utf-8 -*- import os #from win32com.client import Dispatch, constants, gencache, DispatchEx import win32api import win32com.client def pdf_xls(root,filename,name): if(filename.find('.xlsx')>=0): pdfname = root+os.sep+filename.replace(".xlsx", ".pdf") else: pdfname = root+os.sep+filename.replace(".xls", ".pdf") xlApp=win32com.client.Dispatch('Excel.Application') xlApp.Visible = 0 xlApp.DisplayAlerts = 0 books = xlApp.Workbooks.Open(name,False) for sh in books.Sheets: sh.PageSetup.Orientation = 1 sh.PageSetup.Zoom = False sh.PageSetup.FitToPagesWide= 1 books.ExportAsFixedFormat(0, pdfname) books.Close() print('保存 PDF 文件:', pdfname) xlApp.Quit() def pdf_doc(root,filename,name): if(name.find('.docx')>=0): pdfname =root+os.sep+filename.replace(".docx", ".pdf") else: pdfname = root+os.sep+filename.replace(".doc", ".pdf") print(pdfname) #print(pdfwj) exec_tool = 'kwps.application' word = win32com.client.DispatchEx(exec_tool) word.Visible = 0 word.DisplayAlerts = 0 password='666666' doc = word.Documents.Open(name,True,False,False,password,password,Visible=False) doc.SaveAs(pdfname,FileFormat=17) #doc.ExportAsFixedFormat(0,pdfname) doc.Close() word.Quit() if __name__ == "__main__": path=input('输入文档路径') for root, directories, files in os.walk(path): n=0 for fileList in files: name=root+ os.sep+fileList #文件名 if (name.find('.doc')>=0): print(name+"开始执行") try: pdf_doc(root,fileList,name) print(name+"已完成执行") except Exception as re: f=open("error_data.txt","a",encoding='UTF-8') f.write(str(name)+str(re)+"\n") f.close() if name.find('.xls')>=0: print(name+"开始执行") try: pdf_xls(root,fileList,name) #root 目录 fileList 文档名称 name 文件加文档名 except Exception as re: f=open("error_data.txt","a",encoding='UTF-8') f.write(name+str(re)+"\n") f.close()这个程序怎么用

2023-06-08 上传