当前位置: 首页 > 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://www.yutouwan.com/news/95573/

相关文章:

  • 绵阳做网站优化微信开放平台管理员怎么解除
  • 网站开发小组总结报告昆明网站建设哪家便宜
  • 怀化住建部网站wordpress建站网
  • 做网站用广告赚钱过时了网站关联页面如何做
  • 临沂网站建设费用wordpress 开发文档下载
  • 嘉定网站设计怎么样网站的倒计时怎么做
  • 西宁的网站建设专业瓷砖美缝网站怎么做
  • 深圳做网站有哪些做网站人才
  • 建立网站的软件下载秦皇岛做网站的公司选汉狮
  • 如何建立一个网站并运行珠海 网站设计
  • 济南做网站的高端品牌建筑行业教育培训平台
  • 网站建设论文 网站建设论文费县建设局网站
  • 网站设计网站制作后台管理系统页面模板
  • 一万并发量的视频网站建设17网站一起做网店普宁池尾雅晨
  • 拼团网站开发wordpress是单线程
  • 不会写代码怎么做网站软件开发的三种基本方法
  • 安徽企业网站建设公司专业的外贸网站建设公司价格
  • 湘潭网站建设电话磐石网络新闻危机公关
  • 富连网网站开发辽宁建设工程信息网官网查不良行为
  • 陕西省建设网官方网站网站如何paypal支付
  • 网站用的字体营销型网站的特征
  • 怎么样用ps做网站网络建站东北
  • 青岛即墨网站建设廉洁常德网站
  • 市场营销策略有哪些想做seo哪里有培训的
  • 企业自助建站的网站东莞活动外包
  • 做cra需要关注的网站网上哪里有卖嗅探器
  • 集团高端网站深圳外贸是做什么的
  • 图书网站建设规划书树莓派 wordpress mysql
  • 陕西城乡建设局网站找小网站的关键词
  • 建立网站需要技术吗win10 做网站服务器