说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

求救?????????????

编辑:说三道四文库 发布时间:2017-10-23 11:43
HTML文档下载 WORD文档下载 PDF文档下载



     怎样在VB中学好,并怎样在VB中使用INI文件,还有注册表。

    VB中如何实现注册表的读写 
 
作者: 于爱武  

---- “API”中专门提供了处理注册表的函数,不用说也知道,它们肯定功能强大(因为它们是API),但是它们的难度也是不小的。如果你是一个入门者的话,这大概会令你头痛一阵子。不过VB本身还提供了几个函数,专门用来处理注册表,相对来说它们就简单多了,所以我只对它们做一下说明: 

SaveSetting appname, section, key, value
---- 这句话的作用是将应用程序的信息存入注册表中。其中四个参数都是必要的,其含义分别为:应用程序名,区段,键,值。比如我们要为我们的程序(名为“测试”)的主窗体的位置进行存储,就可以写成: 

SaveSetting “测试”,”main”,”
    top”,frmMain.Top
SaveSetting “测试”,”main”,”
    Left”,frmMain.Left
SaveSetting “测试”,”main”,”
    Width”,frmMain.Width
SaveSetting “测试”,”main”,”
    Height”,frmMain.Height
---- 这样,就把当前的主窗体的位置进行了记录,在下次打开这个窗体的时候,我们就可以在把这些值取出来。那么如何才能把我们所存储的值取出来呢?这就要用到另一个函数:GetSetting,它的语法是: 

GetSetting(appname, section, key[, default])
---- 该函数的各部分的意义均和上面的函数的意义相同,所不同的是多了一个default而少了一个value。这个函数最后返回的结果即value值,而default指的是如果所指定的键不存在时,则以default指定的值为返回结果。如果没指定default,则default的默认值是””,即0长度的字符串。接上例,在程序刚开始的时候,我们应该取出上一次所存储的主窗体的位置,可以写成: 

frmMain.Top = GetSetting
    (“测试”,”main”,”top”)
frmMain.Left = GetSetting
    (“测试”,”main”,”Left”)
frmMain.Height = GetSetting
   (“测试”,”main”,”Height”)
frmMain.Width = GetSetting
    (“测试”,”main”,”Width”)
---- 好了,到此为止,可以暂且告一段落,让我们打开注册表,看一看我们把信息是记录在什么地方了。按照下面的路径打开: HKEY_CURRENT_USER\Software\VB And VBA Program Settings 你会看到你的“测试”就在里边放着。 

---- 当你的应用程序最终被卸载时,你应该考虑(而且你应该这样做)把你写入注册表中的内容清除掉,因为离开了你的应用程序,它们无疑就是一推垃圾而已。要想将它们删掉,我们可以用函数:DeleteSetting,它的语法如下:DeleteSetting appname, [section[, key]] 在几个参数中,只有appname是必须地,其它两项均可选。比如我们要删除窗体的“高”这键,则可以写成:DeleteSetting “测试”,”main”,”Height”如果我们要将”main”这个段整个去掉,则可以写成DeleteSetting “测试”,”main” 如果我们再彻底一些,想将整个应用程序去掉的话,就干脆直接写成: 

DeleteSetting  “测试”
---- 这种方法的不足之处是只能把信息记录在指定的位置,即 

HKEY_CURRENT_USER\Software\VB
    And VBA Program Settings
---- 如果要写入到别的地方,就要借助于API了。 

 
   
 
  
 

    VB修改注册表一特例
 
 

我们知道,在VB中调用Windows的API函数能比较方便的修改系统注目表,然而笔者近来在一次应用中偶然发现这样一个特殊的问题:若在注目表HKEY_LOCAL_MACHINE\Mircrosoft\Windows \CurrentVersion\Setup下有一双字节型串值SetupOnce为"0x7cf70b"现要通过VB把其改为"0xffffffff"(十进制为4294967295)。是不是直接定义长整型变量Updata,并赋值Updata=4294967295,然后调用API函数RegSetValueEx
("HKEY_LOCAL_MACHINE", "Software\Mircrosoft \Windows\CurrentVersion\Setup","SetupOnce",0,4,Updata,4)就能达到目的呢?实际非也!这样操作,将会出错,出错报告为"实时错误6,溢出"。问题出在那里呢?笔者经过思考,发现十六进制0xffffffff化为十进制4294967295共十位数,显然把变量Updata在定义为长整型时存在错误。知道了问题所在,我们把Updata变量重新定义为双精度型,接下来的问题是Updata到底应赋予何值?我们可以采用反推法,即先在注册表中先令SetupOnce为"0xffffffff",在VB中定义变量Updata(double型),调用API中注册表查询库函数RegQueryValueEx("HKEY_LOCAL_MACHINE","Software\Mircrosoft\Windows \CurrentVersion \Setup","SetupOnce",0,4,Updata,4)在VB中一调试,结果出来了,Up!data的值为2.12199579047121E-314(这个数字真有点吓人)。知道了Updata的取值我们就可以用RegSetValueEx函数修改原来
SetupOnce的值了。下面给出以上所述过程的一个例程,希望对您有所启发。
  新建一工程,在此工程声明段声明常量及API库函数:
PrivateDeclareFunction RegCloseKey Lib "advapi32.dll" (ByVal hKey AsLong)As Long
Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey AsString, ByVal ulOptions As Long, ByVal samDesired As Long,phkresult As Long) As Long
Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long,ByVal lpValueNameAs String, ByVal lpReserved As Long,lpType As Long, lpDataAs Any, lpcbData As Long) As Long

'Note that if you declarethe lpData parameter as String, youmust pass it By Value.

Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long,lpDataAs Any, ByVal cbData As Long) As Long

'Note that ifyou declarethe lpData parameter as String, you must pass itBy Value.

Const HKEY_LOCAL_MACHINE = &H80000002 Const REG_DWORD =4 Const ERROR_SUCCESS = 0& Const KEY_ALL_ACCESS = &H3F ConstA = 2.12199579047121E-314 Const reg1 = "software \microsoft\windows \currentversion\setup"Public phkresult As Long

在Form的Click事件中添加以下代码:
Private Sub Form_Click() Dim back As Long Dim Updata As Double back = RegOpenKeyEx(HKEY_LOCAL_MACHINE, reg1, 0&,KEY_ALL_ACCESS,phkresult) back = RegQueryValueEx(phkresult,"SetupOnce", 0,REG_DWORD, Updata, 4)

'如果要用RegQueryValueEx()读出某一值,函数调用前必须以KEY_QUERY_VALUE参数形式打开,实例中以KEY_ALL_ACCESS参数打开,实际上已包含了KEY_QUERY_VALUE。

If back = ERROR_SUCCESS Then If Updata <> A Then Updata = A back = RegSetValueEx (phkresult, "SetupOnce", 0&,REG_DWORD,Updata, 4) If back = ERROR_SUCCESS Then
MsgBox "标记成功!"Else MsgBox "标记不成功!"
Exit Sub
End If
Else MsgBox "要标记的项已是所需" RegCloseKey(phkresult)
Exit Sub
End If
Else Msgbox "注册表中无所需修改的项" End If RegCloseKey(phkresult)
End Sub
其实,以上例程完全可以用做加密技术。国内某个带"霸"字的软件亦采用了类似的加密技术,当然,只是在加密的表现结果上表现而已。 


 
   
 
  
 

    建立与读取.ini文件 
 
 

  '请於form中放3个TextBox,一个CommandBox
Private Declare Function GetPrivateProfileString Lib "kernel32"  _
   Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, _
   ByVal lpKeyName As Any, ByVal lpDefault As String,  _
   ByVal lpReturnedString As String, ByVal nSize As Long, _
   ByVal lpFileName As String) As Long
Private Declare Function WritePrivateProfileString Lib "kernel32"  _
   Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, _
   ByVal lpKeyName As Any, ByVal lpString As Any, _
   ByVal lpFileName As String) As Long

Private Sub Command1_Click()
Dim success As Long
success = WritePrivateProfileString("MyApp", "text1", Text1.Text, "c:\aa.ini")
'叁数一 Section Name
'叁数二 於.ini中的项目
'叁数三 项目的内容
'叁数四 .ini文件的名称
success = WritePrivateProfileString("MyApp", "text2", Text2.Text, "c:\aa.ini")
success = WritePrivateProfileString("MyApp2", "text3", Text3.Text, "c:\aa.ini")
End Sub

Private Sub Form_load()
Dim ret As Long
Dim buff As String
buff = String(255, 0)
ret = GetPrivateProfileString("Myapp", "text1", "text1", buff, 256, "c:\aa.ini")
'若.ini MyApp中无text1,则采用叁数三的值
Text1.Text = buff
buff = String(255, 0)
ret = GetPrivateProfileString("Myapp", "text2", "text2", buff, 256, "c:\aa.ini")
Text2.Text = buff
buff = String(255, 0)
ret = GetPrivateProfileString("Myapp2", "text3", "text3", buff, 256, "c:\aa.ini")
Text3.Text = buff
End Sub
  
 
   
 
  
 
VB获得打印机驱动程序的设定 VB获得当前计算机上的区域设置 VB获得当前用户名 VB获得分区信息并判断是否有CD VB获得某个文件夹下的所有子目录 VB获得驱动器的卷标 VB获得系统中的所有字体列表 VB获得系统中鼠标的键数 获取驱动器信息-VB资料 文章主题: 获取桌面图象 -VB资料 计算两个日期间的工作日-VB资料 监视外部程序的运行情况-VB资料 检测文件是否存在 -VB资料 检测系统驱动器-VB资料 检查电子邮件地址输入的有效性 -VB资料 检查硬盘空间 -VB资料 将数据转换为内存二进制形式字符串(模拟CV?和MK?$两组函数) -VB资料 禁用 Alt-Tab 或 Ctrl-Alt-Del -VB资料 禁止使用 Alt+F4 关闭窗口-VB资料 绝非玩笑:VB7将完全面向对象 拷贝磁盘 -VB资料 控制Ctrl+Del+Alt键-VB资料 快速编辑VB程序技巧 快速查找或替换文本中的字符-VB资料 快速建立目录 -VB资料 快速交换整数 -VB资料 快速注册/注销动态链接库或控件-VB资料 理解面向对象编程 -VB资料 VB利用GetCursorPos 读取滑鼠的座标 利用Visual Basic 关闭Windows9X或者Windows NT VB利用代码启动/关闭中文输入法 在线等!!菜鸟一问:用什么函数使‘空’返回为零,就像foxpro的iif... 如何实现两个form间参数的传递? 一个关于DBCHART的使用问题。 数据机构的一道题!~(队列) 求救高手?active dll的Ftp上传组件的问题?(100) TQuery返回的字段类型信息如何区分numeric还是float? 我感觉VC里最神秘的几块内容(至今也没搞懂) 在这里混了有段日子了 升星 散分!!(请版主别删) 欢迎大家加入我建的QQ群 请问一下各位是如何调用第三方的DLL。例如:华为DLL.清华深资DLL。等等。。。 QRBand能否自动换页的问题。 请问有哪位 有ACCP的的全套资料第一学期第一学年 资料 一个关treeview的问题 sql server有没有办法看一个image类型值是否有无? 嵌入到outlook控件的问题 一个奇怪的问题: 怎么老打不开数据库set db= new notesdatabase("","data.nsf")??? 如何调用DLL啊? JSP怎么样调用sessionbean? 如何在Cell单元格显示数据库中已image类型存放的图片?(急) php有什么好办法把mysql里面枚举型字段的各个项目读出来? easy problem 文件问题 在线等候 北京掌中仙境技术有限公司招聘程序开发人员 请问win2003中如何起用3d? 关于迭代开发模式 主菜单的字体怎么修改? C#中自动生成SQL语句(update,delete)是否并不怎么好呢? 关于在VC中开发数据库使用ORACLE的若干问题?(SQL SERVER 到 ORACLE转换的问题) 如果更新有外键约束的主键呢? 谁有播放*.dat的asp组件啊!~ 这是一个控件源码,为什么只有在运行时,才能显示控件的图形,请指教! 电脑一进系统就待机……sos 浅谈视图(Views) 本人急需自然景物的分形源程序(最好包括山水树),急!可加分 高分求免费电影下载网站,最好是一些提供最新电影的网站 请教axis的开始的安装配置问题,谢谢~ 如何用ASP实现往已经建好的表中添加新的字段? TQuery返回的字段类型信息如何区分numeric还是float? 为什么弹出来的菜单偏离我的点的位置很远? 高手请进!!! 用sqlDataAdapter自动产生的update,delete语句是否最优? 小问题,50分,我的CRichEditCtrl继承类为什么在输入汉字时不触发 WM_CHAR 消息!! 100分,如何将一个类实例存入数据库,并取回? JavaScript问题,请大家帮忙。 急,急,急!如何做一个循环让程序延迟3秒执行? 有意思的问题,请高手指教!(100*x) 如何根据条件来得到DataGrid需要显示的列!!! php运行环境配置 CSDN怎么总出错啊?ft... 有一事不解,进来看看吧,up有分 菜鸟提问:DOM中如何load一个.xml文件 平行四边形ABCD,E、F分别是AB、AD中点,CE、CF分别交BD于H、G,求BH=HG=GD.图 一个令人讨厌的家伙用英语怎么说? 醉里吴音相媚好的醉里是什么意思? 不厌其烦、漫不经心、可怜巴巴,本文主要内容意思 telecommunications superhighway blessing or course是什么意思 醉里吴音相媚好的 相媚好啥意思 与可怜巴巴相近的词语都有什么 a degree course in Applied Thai Traditional Medicine怎么翻啊?请勿机译, 醉里吴音相媚好中的相媚好是什么意思? capstone是什么 有多少中国人或诺贝尔奖提名? 三角形ABC中角A.B.C所对的边分别为a.b.c,已知cosC=-1/4.1求sinC的值 2当a=2,2sinA=sinC时,求b及c的长 东风小学五年级买4只水壶,5把扫帚,共用去150.5元,六年级买同样的水壶4只扫帚8 把,共付出182元,每只水每只水壶和每把扫帚各多少元 不要方程 生男生女决定于夫妇中的丈夫,因为男性能产生x、y两种,女性只产生具有x染色体的一种卵细胞.这句话是对是错额...到底是对的还是错的!我都蒙了! 醉里吴音相媚好的意思是什么? 东风小学5年级买4只水壶,5把扫把共用去150.5元.六年级买同样的水壶4只,扫把8把,共用182元.每只水壶(↑接上面)和每把扫把各多少元? 关于专利权的判断题,专利权人的权利不包括专利权人为发明人,设计人时表明自己发明人,设计人.是对是错?答案给的是该说法正确.但是不太明白.这句话该怎么理解?专利权人是发明人或设计 在△ABC中,角A,B,C成等差数列,求2sinA-sinC的取值范围 我会在一个牌子上写着欢迎你用英语怎么说? 为什么生理盐水可以可减轻硝酸银腐蚀性 在△ABC中,三内角A、B、C成等差数列,且关于x的方程x^2sinA+2xsinB+sinC=0有两相等实根,则角A=?角C=?60°,60°. 怎么美国申请summer college?都需要什么东西?拜托各位啦~! 在HCl气体溶于水后水的体积不变的情况下,如何计算30%盐酸的密度如果是那样的化任何浓度为30%的溶液密度都是一样的了? 吭的两个读音 RMIT summer course我读的是RMIT的会计,我想暑假的时候那么长,不知道能不能修一门或两门课.但听说会计在暑假的时候不会开设主课程,只有选修的.但本人的选修都结束了,很想在暑假修主课.不知 30%盐酸密度是多少? 爷爷冷得吭吭地咳的吭的读音 A summer course为题的做英语作文,十万火急!写一篇自己经历过的暑假课程,要写出暑假课程利与弊,课程的收获.要有自己的建议与感悟!10句话左右. 我用4017做了一个双稳态电路,它会受到220V交流电影响的?我做了这个双稳态电路,不知什么原因?家里的电灯开或关都经常到它的不稳定, “醉里吴音相媚好,白发谁家翁媪? NK细胞为什么能杀伤“异常”细胞,而不杀伤正常细胞? 用IC4017做的指示流水灯12脚要不要接电路. T,B细胞阴性阳性选择的概念及意义 四字词意思 如何用CD4017做一个四分频电路? 我知道效应T(B)细胞是T(B)细胞的进一步.可我想问.T(B)细胞和T(B)淋巴细胞是同一个含义吗?还是在造血干细胞流入胸腺时是T细胞.然后再慢慢成熟为T淋巴细胞 表扬意思的四字词 1、If you don't like what he said,just r______.2、Although they are twins,they behave d_______.3、Two days later,the meat went bad and it produced an unpleasant s__________. 细胞的定义是什么? 已知a^2+b^2=1 b^2+c^2=2 a^2+c^2=2 则ac+bc+ac最小值为 有哪两种意思 《了不起的盖茨比》(The great gatsby )英文精校版 TXT附件即可英文精校就行 什么格式都可以 谢 .4(m+n)^2*(m+n)^3-7(m+n)(m+n)^4+5(m+n)^5= "分外"的两种意思,谁知道 quickshe doesn't come to the party today ,she _____busyA,maybe B,may be C.must D.may a+b+c=13,a*b*c=27,b^2=ac,求a,b,c 结果的两种意思是什么 第30题快! BE QUICK! 徽章的英文是什么 指那打那、指哪打哪两种意思我想知道这两种意思的不同含义,指那打那跟指哪打哪到底有哪些地方是不一样的. quick!What does it feel like( ) hiking ( ) fine weather?A going; in soB to go; in such a C going; on so D to go ;in such(不是“feel like doing sth ”,)You haven't forgotten to pay him,have you?-____,but I'll remember _____ him tomorrow.A yes,payi 发行股票的面值收入应计入哪个会计科目中? have a quick的中文 一道初二英语题,关于反意疑问句的(quick~~)You are never too young to start doing things,( ) ( )? 装“的”可怜巴巴还是装“得”可怜巴巴比较恰当? Be quick!We don't have e ___ time.怎么填? 请问碳化的木头和竹子,在干燥的状态下导电吗? 舟夜书所见--改写成文章把这首诗改写成文章,500字左右,一定要是文章 此句中course怎么理解?是选择or过程or方法还是别的意思?Suitable habitats for gray wolves have greatly diminished in area.In spite of this fact,the most sensible course would be to refrain from reestablishing gray wolves in places whe 竹醋液真的是竹子炭化过程中得到的液体吗?它是不是有多少纯度的?怎样的竹醋液才是好的? 芝加哥农产品期价23日全线上扬香港幸存游客称不能接受菲政府信口开河美称全国600只宠物疑食中国产狗粮而叙利亚政府释放14名女囚 实施三边俘辛格获历史性机会印媒兴奋两国领导人“潘基文呼吁扩大气候融资领域 使投资流香港幸存游客称不能接受 思索如何面对阿基诺重申\"不道歉\" 港幸存游客沙特暗示拒任“非常”是针对美国美研究智能手机遥控空袭无人机空袭成巴美关系绊脚石伊朗绞刑余生囚犯免遭再行刑伦敦唐人街罢市抗议歧视华人韩国网军要员涉嫌干涉选举美国商会认为中国企业在美基础设施投资日本明治奶粉要撤出中国市场民调称8成俄人认为俄腐败程度高 地方奥巴马与默克尔通电话否认窃听其手机安理会呼吁马里政府迅速调查联合国维和中俄企业敲定液化天然气购销大单日本虐童面面观电子信息产业招聘会 123人找到工作用人单位发现金 导致工资标准难以证明错位发展A通过QQ请假也可当证据 但须证明接收光大银行小微个人贷款主要产品重庆:海豚馆饲养员用担架将海豚抬上岸我国最长邮票《长江》前日首发相关新闻> 国内机票27日起涨价被忽视的请假条吃肉难白血病男孩的足球梦:病好了我还想踢球世界清洁日民警义务清洁水源地智能化交通 两大商圈畅通无忧2015年,春晚不办了?银行贷款隐形成本太高偷懒,不只是舒适! 解读天籁如何让驾扫描二维码 听小萝卜头的故事白血病男孩的足球梦:病好了我还想踢球小朋友诚实报出身高 会获赠礼品以示表今日开奖交行世界斯诺克 上海沃德大师赛开杆
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘