zoukankan      html  css  js  c++  java
  • 动态加载EXE和DLL

    程序中加载了一个DLL文件,但生成的EXE在脱离了DLL文件后仍然可以
    单独使用,这是动态加载DLL技术。即:调用资源中的DLL。
    
    此技术的好处:EXE可以使用DLL中的函数,但不会额外增加一
    个DLL文件,在使用DLL文件的时候不需要先把DLL释放到硬盘。
    
    
    在动态加载的这个DLL中定义了一个函数MRun,该函数可以动态执行一
    个EXE,即:调用资源中的EXE文件或TMemoryStream中被载入的EXE流。
    
    此技术的好处:直接把资源中的EXE加载到内存中执行,使用程序自
    身嵌入的EXE文件的时候不需要先把EXE释放到硬盘上就可以直接执行。
    对保密EXE文件很有用。例如:我编写的程序是A.exe,它在运行后需要
    使用B.exe,而B.exe是别人编写的我没有源码,但我必须又要在我的程
    序中用B.exe,这时我就把它包含到我的A.exe中,这个非常容易做到,
    但是,程序A.exe在使用程序B.exe的时候按照常理必须先把B.exe释放
    到硬盘上才可以用WinExec或ShellExecute等函数调用它,但你在释放
    到硬盘上的时候容易被别人直接复制走,而你只想让别人用你的A.exe不
    想让别人直接用B.exe(因为B.exe是别人写的等原因),此时如何保密
    B.exe呢?这时只要用到上面所说的MRun函数就可以了,程序A.exe在执
    行B.exe的时候不需要释放到硬盘上就可以直接执行B.exe啦,是不是很爽?
    
    
    
    
    说一下MRun的调用方式: MRun(流,参数,进程id);
    
    调用成功返回True,失败返回False,三个参数解释如下:
    
    第一个参数:一个载入了EXE的资源流或者内存流等流类型。
    第二个参数:传递调用EXE的参数。如果EXE调用不需要参数,可设置为空串。
    第三个参数:如果调用成功,则返回被调用的EXE对应的进程ID。
    
    
    
    细节性问题,请直接双击Project1.dpr文件进入演示代码,了解更多。演示代
    码中动态加载了MemRun.dll文件,动态调用了5555044.exe文件,如果你想更换
    动态调用的EXE文件,只需要用其它EXE覆盖5555044.exe文件并双击Clear.bat
    文件后,在Delphi中按F9重新编译运行即可。

    http://download.csdn.net/detail/mwy654321/712124
  • 相关阅读:
    第二十八节-3d 盒子(transform transition )炫酷操作
    第二十七节-动画animation以及与transform的冲突
    第二十六节-transform
    transition的属性与使用,绝对定位初始值要设0,以及淡入淡出,消失
    阿里图标与iframe框架
    第二十二节-表格
    第二十一节-表单元素2以及input一些使用习惯和伪类 点击按钮换图片且有淡入淡出的效果
    第二十节-重要表单(form 与 input) 、label 标签
    案例-京东小按钮
    复合写法需要注意的
  • 原文地址:https://www.cnblogs.com/findumars/p/5570243.html
Copyright © 2011-2022 走看看