在VB6中用WINDOWS API函数读写INI文件

VB 调用 WindowsAPI 函数GetModuleFileName、 GetProcessImageFileName 和QueryFullProcessImageName获取进程文件路径 Windows编程中,需要获取一个已打开窗口程序的完整路径,以便下次用ShellExecute 函数直接打开。 能实现这一目标的Windows API函数有3个: GetModuleFileName、GetProcessImageFileName 和QueryFullProcessImageName。网上的API函数手册大多只能查到第一个,后面两个只能百度查找调用方法,然而却都讲得不清不楚。... 阅读详情
 

在VB6中用WINDOWS API函数读写INI文件


   WinInet(Win32 Internet functions)提供给程序员一套完整的Internet调用函数,它被包含在一个名为Wininet.dll的动态联接库里。通过它可以轻松地完成对HTTP,FTP以及Gopher的访问。比如下载HTML页面;发送FTP请求从而上传或下载文件还可浏览目录列表,典型的应用是可以通过匿名登录获取文件,还有你更新自己的主页时上传文件;Gopher的菜单系统使你可以获取英特网上的资源。对于这三个协议来说,使用它们的步骤是相同的:建立联接——向服务器提出请求——关闭联系。当然你也可以通过MFC(Microsoft Foundation Class)更为简单地(甚至是傻瓜式地)使用WinInet。因为在MFC中,你可以简单地像访问硬盘一样访问HTTP、FTP以及Gopher服务器(当然不是指可以乱涂乱画啦……);你更可以不去理睬WinSock和TCP/IP;当然你完全有可能自己从底层写起,我想其中一个明显的原因是你认为MFC不够快,放心吧同志,这不是写3D游戏……不过要是你认为它不够灵活的话,那只有自己写了,没什么大不了的;还有就是你可以用现成的类(CHttpFile、CFtpFileFind、CGopherFileFind)控制你的数据,因为这些类把这三个协议抽象到了高层的应用程序编程界面,提供快速并且简单的方法。所以对于用Visual C++的你来说,你至少有两种方法来使用WinInet:直接调用Win32 Internet Functions和MFC。下面就分别用这两种方法通过HTTP下载Web页面,为了更明朗地说明问题,假设网络畅通无阻,所以你会看到下面的代码都没有错误或异常处理。准备好一个单文档界面的自动生成项目,它的视的基类最好是CEditView,这样可以直接把获取的信息显示出来;添加一个工具栏图标,在视中相应消息OnGetHttp()。
  首先通过直接调用Win32 Internet Functions下载http://www.hust.edu.cn下的缺省页面,将要用到的下面几个函数:AfxParseURL(或者它的扩展AfxParseURLEx)、InternetOpen、InternetConnect、HttpOpenRequest、HttpSendRequest、InternetReadFile、InternetCloseHandle。不用多说,你也可以从它们的名字里猜出它们的功能,函数说明请可以参阅MSDN。
  void CWinInetTestView::OnGethttp()
  {
  //使用Win32API获取页面
  CString strURL = ″http://www.hust.edu.cn″;
  HINTERNET hSession;
  HINTERNET hConnect = NULL;
  HINTERNET hURL = NULL;
  try
  {
  CString strServer,strObject;
  INTERNET_PORT nPort;
  DWORD dwServiceType;
  //分析给定的URL, 取回服务信息
  AfxParseURL(strURL,dwServiceType, strServer, strObject, nPort);
  //初始化网络动态联接库,通常用户只需要调用一次InternetOpen,
  //但多次调用InternetOpen是允许的,
  //比如需要对不同的实例提供不同的代理服务器
  hSession=::Internet Open(″WinInet Test″,
  INTER-NET_OPEN-TYPE-PRECONFIG,
  (LPCTSTR)NULL,
  NULL,0);
  //联接服务器
  hConnect=::Internet Connect(h Session,strServer,
  INTER-NET-INVALID-PORT-NUMBER,
  ″″, ″″,
  INTERNET-SERVICE-HTTP,
  0,0) ;
  const char *lpszAcceptTypes[2] = {_T(″Accept: text/* /r″), NULL};
  //获得指定的HTTP句柄
  hURL = ::HttpOpenRequest(hConnect, ″GET″, strObject,
  HTTP_VERSION, NULL, lpszAcceptTypes,INTERNET-FLAG-EXISTING-CONNECT|
  INTER-NET-FLAG-NO_AUTO-REDIRECT|
  INTERNET-FLAG-DONT-CACHE|
  INTERNET-FLAG-RELOAD,0) ;
  //向HTTP服务器发送请求
  ::HttpSendRequest(hURL,NULL,0,0,0);
  CString sText;
  TCHAR sz[1024];
  DWORD dwBytesRead;
  BOOL bOkay = TRUE;
  //循环接收
  while(bOkay)
  {
  bOkay = ::InternetReadFile(hURL,sz,1023,&dwBytesRead);
  if(bOkay && dwBytesRead > 0)
  {
  sz[dwBytesRead-1] = '/0';
  sText = sz;
  sText.Replace(_T(″/n″), _T(″/r/n″));
  GetEditCtrl().ReplaceSel(sText);
  }
  else break;
  } }
  catch(……)
  {
  }
  //关闭相关句柄
  ::InternetCloseHandle(hURL);
  ::InternetCloseHandle(hConnect);
  ::InternetCloseHandle(hSession);
  }
  下面用MFC完成同样的工作,可以看得出,需要写的代码相对减少了,而且更为简单,当你写大程序时,这一点更为明显。需要用到的几个类是:CInternetSession、CHttpConnection、CHttpFile。
  void CWinInet TestView::OnGethttp()
  {
  CInternetSession internetSession(″WinInetTest″, 1, PRE-CONFIG-INTERNET-ACCESS);
  CHttpConnection* m-pHttpServer;
  CHttpFile* m-pHttpFile;
  try
   {
  CString strServer;
  CString strObject;
  INTERNET_PORT nPort;
  DWORD dwServiceType;
  AfxParseURL(strURL, dwServiceType, strServer, strObject, nPort);
  m_pHttpServer =internetSession.GetHttp Connection(strServer, nPort);
  m-pHttpFile=m-pHttpServer→OpenRequest(CHttpConnection::HTTP-VERB_GET,
  strObject, NULL, 1, NULL, NULL, INTER-NET-FLAG-EXISTING-CONNECT|INTERNET-FLAG-NO-AUTO-REDIRECT);
  m_pHttpFile->AddRequestHeaders(_T(″Accept: text/*/r/n″));
  m_pHttpFile->SendRequest();
  CString sText;
  TCHAR sz[1024];
  while (m_pHttpFile->ReadString(sz, 1023))
  {
  sText = sz;
  sText.Replace(_T(″/n″), _T(″/r/n″));
  GetEditCtrl().ReplaceSel(sText);
  } }
  catch(……)
  {
  }
  if (m_pHttpFile != NULL)
  delete m_pHttpFile;
  if (m_pHttpServer != NULL)
  delete m_pHttpServer;
  internetSession.Close();
  }
  需要注意的是,以上两段代码都没有运用多线程技术,当线路不好或页面很大时,你的程序就像是死了一样,没有反应。所以呢,你应当恰当地运用多线程技术,结合相关的状态回调函数,提供给用户一个友好的操作界面。当然,别忘了控制错误异常,这在网络编程中显得尤其重要

Windows10下VB6.0开发——ini文件存储参数信息 前言:在使用VB编写上位机程序时,想要实现一个功能——每次修改Text文本框中的值后,使得关闭程序后该数值能够保存,在下次打开时可以直接使用。本文介绍了INI文件对该功能的支持。 1.INI文件 2.VB操作 ... 阅读详情

相关推荐

VB实现高效读写INI文件技术

应用程序编程接口(API, Application Programming Interface)是为软件程序提供的一组规则、协议、工具和定义,使得开发者能够构建软件应用程序。在Windows操作系统中,API是通过一系列预定义的函数来提供访问系统服务和硬件资源的能力。Windows API是所有Windows应用程序开发者的基础,它允许开发者执行多种任务,如创建窗口、绘制图形、读写文件和注册表、处理输入输出、访问网络等。

weixin_35414260的博客 770

VB6读取INI文件

开发环境:VB6  程式版本更新, 读取INI文件做对比, 确认版本是否最新. 可用VB6的工具下的API检视员来自动生成API调用代码. INI文件内容: [Version] TEST=2017-11-20 00:00:00 调用API. Private Declare Function GetPrivateProfileString Lib "kernel32" Alia

hellozhangyanlin的博客 5300

ASP与VB6 DLL集成读取INI配置文件指南

要实现ASP和VB6 DLL的集成,基本步骤包括:设计DLL接口:明确DLL将要提供的功能和接口。开发VB6 DLL项目:编写代码实现功能并编译成DLL。在ASP中引用DLL:利用ASP的等方法创建和使用DLL对象。测试与部署:确保DLL与ASP的集成在服务器上能够稳定运行。在下一章,我们将详细讨论VB6创建ActiveX DLL项目的具体步骤,为理解其与ASP的集成打下基础。在VB6中,每个类模块都对应一个对象,可以包含属性、方法和事件。

weixin_31961675的博客 1037

VB读写ini文件

VB读写ini文件(1)自从注册表诞生以来ini文件正在逐渐失去其市场占有率,然而基于ini文件的独立性,致使其还没有到达退出历史舞台的地步,很多应用程序的初始化和一些界面参数的设置仍然很愿意从ini文件中读取,为了保证操作需用参数对ini文件的读取的通明性,建议使用一个模块来完成此工作。注:所有操作调用标准的Win API函数来完成。  Dim Ret As Long  Dim Start

唸 尐 憂 的 天 空 7644

VB6.0基于API的INI文件操作类库.rar

VB6.0基于API的INI文件操作类库,示例程序包括了对该类库的测试单元,可进入写入和读取测试,读写测试循环500次,最终结果为准,看上去要比Windows自带的API效率和速度更高,程序窗口上部主要是对INI文件的读写操作演示,包括对节点的操作。

VB6.0官方API文本查看器

VB6.0官方API文本查看器,非常详细,带自动索引功能,自动复制功能。非常好用!

vb如何读写ini文件

VB中有没有读取INI文件的函数,同样功能的API函数是什么? 回答:     VB没有直接读写INI文件的语句,必须借助Windows API来操作INI文件。相应的Windows API函数有两类:一类是GetProfileInt、GetProfileString、WriteProfileInt和WriteProfileString,它们是读写Win.ini中的设置;另一类是GetPr

寒风雨(lanman)的专栏 3879

VB6调用WINAPI寻找窗体并发送消息的程序

该程序使用VB6.0编写,通过调用WINAPI实现了寻找窗体并发送消息的目的。其中有数据库使用、API编写、socket侦听等演示。

VB.NET 操作 INI 文件类

摘要:本文介绍了在VB.NET中操作INI文件的方法,通过封装Windows API函数实现读写功能。INI文件作为一种经典的配置文件格式,具有结构简单、易于手工修改的特点,其基本结构由节(Section)、键(Key)和值(Value)组成。文章详细讲解了如何利用kernel32.dll中的WritePrivateProfileString和GetPrivateProfileString等API函数,并提供了一个完整的VB.NET类实现,包含构造函数、属性设置以及读写方法,支持默认值设置和键值删除等操作。

小猫三两只。 838

WinApiForVb

这个TLB中包括很多常用的API的引用,如果在VB中的程序引用了它,就可以不用申明哪么多API了,省事儿,而且还能提高VB利用API的效率。

VB6.0读写INI文件

VB6.0读写INI文件 VB6.0读写INI文件 VB6.0读写INI文件

VB调用API读写INI文件

INI 文件就是 Windows 中常见的以 .ini 为扩展名的文件,其内部格式和各部分的名称如下:[Section1]Key1=Value1Key2=Value2Key3=Vlaue3[Section2]Key1=Value1Key2=Value5Key4=Value4Key5=......INI 文件中分若干个段 (Section),每个段中有若干个键 (Key) 值 (Value) 对。一个键值对保存一个信息;段则将属性类似的一些键值对组织在一起。同一个段中不能出现两次以上同样的键,但不同的段中可以

jebeljebel的专栏 2534

VB6中一个非常好用的读写Ini文件的模块

NI文件的读取 INI文件是Windows系统最早采用的文本文件格式,在C:驱动器根目录中往往都会存在着一个隐藏的boot.ini文件,它用来定义计算机启动时显示的系统... 一个ini文件读写类的设计和实现 bichengguibichenggui 决定自己写一个ini读写类,希望对大家能有所帮助。

VB如何操作INI文件

在程序中经常要用到设置或者其他少量数据的存盘,以便程序在下一次执行的时候可以使用,比如说保存本次程序执行时窗口的位置、大小、一些用户设置的数据等等,在 Dos 下编程的时候,我们一般自己产生一个文件,由自己把这些数据写到文件中,然后在下一次执行的时候再读出来使用。在 Win32 编程中当然你也可以这样干,但 Windows 已经为我们提供了两种方便的办法,那就是使用注册表或者 ini 文件(Pro

孤夜寒心泪学习随笔 7014

达梦数据库与sharding-jdbc的深度适配实践

本文详细介绍了达梦数据库与sharding-jdbc的深度适配实践,包括驱动与依赖管理、核心适配实现、注册与配置等关键步骤。通过扩展shardingSphere的方式,成功实现了达梦数据库的分库分表功能,并提供了常见问题解决方案和性能优化建议,助力企业级应用高效处理海量数据。

weixin_30300225的博客 623

从零到一:手把手教你用SAM-BA工具完成嵌入式系统烧录

本文详细介绍了如何使用SAM-BA工具完成嵌入式系统烧录的全过程,包括环境搭建、硬件连接、Bootloader烧录以及完整系统镜像的烧录步骤。针对常见问题提供了实用的排查指南,并分享了批量烧录和自定义脚本的高级技巧,帮助开发者高效完成嵌入式系统开发。

weixin_42523792的博客 382

ini和txt文件的读写

1、ini文件的读写      GetPrivateProfileString(); 读取ini文件的指定条目,关键字的字符串。WIN API      WritePrivateProfileString();写ini文件的指定条目,关键字的字符串。WIN API      参数:                其中各参数的意义:    LPCTSTR lpAppName 是

wangzhen0331的专栏 2104

数学之美 | 图论和网络爬虫

文章目录概述图论网络爬虫分析BFSDFSBFS + DFS参考资料 概述 这篇文章主要给大家介绍一下计算机算法中非常重要的一部分——图论,以及它在生活中的应用——网络爬虫。   图论 离散数学是当代数学的一个重要的分支,也是计算机科学的数学基础。它又包括四个分支,而图论便是其中一支,另外三个分别是:数理逻辑、集合论、近代数学。 图论中的图由一些节点和边构成,比如下面这张图 。 在图论中一个很基础...

小小酥梨的博客 3231

用VB.net实现对.ini文件的读写操作的类

Option Explicit On Module INI 'INICont.bas Ver 1.0+a INI '==================================================================== 'GetIntFromINI( sectionName , keyName , defaultValue, i...

weixin_34177064的博客 1568

32、生物信息学中的符号、缩写及相关概念解析

本文详细解析了生物信息学中常用的符号、缩写及相关概念,涵盖概率理论、函数表示、模型结构、图与集合、维度参数、神经网络、隐藏马尔可夫模型、双向架构、语法系统、系统发育树、微阵列分析以及核方法与支持向量机等多个领域。通过表格和mermaid流程图的形式,系统梳理了各类符号的定义与应用场景,并介绍了常见缩写的全称与意义。文章旨在帮助研究人员准确理解生物信息学中的基础术语,提升对基因表达分析、序列建模、机器学习等技术的理解与应用能力。

rrr55的博客 146

【Bug已解决】Codex CLI 报错 apply_patch 失败:无法应用补丁的解决方案

方案适用场景推荐指数统一换行符规范跨平台协作项目的标准配置⭐⭐⭐⭐⭐关闭自动格式化冲突IDE 与 Codex 并发编辑同一文件⭐⭐⭐⭐缩小任务改动范围长期有效的使用习惯优化⭐⭐⭐⭐⭐统一 UTF-8 编码涉及非 UTF-8 遗留文件的项目⭐⭐⭐提示重新读取文件单次失败后的快速恢复方式⭐⭐⭐⭐报错的本质是Codex 生成补丁时读取的文件内容,与实际应用补丁时磁盘上的文件内容出现了不一致,常见诱因包括换行符风格混用、文件被其他工具并发修改、编码问题等。

一键难忘的博客 7302
上一篇: VC++实现拨号上网程序
下一篇: 在VC中修改显示器的分辩率和色彩
gnuljf
博客等级 码龄26年 35粉丝 66原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值