ActiveX控件加载资源

这两天写了一个 ActiveX 控件,实现加载一个 EXE,然后再创建一个 EXE。以前没有写过 ActiveX,所以做个记录当备份吧。
用的 VS2013,WIN7 64 旗舰版,首先创建一个 MFC ActiveX 项目。创建项目网上很多图片演示,就不放图了,创建完成把需要加载的 EXE 添加到资源里面,设定好类型。
// HINSTANCE hInstance = ::AfxGetResourceHandle(); // 获取句柄
// HRSRC res_Port = FindResource(hInstance,MAKEINTRESOURCE(IDR_BIN1), “BIN”); // 寻找资源
// if (!res_Port)
// {
// MessageBox(“未找到”);
// }
// HGLOBAL gld_Port = LoadResource(hInstance, res_Port); // 读取资源
// if (gld_Port == NULL)
// {
// MessageBox(“未加载”);
// }
//
// DWORD dwPortDataLength = SizeofResource(hInstance, res_Port);// 获取资源字节数大小
// if (dwPortDataLength == NULL)
// {
// MessageBox(“获取失败”);
// }
//
// LPVOID pKernel = LockResource(gld_Port); // 查找,加载,锁定资源
//
// if (pKernel == NULL)
// {
// MessageBox(“锁定失败”);
// }
// unsigned char * PortData = new unsigned char[dwPortDataLength]; // 开辟内存
// memcpy(PortData, pKernel, dwPortDataLength); // 拷贝
//
//
// UnlockResource(pKernel);
// FreeResource(gld_Port);//

这样 ,程序就读到内存里面了,下面可以把内存里的东西重新创建文件写出来。

char Path[MAX_PATH] = { "C:\\123.exe" };

    HANDLE FileHandle = CreateFile(Path, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, 0, NULL);

    if (FileHandle == INVALID_HANDLE_VALUE)//创建文件失败
    {
        return;
    }
    DWORD aa = 0;
    if (!WriteFile(FileHandle, PortData, dwPortDataLength, &aa, NULL))
    {
        CloseHandle(FileHandle);//失败后关闭句柄

        return;
    }

    CloseHandle(FileHandle);//成功后关闭句柄

    return;

可以不要上面的资源加载的东西,只要下面的读写文件的东西,然后在写一个配置器,把需要加载到 ActiveX 里面的程序内存,大小配置到 ActiveX 写的文件里面,这样就可以随时替换了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值