当前位置: 首页 > news >正文

本地的番禺网站建设如何提高百度搜索排名

本地的番禺网站建设,如何提高百度搜索排名,营销推广策划方案范文,网站桥页也叫当我们开发Windows应用程序时#xff0c;通常会涉及到使用资源#xff08;Resource#xff09;的情况。资源可以包括图标、位图、字符串等#xff0c;它们以二进制形式嵌入到可执行文件中。在某些情况下#xff0c;我们可能需要从可执行文件中提取自定义资源并保存为独立的…当我们开发Windows应用程序时通常会涉及到使用资源Resource的情况。资源可以包括图标、位图、字符串等它们以二进制形式嵌入到可执行文件中。在某些情况下我们可能需要从可执行文件中提取自定义资源并保存为独立的文件。在这篇博客文章中我们将讨论如何使用C和WinAPI实现这个目标。 简介 首先让我们考虑一个场景我们有一个 Windows 应用程序其中包含了一个自定义的二进制资源比如默认的配置文件我们希望将这个资源提取出来并保存为一个独立的文件以用于初始化程序配置项。为了实现这个目标我们可以使用Windows API提供的相关函数来完成对资源的释放工作。 关键函数概述 GetModuleHandle 该函数用于获取指定模块的句柄。模块可以是一个可执行文件例如 .exe 文件或一个动态链接库例如 .dll 文件。该函数返回指定模块的实例句柄以便在后续的操作中使用。 以下是 GetModuleHandle 函数的一般形式 HMODULE GetModuleHandle(LPCTSTR lpModuleName );参数说明 lpModuleName指定要获取句柄的模块的名称。如果为 NULL则返回调用线程的可执行模块句柄。 在许多情况下GetModuleHandle 主要用于获取当前进程的模块句柄以便在后续的操作中使用该句柄。模块句柄通常用于在进程中查找资源、定位函数地址等目的。 FindResource 该函数用于定位并返回指定模块通常是 .exe 或 .dll 文件中的资源。资源可以是诸如位图、图标、对话框模板、字符串等等的数据。 以下是 FindResource 函数的一般形式 HRSRC FindResource(HMODULE hModule,LPCTSTR lpName,LPCTSTR lpType );参数说明 hModule指定包含资源的模块的句柄。如果为 NULL则表示使用当前可执行模块的句柄。lpName指定资源的名称或标识符。可以是字符串或整数标识符。lpType指定资源的类型。通常是一个字符串如 “RT_BITMAP” 表示位图资源。 如果找到则返回指向资源的句柄HRSRC。这个句柄可以用于后续的资源加载和操作函数的第二个参数经常配合MAKEINTRESOURCE一起使用MAKEINTRESOURCE 是一个宏macro用于将整数标识符ID转换为字符串指针。在 Windows 编程中通常用于标识资源的 ID。 #define MAKEINTRESOURCE(i) ((LPCTSTR)((DWORD)((WORD)(i))))这个宏接受一个整数参数 i然后将其转换为字符串指针。在资源标识符上下文中通常将整数标识符转换为字符串是为了在使用相关资源函数时传递正确的参数。 举个例子如果有一个字符串资源的标识符是 IDR_MYSTRING则可以使用 MAKEINTRESOURCE 将其转换为字符串 LPCTSTR pszResourceName MAKEINTRESOURCE(IDR_MYSTRING);在这里pszResourceName 将指向字符串 “IDR_MYSTRING”。 在前面提到的 FindResource 中通常将 MAKEINTRESOURCE(IDR_MYSTRING) 作为 lpName 参数传递给 FindResource。这是因为 FindResource 函数期望资源名称是字符串类型而 IDR_MYSTRING 可能是一个整数标识符。通过使用 MAKEINTRESOURCE则可以将整数标识符转换为字符串以便正确地在资源中查找。 SizeofResource 该函数用于获取指定资源的大小。它返回资源的字节数可以用于确定加载资源所需的内存大小。 以下是 SizeofResource 函数的一般形式 DWORD SizeofResource(HMODULE hModule,HRSRC hResInfo );参数说明 hModule指定包含资源的模块的句柄。如果为 NULL则表示使用当前可执行模块的句柄。hResInfo指定资源的句柄通常由 FindResource 返回。 SizeofResource 返回资源的大小以字节为单位。这个函数在加载资源之前可以用来分配足够的内存空间。 LoadResource 该函数用于加载指定资源的数据。该函数返回一个全局内存块的句柄该内存块包含了资源的实际数据你可以通过 LockResource 函数获取该内存块的指针来访问资源数据。 以下是 LoadResource 函数的一般形式 HGLOBAL LoadResource(HMODULE hModule,HRSRC hResInfo );参数说明 hModule指定包含资源的模块的句柄。如果为 NULL则表示使用当前可执行模块的句柄。hResInfo指定资源的句柄通常由 FindResource 返回。 LoadResource 用于将资源数据加载到全局内存块中并返回该内存块的句柄。在加载资源后可以使用 LockResource 函数获取指向资源数据的指针。 LockResource 用于获取指定资源的数据指针。它接受一个全局内存块的句柄该内存块通常由 LoadResource 函数返回然后返回一个指向资源数据的指针。 以下是 LockResource 函数的一般形式 LPVOID LockResource(HGLOBAL hResData );参数说明 hResData指定资源数据的全局内存块句柄通常由 LoadResource 函数返回。 LockResource 用于锁定指定资源的全局内存块并返回指向资源数据的指针。请注意这个函数实际上并不执行拷贝而是返回指向内存块的指针因此对返回指针的任何修改都会直接影响到内存块本身。 FreeResource 用于释放由 LoadResource 函数加载的资源。这个函数通常用于释放不再需要的资源以防止资源泄漏。 以下是 FreeResource 函数的一般形式 BOOL FreeResource(HGLOBAL hResData );参数说明 hResData指定要释放的全局内存块句柄通常由 LoadResource 函数返回。 FreeResource 用于释放之前由 LoadResource 加载的资源。请注意这个函数通常在资源的生命周期结束时调用以确保释放资源占用的内存。但在实际应用中现代 Windows 应用通常不需要显式调用 FreeResource因为 Windows 会在程序退出时自动释放资源。 在实际的应用程序中FindResource 可以与 LoadResource 和 LockResource 等函数一起使用用于加载和操作资源数据。当数据资源被加载到内存之后则可以直接通过fwrite函数将其直接写出到磁盘中以此来实现释放资源的目的。 代码功能实现 首先新建一个控制台程序以作为本次的测试环境接着准备好我们需要写出的数据这里就准备一个lyshark.ini配置文件在项目中右键选择添加并添加资源此时会弹出如下图所示的提示信息 此时会弹出添加资源菜单通过点击导入按钮并输入资源类型为LYSHARK点击确定保存这个更改如下图所示 此时我们在主程序中引入#include resource.h包含资源头文件并修改FindResource中的特定位置使其指向我们导入的配置文件在释放时同样需要保持fopen(map\\lyshark.ini, wb)配置文件的格式。 这段资源释放的完整代码如下所示 #define _CRT_SECURE_NO_WARNINGS #include Windows.h #include iostream #include WinUser.h #include resource.hBOOL UseCustomResource() {// 定位我们的自定义资源HMODULE hModule GetModuleHandle(NULL);if (hModule NULL){std::cerr 错误获取模块句柄失败。 std::endl;return FALSE;}HRSRC hRsrc FindResource(hModule, MAKEINTRESOURCE(IDR_LYSHARK1), TEXT(LYSHARK));if (hRsrc NULL){std::cerr 错误无法找到资源。 std::endl;return FALSE;}// 获取资源大小DWORD dwSize SizeofResource(hModule, hRsrc);if (dwSize 0){std::cerr 错误无效的资源大小。 std::endl;return FALSE;}// 加载资源HGLOBAL hGlobal LoadResource(hModule, hRsrc);if (hGlobal NULL){std::cerr 错误无法加载资源。 std::endl;return FALSE;}// 锁定资源LPVOID lpVoid LockResource(hGlobal);if (lpVoid NULL){std::cerr 错误无法锁定资源。 std::endl;FreeResource(hGlobal); // 在返回前释放资源return FALSE;}// 如果不存在创建一个“map”目录if (!CreateDirectory(map, NULL) GetLastError() ! ERROR_ALREADY_EXISTS){std::cerr 错误无法创建目录。 std::endl;FreeResource(hGlobal);return FALSE;}// 将资源写入文件FILE* fp fopen(map\\lyshark.ini, wb);if (fp NULL){std::cerr 错误无法创建或打开文件。 std::endl;FreeResource(hGlobal);return FALSE;}fwrite(lpVoid, sizeof(char), dwSize, fp);fclose(fp);// 释放资源FreeResource(hGlobal);return TRUE; }int main(int argc, char* argv[]) {BOOL ref UseCustomResource();std::cout 释放状态: ref std::endl;system(pause);return 0; }以管理员模式运行上述程序并等待此时会释放一个目录并包含一个配置文件如下图所示的输出结果 结语 通过以上的代码实现我们成功地将自定义资源提取并保存为一个独立的文件。这种技术在一些特殊情况下可能会很有用例如需要动态加载或替换资源的情况。希望这篇博客对你理解如何使用 C 和 Windows API 进行资源操作有所帮助。
http://wiki.neutronadmin.com/news/95573/

相关文章:

  • 上海做网站的公司电话上海买二手房做哪个网站好
  • 彩票网站开发制作平台软件wordpress head文件夹
  • 郓城网站建设费用织梦做中英文网站详细步骤
  • 深圳市城乡住房和建设局网站首页建设信息网的网站或平台登陆
  • 百度有哪些网站可免费做软件推广wordpress内存高
  • 青岛网站建设莫道网络wordpress 首页
  • jq网站登录记住密码怎么做宁波商城网站建设
  • 网站同时做竞价和优化可以建行网站用户名是什么
  • 企业营销型网站推广方法昆明做公司官网的公司
  • 网站购买流程动画片是怎么制作出来的
  • 珠海营销营网站建设射击官网
  • 网站开发搭建成都网站建设服务
  • 哪个网站能买到做披萨的芝士正宗wild合成版是哪个网站做的
  • 奖券世界推广网站wordpress edd支付宝
  • 西安自助建站系统别人用我的备案信息做网站
  • 微信支付 网站备案票务网站做酒店推荐的目的
  • 烟台免费做网站dw制作电商网页
  • 网站设计说明范文北京软件开发年薪
  • 做网站域名备案需要多久wordpress 谷歌地图
  • php做视频分享网站成都百度百科推广
  • js网站效果东莞建站网站
  • 鲜花网站建设文档网站缩略图制作
  • 购物网站建设的思路中铁四局建筑公司网站
  • 宁波网站建设制作公司排名安庆网站优化
  • 网站开发在哪个科目核算长春seo结算
  • 做整个网站静态页面多少钱兰州专业网站建设公司哪家好
  • 如何建立网站做微商论坛制作
  • 男女做爰高清免费网站百度怎么投放广告
  • 如何防止网站被注册网站推他网站
  • 开发php网站开发温州在线课堂