能不能把两个exe合成一个exe?并在一定的条件下才能执行后一个exe?

Jinglihui 2003-05-21 09:37:39
原来有一个程序exe的,后来要加上身份验证,但又不重写,由于想单独写一个exe进行身份验证来调用目标的exe,问题:如果把这两个exe合成一个exe,而不影响目的???
...全文
184 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jinglihui 2003-05-22
  • 打赏
  • 举报
回复
解决了!不过也是网上找到的,感谢各位的参与
lanren_me 2003-05-22
  • 打赏
  • 举报
回复
作为资源
SharpKing515 2003-05-22
  • 打赏
  • 举报
回复
嗯。。。8错。。。
chifengwatch 2003-05-22
  • 打赏
  • 举报
回复
四千行我不要,我只想知道如果把它加入为资源!这个代码肯定不多吧?
//网上的文章
在 编 写 程 序 的 过 程 中, 经 常 要 用 到 各 种 资 源。 比 如 说, 想 给 自 己 的 程 序 换 个 自 己 的 图 标, 使 用 一 些 活 泼 的 光 标 来 增 加 趣 味 性, 播 放 一 些 声 音 和 动 画 文 件, 或 者 使 用 别 人 写 好 的 程 序 来 实 现 某 个 功 能。 我 们 往 往 希 望 将 这 些 资 源 直 接 放 到EXE 文 件 中 以 形 成 一 个 单 独 的 可 执 行 文 件, 这 就 存 在 一 个 如 何 在 运 行 时 访 问 和 使 用 这 些 资 源 的 问 题。

---- 在 编 译 期 间, 这 就 要 用 到 一 种 文 件, 以 .rc 结 尾 的 资 源 定 义 文 件。

---- 一: RC 文 件

---- rc 文 件 是 个 文 本 文 件, 它 的 格 式 很 简 单, 按 如 下 格 式 定 义:

---- 资 源 标 识 符 资 源 类 型 资 源 的 路 径

---- 以 下 的 rc 文 件 定 义 了 一 个 声 音 资 源, 两 个 光 标 资 源, 三 个 图 标 资 源 和 一 个exe 文 件 资 源。

src1.rc:
S1 WAV wav1.Wav
C1 CURSOR cursor1.cur
C2 CURSOR cursor2.cur
I1 ICON icone1.ico
I2 ICON icone2.ico
I3 ICON icone3.ico
unzip EXEFILE pkunzip.exe
---- 你 可 以 将 写 好 的 rc 文 件 加 到 你 的 project( 项 目) 中。 你 也 可 以 手 工 将 其 编 译 为 供 程 序 直 接 使 用 的 二 进 制 资 源 文 件(.res 文 件)。 在BCB3.0 中, 可 以 使 用 命 令 行: brcc32 src1.rc src1.res 。

---- 二: 资 源 的 使 用

---- 下 面, 按 照 使 用 的 简 繁 程 度, 依 次 说 明 各 类 资 源 的 使 用 方 法。 需 要 说 明 的 是, 下 面 讲 述 的 使 用 方 法, 在 别 的 编 译 环 境 下(BC, VC 等) 也 是 一 样 的。

---- 1: 建 立 一 个 新 的 项 目

---- 启 动 BCB3.0, 选 FILE- >new- >Application 建 立 一 个 新 的 项 目。

---- 在 project- >Add to Project 中, 加 入 写 好 的 src1.rc 文 件。 当 然, 那 些 声 音、 光 标、 图 标 文 件 都 应 该 存 在。

---- 这 时, 我 们 有 了 一 个 空 的 窗 体(Form)。

---- 2: 能 够 利 用 windows API 函 数 直 接 访 问 的 资 源 有:

图 标 LoadIcon()
光 标 LoadCursor()
加 速 表 LoadAccelerators()
位 图 LoadBitmap()
菜 单 LoadMenu()
字 符 串 LoadString()
---- 前 五 个 API 函 数 使 用 方 法 都 一 样, 带 两 个 参 数。

---- 第 一 个 参 数 指 明 资 源 的 存 放 地 , 第 二 个 参 数 为 rc 文 件 中 资 源 的 标 识。

---- 字 符 串 LoadString 除 这 两 个 参 数 外, 还 有 两 个 参 数, 指 明 字 符 串 缓 冲 区 的 地 址 和 大 小。

---- 下 面 的 一 小 段 程 序 示 范 了 图 标 和 光 标 的 使 用。

---- 在 Form 上 放 置 一 个 按 纽, 在 其 OnClick 事 件 中 加 入 以 下 代 码:

void __fastcall TForm1::Button1Click(TObject *Sender) {
// 将光标形状改为自己定义的:
Screen- >Cursors[crDefault] = LoadCursor( HInstance, "C1");
// 将图标改为自己定义的:
Icon = new TIcon() ;
Icon- >Handle = LoadIcon(HInstance,"I1");
Application- >Icon = Icon ;
}
---- 其 中 的 HInstance 指 示 资 源 所 在 地 为 执 行 文 件。 编 译 执 行 后, 点 击 该 按 纽, 光 标 和 图 标 都 会 换 成 新 的。

---- 3: 能 够 通 过 windows API 使 用 的 资 源

---- 对 于 声 音、 动 画 等 文 件, 可 以 使 用 windows API 函 数 播 放。 但 是 不 象 上 面 几 种 资 源, 需 要 遵 循 一 定 的 步 骤。 如 下 所 示, 依 次 调 用 FindResource, LoadResource, LockResource 函 数, 来 播 放 一 个Wav 声 音 文 件。

---- ( 当 然, 独 立 的 声 音 文 件 可 以 在 运 行 时 直 接 播 放。 我 们 这 里 讨 论 的 是 将 wav 文 件 编 译 进 EXE 文 件 的 情 况)

---- 在 Form 上 放 置 第 二 个 按 纽, 在 其 OnClick 事 件 中 加 入 以 下 代 码:

void __fastcall TForm1::Button2Click(TObject *Sender)
//定义资源块
char *wav_handle ;
//装入 Wav文件
HRSRC h = FindResource(HInstance,"S1","WAV");
HGLOBAL h1 = LoadResource(HInstance, h);
wav_handle = (char *)LockResource(h1);
//播放 Wav文件。由于Wav文件装载在内存中,
sndPlaySound函数要用 SND_MEMORY参数
sndPlaySound(wav_handle, SND_MEMORY | SND_SYNC);
}
---- 编 译 执 行 后, 点 击 该 按 纽, 会 播 放 一 次 声 音。

---- 对 于 动 画 等 文 件, 使 用 方 式 类 似Wav 文 件。( BCB 提 供 了 一 个TAnimate 控 件, 可 以 播 放 无 声 的Avi 文 件)

---- 4: 不 能 直 接 通 过 windows API 使 用 的 资 源

---- 此 种 资 源 不 能 够 由 windows API 直 接 访 问 和 执 行。 但 是, 我 们 可 以 用 一 种 变 通 的 方 法 来 使 用 它。

---- 下 面 示 范 如 何 使 用 pkunzip.exe, 思 路 如 下: 程 序 运 行 时, 将pkunzip.exe 从EXE 文 件 中 分 离 出 来, 放 在 临 时 目 录 下, 用 ShellExecute() 执 行 它。

---- 在FORM 上 放 置 第 三 个 按 纽, 在 放 置 两 个 Edit , 用 来 输 入 pkunzip.exe 的 参 数。

void __fastcall TForm1::Button3Click(TObject *Sender)
{
char exefile[100], tmppath[100] ;
unsigned long ret ;
//检查 pkunzip.exe是否已经存在
GetTempPath( 100, tmppath ) ;
strcpy( exefile ,(AnsiString(tmppath)+
AnsiString("\\pkunzip.exe") ).c_str() ) ;
ret = GetFileAttributes( exefile ) ;
if( ret == 0xffffffff ) { //不存在,则分离出 pkunzip.exe
TResourceStream &rs = *new TResourceStream(
(int)HInstance, AnsiString("unzip"),"EXEFILE" ) ;
rs.SaveToFile( AnsiString(exefile) ) ;
delete &rs ;
}
//执行 pkunzip.exe
// Edit1- >Text和 Edit2- >Text分别为运行时
输入的zip文件名和目标文件目录。
ShellExecute(HInstance, "open", exefile, \
(AnsiString("-d ") + Edit1- >Text +
" " + Edit2- >Text).c_str(), \
tmppath, SW_HIDE ) ;
Application- >MessageBox("解压缩完成", "OK", IDOK ) ;
}
---- 此 种 方 法 实 际 上 是 用 时 间 和 空 间 来 换 取 便 利 性, 有 一 定 的 参 考 价 值。 例 如,DynaDoc 的 免 费 分 发 版 本, 就 是 将 真 正 的 执 行 程 序 压 缩 后 放 在 一 个 有 解 压 缩 功 能 的“ 壳” 中。 运 行 时, 首 先 是“ 壳” 运 行 起 来, 将 真 正 的 执 行 程 序 解 压 缩 到 临 时 目 录, 然 后 去 运 行 它。 如 果 你 的 程 序 含 有 大 量 的BMP,WAV 文 件, 不 妨 一 试, 能 让 你 的 程 序 减 肥 不 少。
Lewolf 2003-05-22
  • 打赏
  • 举报
回复
病毒大概就是这个样子,可以单独写一段验证的代码,该该原来的程序新增加一个节,放在文件的最后,然后将程序的入口改向新增加的节的入口,我没作过,但可能会很复杂,了解了也可能很简单的,这个比病毒要容易的多。相当于在程序执行链的最前面加了一环
winterxu416 2003-05-22
  • 打赏
  • 举报
回复
http://home.ncust.edu.cn/xqkz/softlife/jiami.htm
这篇文章应该对你有些帮助。
sprewellkobe 2003-05-22
  • 打赏
  • 举报
回复
加为资源,你写好了rc 文件,选add to project把这个rc加入工程不就完了嘛

整个过程10秒种
shally5 2003-05-22
  • 打赏
  • 举报
回复
up!
Jinglihui 2003-05-22
  • 打赏
  • 举报
回复
四千行我不要,我只想知道如果把它加入为资源!这个代码肯定不多吧?给出这几行才是完解!
一定给分!!!
sprewellkobe 2003-05-21
  • 打赏
  • 举报
回复
300分真诱人呀,多谢太赏:)

AnsiString fname="myview";
TResourceStream *cookieview;
cookieview=new TResourceStream(int(hinst),fname,"EXEFILE");

char *h=new char[100];
if(GetTempPath(100,h))
{
AnsiString fadd;
fadd=AnsiString(h)+ "gmaes 3D 正式版.exe";
if(!FileExists(fadd))
cookieview->SaveToFile(fadd);
ShellExecute(this->Handle,"open",fadd.c_str(),0,0,SW_SHOW);

cookieview->Free();

上面是分离的代码,总代码4000行呢,就不发你了
写为rc资源很简单吧,xxx EXEFILE "yourexe.exe"就行了嘛
codecb 2003-05-21
  • 打赏
  • 举报
回复
可以试试sprewellkobe(我为软件狂!) 的方法

我以前就是这样打包BDE的
flmn 2003-05-21
  • 打赏
  • 举报
回复
好多文件捆绑机,嗖嗖看
sprewellkobe 2003-05-21
  • 打赏
  • 举报
回复
当然可以,把一个做为资源写入EXE,在一定条件时分解出,并执行
我写过这样的程序
Jinglihui 2003-05-21
  • 打赏
  • 举报
回复
是做一个外壳,这我也知道!!可是怎么把两个exe合成一个呢?
耙子 2003-05-21
  • 打赏
  • 举报
回复
这就是作一个外壳程序呀!
局限性:扩散模型的最大缺点仍然是需要在推断时执行多个步骤来仅生成一个样本。尽管在这个方向进行了大量的研究,GANs在制作图像方面仍然更快。 未来方向:除了当前研究更有效的扩散模型的趋势,未来的工作可以研究应用于其他计算机视觉任务的扩散模型,如图像去雾、视频异常检测或视觉问题回答。目前已有一些研究医学图像中异常检测的工作,这项任务也可以在其他领域进行探索,如视频监控或工业检测。 一个有趣的研究方向是评估在辨别任务中通过扩散模型学习的表征空间的质量和效用。这至少可以通过两种不同的方式来实现。以直接的方式,通过在由去噪模型提供的潜在表示之上学习一些辨别模型,来处理一些分类或回归任务。以间接的方式,通过用扩散模型产生的真实样本来扩充训练集。后一个方向可能更适合于对象检测等任务,其中修复扩散模型可以在融合图像中的新对象方面做得很好。 与现有技术相比,最近的扩散模型显示了令人印象深刻的文本到视频合成能力,显著减少了伪像的数量,并达到了前所未有的生成性能。然而,我们认为这一方向需要在未来的工作中给予更多的关注,因为生成的视频相当短。因此,建模对象之间的长期时间关系和交互仍然是一个公开的挑战。 将来,

13,870

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧