① 关于一些dll文件的说明
winexec(Pchar('StrCommand'),sw_Show); 其中"StrCommand"代表以下命令之一(使用Windows中的运行不要加引号): "rundll32 shell32,Control_RunDLL" – 运行控制面板 "rundll32 shell32,OpenAs_RunDLL" – 打开"打开方式"窗口 "rundll32 shell32,ShellAboutA Info-Box" – 打开"关于"窗口 "rundll32 shell32,Control_RunDLL desk.cpl" – 打开"显示属性"窗口 "rundll32 user,cascadechildwindows" – 层叠全部窗口 "rundll32 user,tilechildwindows" – 最小化所有的子窗口 "rundll32 user,repaintscreen" – 刷新桌面 "rundll32 shell,shellexecute Explorer" – 重新运行Windows Explorer "rundll32 keyboard,disable" – 锁写键盘 "rundll32 mouse,disable" – 让鼠标失效 "rundll32 user,swapmousebutton" – 交换鼠标按钮 "rundll32 user,setcursorpos" – 设置鼠标位置为(0,0) "rundll32 user,wnetconnectdialog" – 打开"映射网络驱动器"窗口 "rundll32 user,wnetdisconnectdialog" – 打开"断开网络驱动器"窗口 "rundll32 user,disableoemlayer" – 显示BSOD窗口, (BSOD) = Blue Screen Of Death, 即蓝屏 "rundll32 disk,DiskCopyRunDll" – 打开磁盘复制窗口 "rundll32 rnaui.dll,RnaWizard" – 运行"Internet连接向导", 如果加上参数"/1"则为silent模式 "rundll32 shell32,SHFormatDrive" – 打开"格式化磁盘(A)"窗口 "rundll32 shell32,SHExitWindowsEx -1" – 冷启动Windows Explorer "rundll32 shell32,SHExitWindowsEx 1" – 关机 "rundll32 shell32,SHExitWindowsEx 0" – 退当前用户 "rundll32 shell32,SHExitWindowsEx 2" Windows9x 快速重启 "rundll32 krnl386.exe,exitkernel" – 强行退出Windows 9x(无确认) "rundll rnaui.dll,RnaDial "MyConnect" – 运行"网络连接"对话框 "rundll32 msprint2.dll,RUNDLL_PrintTestPage" – 选择打印机和打印测试页 "rundll32 user,setcaretblinktime" – 设置光标闪烁速度 "rundll32 user, setdoubleclicktime" – 测试鼠标双击速度 "rundll32 sysdm.cpl,InstallDevice_Rundll" – 搜索非PnP设备 控制面板中的各项功能 winexec('rundll32.exe shell32.dll, Control_RunDLL', 9); {辅助选项 属性-键盘} winexec('rundll32.exe shell32.dll, Control_RunDLL access.cpl, 1', 9); {辅助选项 属性-声音} winexec('rundll32.exe shell32.dll, Control_RunDLL access.cpl, 2', 9); {辅助选项 属性-显示} winexec('rundll32.exe shell32.dll, Control_RunDLL access.cpl, 3', 9); {辅助选项 属性-鼠标} winexec('rundll32.exe shell32.dll, Control_RunDLL access.cpl, 4', 9); {辅助选项 属性-常规} winexec('rundll32.exe shell32.dll, Control_RunDLL access.cpl, 5', 9); {添加/删除程序 属性-安装/卸载} winexec('rundll32.exe shell32.dll, Control_RunDLL Appwiz.cpl, 1', 9); {添加/删除程序 属性-Windows安装程序} winexec('rundll32.exe shell32.dll, Control_RunDLL Appwiz.cpl, 2', 9); {添加/删除程序 属性-启动盘} winexec('rundll32.exe shell32.dll, Control_RunDLL Appwiz.cpl, 3', 9); {显示 属性-背景} winexec('rundll32.exe shell32.dll, Control_RunDLL desk.cpl, 0', 9); {显示 属性-屏幕保护程序} winexec('rundll32.exe shell32.dll, Control_RunDLL desk.cpl, 1', 9); {显示 属性-外观} winexec('rundll32.exe shell32.dll, Control_RunDLL desk.cpl, 2', 9); {显示 属性-设置} winexec('rundll32.exe shell32.dll, Control_RunDLL desk.cpl, 3', 9); {Internet 属性-常规} winexec('rundll32.exe shell32.dll, Control_RunDLL Inetcpl.cpl, 0', 9); {Internet 属性-安全} winexec('rundll32.exe shell32.dll, Control_RunDLL Inetcpl.cpl, 1', 9); {Internet 属性-内容} winexec('rundll32.exe shell32.dll, Control_RunDLL Inetcpl.cpl, 2', 9); {Internet 属性-连接} winexec('rundll32.exe shell32.dll, Control_RunDLL Inetcpl.cpl, 3', 9); {Internet 属性-程序} winexec('rundll32.exe shell32.dll, Control_RunDLL Inetcpl.cpl, 4', 9); {Internet 属性-高级} winexec('rundll32.exe shell32.dll, Control_RunDLL Inetcpl.cpl, 5', 9); {区域设置 属性-区域设置} winexec('rundll32.exe shell32.dll, Control_RunDLL Intl.cpl, 0', 9); {区域设置 属性-数字} winexec('rundll32.exe shell32.dll, Control_RunDLL Intl.cpl, 1', 9); {区域设置 属性-货币} winexec('rundll32.exe shell32.dll, Control_RunDLL Intl.cpl, 2', 9); {区域设置 属性-时间} winexec('rundll32.exe shell32.dll, Control_RunDLL Intl.cpl, 3', 9); {区域设置 属性-日期} winexec('rundll32.exe shell32.dll, Control_RunDLL Intl.cpl, 4', 9); winexec('rundll32.exe shell32.dll, Control_RunDLL Joy.cpl, 0', 9); winexec('rundll32.exe shell32.dll, Control_RunDLL Joy.cpl, 1', 9); {鼠标 属性} winexec('rundll32.exe shell32.dll, Control_RunDLL Main.cpl', 9); {多媒体 属性-音频} winexec('rundll32.exe shell32.dll, Control_RunDLL Mmsys.cpl, 0', 9); {多媒体 属性-视频} winexec('rundll32.exe shell32.dll, Control_RunDLL Mmsys.cpl, 1', 9); {多媒体 属性-MIDI} winexec('rundll32.exe shell32.dll, Control_RunDLL Mmsys.cpl, 2', 9); {多媒体 属性-CD音乐} winexec('rundll32.exe shell32.dll, Control_RunDLL Mmsys.cpl, 3', 9); {多媒体 属性-设备} winexec('rundll32.exe shell32.dll, Control_RunDLL Mmsys.cpl, 4', 9); {调制解调器 属性} winexec('rundll32.exe shell32.dll, Control_RunDLL Modem.cpl', 9); winexec('rundll32.exe shell32.dll, Control_RunDLL Netcpl.cpl', 9); {密码 属性} winexec('rundll32.exe shell32.dll, Control_RunDLL Password.cpl', 9); {扫描仪与数字相机 属性} winexec('rundll32.exe shell32.dll, Control_RunDLL Sticpl.cpl', 9); {系统 属性-常规} winexec('rundll32.exe shell32.dll, Control_RunDLL Sysdm.cpl, 0', 9); {系统 属性-设备管理器} winexec('rundll32.exe shell32.dll, Control_RunDLL Sysdm.cpl, 1', 9); {系统 属性-硬件配置文件} winexec('rundll32.exe shell32.dll, Control_RunDLL Sysdm.cpl, 2', 9); {系统 属性-性能} winexec('rundll32.exe shell32.dll, Control_RunDLL Sysdm.cpl, 3', 9); {日期/时间 属性} winexec('rundll32.exe shell32.dll, Control_RunDLL timedate.cpl', 9); {电源管理 属性} winexec('rundll32.exe shell32.dll, Control_RunDLL Powercfg.cpl', 9); winexec('rundll32.exe shell32.dll, Control_RunDLL Telephon.cpl', 9); 关于调用后的判断处理建议: 先声明一个cardinal类型的变量RtnCardinal获取返回值进行判断如: RtnCardinal := winexec('rundll32.exe shell32.dll, Control_RunDLL Telephon.cpl', 9); 返回值 可能原因 0 程序超出内存 ERROR_BAD_FORMAT 程序为一个非法的Win32.EXE程序 ERROR_FILE_NOT_FOUND 指定文件没找到 ERROR_PATH_NOT_FOUND 指定路径没找到 使用方法: 点击“开始-程式-Ms-Dos方式”,进入Dos视窗,然后键入"rundll32.exe user.exe,restartwindows",再按下回车键,这时你将看到,机器被重启了!怎么样,是不是很有趣? 当然,Rundll的功能绝不仅仅是重启你的机器。其实,Rundll者,顾名思义,执行Dll也,它的功能就是以命令列的方式呼叫Windows的动态链结库,Rundll32.exe与Rundll.exe的区别就在於前者是呼叫32位的链结库,而后者是运用於16位的链结库,它们的命令格式是: RUNDLL.EXE ,, 这里要注意三点:1.Dll档案名中不能含有空格,比如该档案位於c:\Program Files\目录,你要把这个路径改成c:\Progra~1\;2.Dll档案名与Dll入口点间的逗号不能少,否则程式将出错并且不会给出任何资讯!3.这是最重要的一点:Rundll不能用来呼叫含返回值参数的Dll,例如Win32API中的GetUserName(),GetTextFace()等。在Visual Basic中,提供了一条执行外部程式的指令Shell,格式为: Shell “命令列” 如果能配合Rundll32.exe用好Shell指令,会使您的VB程式拥有用其他方法难以甚至无法实现的效果:仍以重启为例,传统的方法需要你在VB工程中先建立一个模组,然后写入WinAPI的声明,最后才能在程式中呼叫。而现在只需一句: Shell “rundll32.exe user.exe,restartwindows”就搞定了!是不是方便多了? 实际上,Rundll32.exe在呼叫各种Windows控制面板和系统选项方面有著独特的优势。下面,我就将本人在因特网上收集的有关Rundll的指令列举如下(很有用的,能省去你很多呼叫Windows API的时间!!),供大家在程式设计中引用: 命令列: rundll32.exe shell32.dll,Control_RunDLL 功能: 显示控制面板 命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,1 功能: 显示“控制面板-辅助选项-键盘”选项视窗 命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,2 功能: 显示“控制面板-辅助选项-声音”选项视窗 命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,3 功能: 显示“控制面板-辅助选项-显示”选项视窗 命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,4 功能: 显示“控制面板-辅助选项-滑鼠”选项视窗 命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,5 功能: 显示“控制面板-辅助选项-传统”选项视窗 命令列: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl @1 功能: 执行“控制面板-添加新硬体”向导。 命令列: rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL AddPrinter 功能: 执行“控制面板-添加新印表机”向导。 命令列: rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,1 功能: 显示 “控制面板-添加/删除程式-安装/卸载” 面板。 命令列: rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,2 功能: 显示 “控制面板-添加/删除程式-安装Windows” 面板。 命令列: rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,3 功能: 显示 “控制面板-添加/删除程式-启动盘” 面板。 命令列: rundll32.exe syncui.dll,Briefcase_Create 功能: 在桌面上建立一个新的“我的公文包”。 命令列: rundll32.exe disk.dll,DiskCopyRunDll 功能: 显示复制软碟视窗 命令列: rundll32.exe apwiz.cpl,NewLinkHere %1 功能: 显示“建立快捷方式”的对话框,所建立的快捷方式的位置由%1参数决定。 命令列: rundll32.exe shell32.dll,Control_RunDLL timedate.cpl,,0 功能: 显示“日期与时间”选项视窗。 命令列: rundll32.exe shell32.dll,Control_RunDLL timedate.cpl,,1 功能: 显示“时区”选项视窗。 命令列: rundll32.exe rnaui.dll,RnaDial [某个拨号连接的名称] 功能: 显示某个拨号连接的拨号视窗。如果已经拨号连接,则显示目前的连接状态的视窗。 命令列: rundll32.exe rnaui.dll,RnaWizard 功能: 显示“新建拨号连接”向导的视窗。 命令列: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0 功能: 显示“显示属性-背景”选项视窗。 命令列: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,1 功能: 显示“显示属性-萤屏保护”选项视窗。 命令列: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,2 功能: 显示“显示属性-外观”选项视窗。 命令列: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,3 功能: 显示显示“显示属性-属性”选项视窗。 命令列: rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL FontsFolder 功能: 显示Windows的“字体”档案夹。 命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @3 功能: 同样是显示Windows的“字体”档案夹。 命令列: rundll32.exe shell32.dll,SHformatDrive 功能: 显示格式化软碟对话框。 命令列: rundll32.exe shell32.dll,Control_RunDLL joy.cpl,,0 功能: 显示“控制面板-游戏控制器-一般”选项视窗。 命令列: rundll32.exe shell32.dll,Control_RunDLL joy.cpl,,1 功能: 显示“控制面板-游戏控制器-进阶”选项视窗。 命令列: rundll32.exe mshtml.dll,PrintHTML (HTML文档) 功能: 列印HTML文档。 命令列: rundll32.exe shell32.dll,Control_RunDLL mlcfg32.cpl 功能: 显示Microsoft Exchange一般选项视窗。 命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @0 功能: 显示“控制面板-滑鼠” 选项 。 命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @1 功能: 显示 “控制面板-键盘属性-速度”选项视窗。 命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @1,,1 功能: 显示 “控制面板-键盘属性-语言”选项视窗。 命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @2 功能: 显示Windows“印表机”档案夹。 命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @3 功能: 显示Windows“字体”档案夹。 命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @4 功能: 显示“控制面板-输入法属性-输入法”选项视窗。 命令列: rundll32.exe shell32.dll,Control_RunDLL modem.cpl,,add 功能: 执行“添加新调制解调器”向导。 命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,0 功能: 显示“控制面板-多媒体属性-音频”属性页。 命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,1 功能: 显示“控制面板-多媒体属性-视频”属性页。 命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,2 功能: 显示“控制面板-多媒体属性-MIDI”属性页。 命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,3 功能: 显示“控制面板-多媒体属性-CD音乐”属性页。 命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,4 功能: 显示“控制面板-多媒体属性-设备”属性页。 命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl @1 功能: 显示“控制面板-声音”选项视窗。 命令列: rundll32.exe shell32.dll,Control_RunDLL netcpl.cpl 功能: 显示“控制面板-网路”选项视窗。 命令列: rundll32.exe shell32.dll,Control_RunDLL odbccp32.cpl 功能: 显示ODBC32资料管理选项视窗。 命令列: rundll32.exe shell32.dll,OpenAs_RunDLL 功能: 显示指定档案(drive:\path\filename)的“打开方式”对话框。 命令列: rundll32.exe shell32.dll,Control_RunDLL password.cpl 功能: 显示“控制面板-密码”选项视窗。 命令列: rundll32.exe shell32.dll,Control_RunDLL powercfg.cpl 功能: 显示“控制面板-电源管理属性”选项视窗。 命令列: rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL PrintersFolder 功能: 显示Windows“印表机”档案夹。(同rundll32.exe shell32.dll,Control_RunDLL main.cpl @2) 命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,0 功能: 显示“控制面板-区域设置属性-区域设置”选项视窗。 命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,1 功能: 显示“控制面板-区域设置属性-数字”选项视窗。 命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,2 功能: 显示“控制面板-区域设置属性-货币”选项视窗。 命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,3 功能: 显示“控制面板-区域设置属性-时间”选项视窗。 命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,4 功能: 显示“控制面板-区域设置属性-日期”选项视窗。 命令列: rundll32.exe desk.cpl,InstallScreenSaver [萤屏保护档案名] 功能: 将指定的萤屏保护档案设置为Windows的屏保,并显示萤屏保护属性视窗。 命令列: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,0 功能: 显示“控制面板-系统属性-传统”属性视窗。 命令列: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,1 功能: 显示“控制面板-系统属性-设备管理器”属性视窗。 命令列: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,2 功能: 显示“控制面板-系统属性-硬体配置档案”属性视窗。 命令列: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,3 功能: 显示“控制面板-系统属性-性能”属性视窗。 命令列: rundll32.exe user.exe,restartwindows 功能: 强行关闭所有程式并重启机器。 命令列: rundll32.exe user.exe,exitwindows 功能: 强行关闭所有程式并关机。 命令列: rundll32.exe shell32.dll,Control_RunDLL telephon.cpl 功能: 显示“拨号属性”选项视窗 命令列: rundll32.exe shell32.dll,Control_RunDLL themes.cpl 功能: 显示“桌面主旨”选项面板 当然,不止是VisualBasic,象Delphi.VisualC++等其他程式设计语言也可以通过呼叫外部命令的方法来使用Rundll的这些功能,具体方法这里就不再详细叙述了。灵活的使用Rundll,一定会使你的程式设计轻轻松松,达到事半功倍的效果
② windows 中system32文件夹中有哪些dll文件是图标文件
我最常用的是这三个
shell32.dll
moricons.dll
pifmgr.dll
其它:
C:.Dll
C:WindowsSystem32compstui.dll
C:WindowsSystem32DDORes.dll
C:WindowsSystem32GameUx.Dll
C:WindowsSystem32ieframe.dll
C:WindowsSystem32imageres.dll
C:WindowsSystem32mmcndmgr.dll
C:WindowsSystem32mmRes.Dll
C:WindowsSystem32MorIcons.Dll
C:WindowsSystem32NetCenter.Dll
C:WindowsSystem32
etshell.dll
C:WindowsSystem32
etworkexplorer.dll
C:WindowsSystem32PifMgr.dll
C:WindowsSystem32pnii.Dll
C:WindowsSystem32SensorsCpl.Dll
C:WindowsSystem32SetupApi.Dll
C:WindowsSystem32Shell32.Dll
C:WindowsSystem32wmploc.DLL
C:WindowsSystem32wpdshext.dll
③ 常用动态链接库的DLL有哪些
它是Dynamic Link Library 的缩写形式,DLL 是一个包含可由多个程序同时使用的代码和数据的库,DLL不是可执行文件。动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的可执行代码位于一个 DLL 中,该 DLL 包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。DLL 还有助于共享数据和资源。多个应用程序可同时访问内存中单个DLL 副本的内容。DLL 是一个包含可由多个程序同时使用的代码和数据的库。例如,在 Windows 操作系统中,Comdlg32 DLL 执行与对话框有关的常见函数。因此,每个程序都可以使用该 DLL 中包含的功能来实现“打开”对话框。这有助于促进代码重用和内存的有效使用。 通过使用 DLL,程序可以实现模块化,由相对独立的组件组成。例如,一个计帐程序可以按模块来销售。可以在运行时将各个模块加载到主程序中(如果安装了相应模块)。因为模块是彼此独立的,所以程序的加载速度更快,而且模块只在相应的功能被请求时才加载。 此外,可以更为容易地将更新应用于各个模块,而不会影响该程序的其他部分。例如,您可能具有一个工资计算程序,而税率每年都会更改。当这些更改被隔离到 DLL 中以后,您无需重新生成或安装整个程序就可以应用更新。 下表说明了 Windows 操作系统中的一些作为 DLL 实现的文件: • ActiveX 控件 (.ocx) 文件 ActiveX 控件的一个示例是日历控件,它使您可以从日历中选择日期。 • 控制面板 (.cpl) 文件 .cpl 文件的一个示例是位于控制面板中的项。每个项都是一个专用 DLL。 • 设备驱动程序 (.drv) 文件 设备驱动程序的一个示例是控制打印到打印机的打印机驱动程序。[编辑本段]DLL 的优点 1、扩展了应用程序的特性; 2、可以用许多种编程语言来编写; 3、简化了软件项目的管理; 4、有助于节省内存; 5、有助于资源共享; 6、有助于应用程序的本地化; 7、有助于解决平台差异; 8、可以用于一些特殊的目的。windows使得某些特性只能为DLL所用。[编辑本段]DLL 依赖项 当某个程序或 DLL 使用其他 DLL 中的 DLL 函数时,就会创建依赖项。因此,该程序就不再是独立的,并且如果该依赖项被损坏,该程序就可能遇到问题。例如,如果发生下列操作之一,则该程序可能无法运行: • 依赖 DLL 升级到新版本。 • 修复了依赖 DLL。 • 依赖 DLL 被其早期版本覆盖。 • 从计算机中删除了依赖 DLL。 这些操作通常称为 DLL 冲突。如果没有强制实现向后兼容性,则该程序可能无法成功运行。 DLL 入口点 在创建 DLL 时,可以有选择地指定入口点函数。当进程或线程将它们自身附加到 DLL 或者将它们自身从 DLL 分离时,将调用入口点函数。您可以使用入口点函数根据 DLL 的需要来初始化数据结构或者销毁数据结构。此外,如果应用程序是多线程的,则可以在入口点函数中使用线程本地存储 (TLS) 来分配各个线程专用的内存。下面的代码是一个 DLL 入口点函数的示例。 BOOL APIENTRY DllMain( HANDLE hMole, // Handle to DLL mole DWORD ul_reason_for_call, // Reason for calling function LPVOID lpReserved ) // Reserved { switch ( ul_reason_for_call ) { case DLL_PROCESS_ATTACHED: // A process is loading the DLL. break; case DLL_THREAD_ATTACHED: // A process is creating a new thread. break; case DLL_THREAD_DETACH: // A thread exits normally. break; case DLL_PROCESS_DETACH: // A process unloads the DLL. break; } return TRUE; } 当入口点函数返回 FALSE 值时,如果您使用的是加载时动态链接,则应用程序不启动。如果您使用的是运行时动态链接,则只有个别 DLL 不会加载。 入口点函数只应执行简单的初始化任务,不应调用任何其他 DLL 加载函数或终止函数。例如,在入口点函数中,不应直接或间接调用 LoadLibrary 函数或 LoadLibraryEx 函数。此外,不应在进程终止时调用 FreeLibrary 函数。 注意:在多线程应用程序中,请确保将对 DLL 全局数据的访问进行同步(线程安全),以避免可能的数据损坏。为此,请使用 TLS 为各个线程提供唯一的数据。[编辑本段]导出 DLL 函数 要导出 DLL 函数,您可以向导出的 DLL 函数中添加函数关键字,也可以创建模块定义文件 (.def) 以列出导出的 DLL 函数。 方法一、向导出的 DLL 函数中添加函数关键字 要使用函数关键字,您必须使用以下关键字来声明要导出的各个函数: __declspec(dllexport) 要在应用程序中使用导出的 DLL 函数,您必须使用以下关键字来声明要导入的各个函数: __declspec(dllimport) 通常情况下,您最好使用一个包含 define 语句和 ifdef 语句的头文件,以便分隔导出语句和导入语句。 方法二、创建模块定义文件 (.def) 以列出导出的 DLL 函数 使用模块定义文件来声明导出的 DLL 函数。当您使用模块定义文件时,您不必向导出的 DLL 函数中添加函数关键字。在模块定义文件中,您可以声明 DLL 的 LIBRARY 语句和 EXPORTS 语句。 关于特定情况下的调用,比如DLL函数中使用到了win32 API或者将C++生成的DLL供标准C语言使用,则需要注意以下一些情况: 如果使用到了win32 API,则应该使用调用方式为“__stdcall”。 在将C++生成的DLL供标准C语言使用,输出文件需要用“extern "C"”修饰,否则不能被标准C语言调用。如果使用“__stdcall”调用方式,可能产生C不识别的修饰名,所以设置导出函数时要采用.def文件形式,而不是__declspec(dllexport)形式。后者会进行修饰名转换,C语言无法识别函数。 下面的代码是一个定义文件的示例。 // SampleDLL.def // LIBRARY "sampleDLL" EXPORTS HelloWorld 示例 DLL 和应用程序 在 Microsoft Visual C++ 6.0 中,可以通过选择“Win32 动态链接库”项目类型或“MFC 应用程序向导 (dll)”来创建 DLL。 下面的代码是一个在 Visual C++ 中通过使用“Win32 动态链接库”项目类型创建的 DLL 的示例。 // SampleDLL.cpp // #include "stdafx.h" #define EXPORTING_DLL #include "sampleDLL.h" BOOL APIENTRY DllMain( HANDLE hMole, DWORD ul_reason_for_call, LPVOID lpReserved ) { return TRUE; } void HelloWorld() { MessageBox( NULL, TEXT("Hello World"), TEXT("In a DLL"), MB_OK); } // File: SampleDLL.h // #ifndef INDLL_H #define INDLL_H #ifdef EXPORTING_DLL extern __declspec(dllexport) void HelloWorld() ; #else extern __declspec(dllimport) void HelloWorld() ; #endif #endif 下面的代码是一个“Win32 应用程序”项目的示例,该示例调用 SampleDLL DLL 中的导出 DLL 函数。 // SampleApp.cpp // #include "stdafx.h" #include "sampleDLL.h" int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { HelloWorld(); return 0; } 注意:在加载时动态链接中,您必须链接在生成 SampleDLL 项目时创建的 SampleDLL.lib 导入库。 在运行时动态链接中,您应使用与以下代码类似的代码来调用 SampleDLL.dll 导出 DLL 函数。 … typedef VOID (*DLLPROC) (LPTSTR); … HINSTANCE hinstDLL; DLLPROC HelloWorld; BOOL fFreeDLL; hinstDLL = LoadLibrary("sampleDLL.dll"); if (hinstDLL != NULL) { HelloWorld = (DLLPROC) GetProcAddress(hinstDLL, "HelloWorld"); if (HelloWorld != NULL) (HelloWorld); fFreeDLL = FreeLibrary(hinstDLL); }
④ p开头的文件资料
p开头的文件资料是一些常见的文件扩展名,需要懂得它们的含义才能展开工作。1.PM5:Pagemaker5.0文件2.PM6:Pagemaker6.0文件3.PPS:MicrosoftPowerpoint幻灯片放映4.PPT:MicrosoftPowerpoint演示文稿5.PSD:Adobephotoshop位图文件6.PST:MicrosoftOutlook个人文件夹文件7.PWL:Windows95口令列表文件,以上是P开头的文件扩展名和它们的说明。1.png文件格式,PNG其目的是试图替代GIF和TIFF文件格式,同时增加一些GIF文件格式所不具备的特性。可移植网络图形格式(PortableNetworkGraphicFormat,PNG)名称来源于非官方的“PNG'sNotGIF”,是一种位图文件(bitmapfile)存储格式。2.psd文件格式,psd格式可以将编辑过和图像文件中的所有有关图层和通道的信息保存下来。但是psd格式的图像文件很少为其它软件和工具所支持。所以在图像制作完成后,通常需要转化为一些比较通用的图像格式,以便于输出到其它软件中继续编辑。3.pst文件格式,pst文件是outlook文件的专用格式。可以使用officeoutlook2003打开,但是需要在打开outlook2003后,在当前帐户下添加数据文件(文件-数据-添加数据文件-选择这个pst文件-打开,即可)就可以看到它出现在左边列表下,若使用office2007的话可以直接选择打开。Office2007激活验证破解补丁绿色版。4.php文件格式,PHP是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,主要适用于Web开发领域。PHP的文件后缀名为*.php。如果学php,那么你可以在网络中找寻到很多的教程的,其实学任何的程序最好的就是写,不停的写不停的看。5.pptx文件格式,pptx文件是由powerpoint2007制作的,低版本的一般情况是无法打开的,可以采用以下方法:一种是直接安装powerpoint2007,或安装微软2007格式兼容包,安装后就可以查看、编辑。还有一些第三方工具也能打开pptx文件。6.pdf文件格式,PDF将忠实地再现原稿的每一个字符、颜色以及图象,无论在哪种打印机上都可保证精确的颜色和准确的打印效果。Adobe公司设计PDF文件格式的目的是为了支持跨平台上的,多媒体集成的信息出版和发布,尤其是提供对网络信息发布的支持。pdf阅读器下载!7.pak文件格式,pak是一种压缩格式,pak文件可以用一些专业压缩软件(如WinRAR、WinZip)打开,WinRAR简体中文版下载,但由于其特殊性与一般的压缩文件格式打开方式有所不同。pak文件一般是游戏的文件,里面存了很多游戏所需的重要文件,并且是加密了的,现在虽说有能打开pak文件的软件,但也仅限于未加密的。8.pcx文件格式,pcx原本是PCPaintbrush软件的文件格式(PCX代表PCPaintbrushExchange),却成了最广泛接受的DOS图像标准之一。pcx格式是ZSOFT公司在开发图像处理软件Paintbrush时开发的一种格式。由于pcx格式出现的时间较长,作为一种经典的图像格式,目前任然存在,但现在已经慢慢的被jpg、png等更为流行的格式取代了,不过还是有使用的时候,pcx文件可以使用常用的图像软件(如ACDSee、PS)打开!ACDSee中文版下载!9.pic文件格式,pic是一种图像文件格式,以图像文件格式是记录和存储影像信息的格式。对数字图像进行存储、处理、传播,必须采用一定的图像格式,也就是把图像的像素按照一定的方式进行组织和存储,把图像数据存储成文件就得到图像文件。图像文件格式决定了应该在文件中存放何种类型的信息,文件如何与各种应用软件兼容,文件如何与其它文件交换数据。
⑤ 电脑的dll文件包括哪些方面的
DLL 的类型当您在应用程序中加载 DLL 时,可以使用两种链接方法来调用导出的 DLL 函数。这两种链接方法是加载时动态链接和运行时动态链接。 1、加载时动态链接 在加载时动态链接中,应用程序像调用本地函数一样对导出的 DLL 函数进行显式调用。要使用加载时动态链接,请在编译和链接应用程序时提供头文件 (.h) 和导入库文件 (.lib)。当您这样做时,链接器将向系统提供加载 DLL 所需的信息,并在加载时解析导出的 DLL 函数的位置。 2、运行时动态链接 在运行时动态链接中,应用程序调用 LoadLibrary 函数或 LoadLibraryEx 函数以在运行时加载 DLL。成功加载 DLL 后,可以使用 GetProcAddress 函数获得要调用的导出的 DLL 函数的地址。在使用运行时动态链接时,无需使用导入库文件。 Win32 DLL的特点 Win32 DLL与 Win16 DLL有很大的区别,这主要是由操作系统的设计思想决定的。一方面,在Win16 DLL中程序入口点函数和出口点函数(LibMain和WEP)是分别实现的;而在Win32 DLL中却由同一函数DLLMain来实现。无论何时,当一个进程或线程载入和卸载DLL时,都要调用该函数,它的原型是 BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason, LPVOID lpvReserved); 其中,第一个参数表示DLL的实例句柄;第三个参数系统保留;这里主要介绍一下第二个参数,它有四个可能的值:DLL_PROCESS_ATTACH(进程载入),DLL_THREAD_ATTACH(线程载入),DLL_THREAD_DETACH(线程卸载),DLL_PROCESS_DETACH(进程卸载),在DLLMain函数中可以对传递进来的这个参数的值进行判别,并根据不同的参数值对DLL进行必要的初始化或清理工作。举个例子来说,当有一个进程载入一个DLL时,系统分派给DLL的第二个参数为DLL_PROCESS_ATTACH,这时,你可以根据这个参数初始化特定的数据。另一方面,在Win16环境下,所有应用程序都在同一地址空间;而在Win32环境下,所有应用程序都有自己的私有空间,每个进程的空间都是相互独立的,这减少了应用程序间的相互影响,但同时也增加了编程的难度。大家知道,在Win16环境中,DLL的全局数据对每个载入它的进程来说都是相同的;而在Win32环境中,情况却发生了变化,当进程在载入DLL时,系统自动把DLL地址映射到该进程的私有空间,而且也复制该DLL的全局数据的一份拷贝到该进程空间,也就是说每个进程所拥有的相同的DLL的全局数据其值却并不一定是相同的。因此,在Win32环境下要想在多个进程中共享数据,就必须进行必要的设置。亦即把这些需要共享的数据分离出来,放置在一个独立的数据段里,并把该段的属性设置为共享。
⑥ 什么是P文件,如何打开P文件
在一款1.56GB大小游戏里面的~~名称是:"1.p"、"2.p",还有"audio.p"。不晓得是什么东西诶~~
⑦ DLL文件都有哪些
系统里面很多啊,说不完,比如什么shell32.dll、system.dll、Ursa.dll、d3dx9_28.dll等等的。
⑧ dll是什么文件
DLL是Dynamic Link Library的缩写,意为动态链接库。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。一个应用程序可有多个DLL文件,一个DLL文件也可能被几个应用程序所共用,这样的DLL文件被称为共享DLL文件。DLL文件一般被存放在C:WindowsSystem目录下。 DLL 是一个包含可由多个程序同时使用的代码和数据的库。例如,在 Windows 操作系统中,Comdlg32 DLL 执行与对话框有关的常见函数。因此,每个程序都可以使用该 DLL 中包含的功能来实现“打开”对话框。这有助于促进代码重用和内存的有效使用。 通过使用 DLL,程序可以实现模块化,由相对独立的组件组成。例如,一个计帐程序可以按模块来销售。可以在运行时将各个模块加载到主程序中(如果安装了相应模块)。因为模块是彼此独立的,所以程序的加载速度更快,而且模块只在相应的功能被请求时才加载。 此外,可以更为容易地将更新应用于各个模块,而不会影响该程序的其他部分。例如,您可能具有一个工资计算程序,而税率每年都会更改。当这些更改被隔离到 DLL 中以后,您无需重新生成或安装整个程序就可以应用更新。 Windows 操作系统中的一些作为 DLL 实现的文件: ·ActiveX 控件 (.ocx) 文件 ActiveX 控件的一个示例是日历控件,它使您可以从日历中选择日期。 ·控制面板 (.cpl) 文件 .cpl 文件的一个示例是位于控制面板中的项。每个项都是一个专用 DLL。 ·设备驱动程序 (.drv) 文件 设备驱动程序的一个示例是控制打印到打印机的打印机驱动程序。 DLL 的优点 当程序使用 DLL 时提供的一些优点: ·使用较少的资源 当多个程序使用同一个函数库时,DLL 可以减少在磁盘和物理内存中加载的代码的重复量。这不仅可以大大影响在前台运行的程序,而且可以大大影响其他在 Windows 操作系统上运行的程序。 ·推广模块式体系结构 DLL 有助于促进模块式程序的开发。这可以帮助您开发要求提供多个语言版本的大型程序或要求具有模块式体系结构的程序。模块式程序的一个示例是具有多个可以在运行时动态加载的模块的计帐程序。 ·简化部署和安装 当 DLL 中的函数需要更新或修复时,部署和安装 DLL 不要求重新建立程序与该 DLL 的链接。此外,如果多个程序使用同一个 DLL,那么多个程序都将从该更新或修复中获益。当您使用定期更新或修复的第三方 DLL 时,此问题可能会更频繁地出现。 1、如何了解某应用程序使用哪些DLL文件 右键单击该应用程序并选择快捷菜单中的“快速查看”命令,在随后出现的“快速查看”窗口的“引入表”一栏中你将看到其使用DLL文件的情况。 2、如何知道DLL文件被几个程序使用 运行Regedit,进入HKEY_LOCAL_- ersionSharedDlls子键查看,其右边窗口中就显示了所有DLL文件及其相关数据,其中数据右边小括号内的数字就说明了被几个程序使用,(2)表示被两个程序使用,(0)则表示无程序使用,可以将其删除。 3、如何解决DLL文件丢失的情况 有时在卸载文件时会提醒你删除某个DLL文件可能会影响其他应用程序的运行。所以当你卸载软件时,就有可能误删共享的DLL文件。一旦出现了丢失DLL文件的情况,如果你能确定其名称,可以在Sysbckup(系统备份文件夹)中找到该DLL文件,将其复制到System文件夹中。如果这样不行,在电脑启动时又总是出现“***dll文件丢失……”的提示框,你可以在“开始/运行”中运行Msconfig,进入系统配置实用程序对话框以后,单击选择“System.ini”标签,找出提示丢失的DLL文件,使其不被选中,这样开机时就不会出现错误提示了。 rundll的功能是以命令列的方式呼叫Windows的动态链结库。 Rundll32.exe与Rundll.exe的区别就在于前者是呼叫32位的链结库,后者是用于16位的链结库。rundll32.exe是专门用来调用dll文件的程序。 如果用的是Win98,rundll32.exe一般存在于Windows目录下; 如果用的WinXP,rundll32.exe一般存在于WindowsSystem32目录下。 若是在其它目录,就可能是一个木马程序,它会伪装成rundll32.exe。 DLL 故障排除工具 可以使用多个工具来帮助您解决 DLL 问题。以下是其中的部分工具。 Dependency Walker Dependency Walker 工具可以递归扫描以寻找程序所使用的所有依赖 DLL。当您在 Dependency Walker 中打开程序时,Dependency Walker 会执行下列检查: ·Dependency Walker 检查是否丢失 DLL。 ·Dependency Walker 检查是否存在无效的程序文件或 DLL。 ·Dependency Walker 检查导入函数和导出函数是否匹配。 ·Dependency Walker 检查是否存在循环依赖性错误。 ·Dependency Walker 检查是否存在由于针对另一不同操作系统而无效的模块。 通过使用 Dependency Walker,您可以记录程序使用的所有 DLL。这可能有助于避免和更正将来可能发生的 DLL 问题。当您安装 Microsoft Visual Studio 6.0 时,Dependency Walker 将位于以下目录中: drive\Program Files\Microsoft Visual Studio\Common\Tools DLL Universal Problem Solver DLL Universal Problem Solver (DUPS) 工具用于审核、比较、记录和显示 DLL 信息。下表说明了组成 DUPS 工具的实用工具: ·Dlister.exe:该实用工具枚举计算机中的所有 DLL,并且将此信息记录到一个文本文件或数据库文件中。 ·Dcomp.exe:该实用工具比较在两个文本文件中列出的 DLL,并产生包含差异的第三个文本文件。 ·Dtxt2DB.exe:该实用工具将通过使用 Dlister.exe 实用工具和 Dcomp.exe 实用工具创建的文本文件加载到 dllHell 数据库中。 ·DlgDtxt2DB.exe:该实用工具提供 Dtxt2DB.exe 实用工具的图形用户界面 (GUI) 版本。 DLL 的类型 当您在应用程序中加载 DLL 时,可以使用两种链接方法来调用导出的 DLL 函数。这两种链接方法是加载时动态链接和运行时动态链接。 1、加载时动态链接 在加载时动态链接中,应用程序像调用本地函数一样对导出的 DLL 函数进行显式调用。要使用加载时动态链接,请在编译和链接应用程序时提供头文件 (.h) 和导入库文件 (.lib)。当您这样做时,链接器将向系统提供加载 DLL 所需的信息,并在加载时解析导出的 DLL 函数的位置。 2、运行时动态链接 在运行时动态链接中,应用程序调用 LoadLibrary 函数或 LoadLibraryEx 函数以在运行时加载 DLL。成功加载 DLL 后,可以使用 GetProcAddress 函数获得要调用的导出的 DLL 函数的地址。在使用运行时动态链接时,无需使用导入库文件。
⑨ 计算机中丢失pcomn.dll
1、解压下载的文件pcomn.dll2、复制文件“pcomn.dll”到系统目录下。3、系统目录一般为:C:\WINNT\System32 64位系统为C:\Windows\SysWOW644、最后点击开始菜单–>运行–>输入regsvr32 pcomn.dll后,回车即可解决错误提示!既可解决。5、在腾讯电脑管家电脑诊所-缺失dll文件(找到你丢失的dll文件),再修复就可以了呢
⑩ 常用dll文件全集
http://www.zhaodll.com/有基本上所有的dll文件。