关于api的几个小问题

robin2 2000-09-07 10:53:00
小弟在学习vb时遇到几个小问题,希望各位大虾不吝赐教。
1.有的api函数不能用,一用就出错,说是函数未定义,如RegCreateKeyEx,而像RegCreateKey却好使,不知是不是d版的原因。
2.用vb生成了程序后,运行后,为什么在桌面下方的任务栏中没有该程序的图标?(似乎窗口有边框的有,而取消了窗口的边框就没有)
3.在学习API时无意发现了getsetting 函数和savesetting 子程序,不知它们是什么性质的东西,好像不是API,因为不用声明就能用。
4.我想设计帮助文件,但不知是用vb设计好呢?还是用html设计好一些?
提这些小问题真不好意思,在此谢过了。
...全文
206 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
shines77 2000-09-13
  • 打赏
  • 举报
回复
这个嘛,要去看看MSDN(微软自带的帮助,Visual Studio 6.0带有),Csdn的名字就是来自于他,或者找一些网上资料来看。
robin2 2000-09-12
  • 打赏
  • 举报
回复
shines:
你好,对于api我还有一个问题,就是 如何知道一个API函数所用的常量是哪些?

还有对于问题4,用什么去编写 .chm 格式及 .hlp格式的帮助文件呢?是否还需要编译呢?
多谢!!
robin2 2000-09-12
  • 打赏
  • 举报
回复
shines:
谢谢你对小弟的支持。
只是对于1,我的意思是说 如何才能知道声明一个API函数时,先定义的那些常数,如你在上例中
给出的Const HKEY_CURRENT_USER = &H80000001

......
const ....
如何知道RegCreateKeyEx 要用到这些常数,而不是别的常数?
在API BROWSERK中我只能找到该API的声明,而无法知道它要定义哪些常数。

另其它几个问题都已明白和解决,在此表示感谢!!

shines77 2000-09-12
  • 打赏
  • 举报
回复
1. API用VB自带的API文本查看器获得。

2. .chm 和 .hlp 可以用微软的 Help WorkShop 或 Html Help WorkShop 制作。

csdn有下载,请查找。
shines77 2000-09-08
  • 打赏
  • 举报
回复
问题
2: 本来就是这样的,BorderStyle=1,2,3时有图标,如不想显示在任务栏可以用
设置窗体ShowInTaskbar属性为 Flase,编程状态不能修改,
BorderStyle=0,4,5没有图标,如想修改可以用API函数SetWindowLong()
3: GetSetting 和 SaveSetting 是VB的保留语句,不是什么子程序,是用来操作一些简单的注册表功能;
4: 建议你最好用Chm格式,支持Html格式的帮助文挡,当然老的.hlp格式也可以。
shines77 2000-09-07
  • 打赏
  • 举报
回复
RegCreateKeyEx 的具体用法和例子:

Const HKEY_CURRENT_USER = &H80000001
Const REG_OPTION_BACKUP_RESTORE = 4 ' open for backup or restore
Const REG_OPTION_VOLATILE = 1 ' Key is not preserved when system is rebooted
Const REG_OPTION_NON_VOLATILE = 0 ' Key is preserved when system is rebooted
Const STANDARD_RIGHTS_ALL = &H1F0000
Const SYNCHRONIZE = &H100000
Const READ_CONTROL = &H20000
Const STANDARD_RIGHTS_READ = (READ_CONTROL)
Const STANDARD_RIGHTS_WRITE = (READ_CONTROL)
Const KEY_CREATE_LINK = &H20
Const KEY_CREATE_SUB_KEY = &H4
Const KEY_ENUMERATE_SUB_KEYS = &H8
Const KEY_NOTIFY = &H10
Const KEY_QUERY_VALUE = &H1
Const KEY_SET_VALUE = &H2
Const KEY_READ = ((STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) And (Not SYNCHRONIZE))
Const KEY_WRITE = ((STANDARD_RIGHTS_WRITE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY) And (Not SYNCHRONIZE))
Const KEY_EXECUTE = (KEY_READ)
Const KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL Or KEY_QUERY_VALUE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or KEY_CREATE_LINK) And (Not SYNCHRONIZE))
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long
Private Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias "RegCreateKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions As Long, ByVal samDesired As Long, lpSecurityAttributes As Any, phkResult As Long, lpdwDisposition As Long) As Long
Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal samDesired As Long, phkResult As Long) As Long
Private Sub Form_Load()
'KPD-Team 2000
'URL: http://www.allapi.net/
'E-Mail: KPDTeam@Allapi.net
Dim Result As Long
'Check if the specified key exists
RegOpenKeyEx HKEY_CURRENT_USER, "KPD-Team", 0, KEY_ALL_ACCESS, Result
'If the key doesn't exist, we create it
If Result = 0 Then
'Create a new key
RegCreateKeyEx HKEY_CURRENT_USER, "KPD-Team", 0, "REG_DWORD", REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, ByVal 0&, Result, Ret
If Result = 0 Then
MsgBox "Error while creating the Key!!"
Exit Sub
End If
End If
'Delete the key
RegDeleteKey Result, ""
'close the handle
RegCloseKey Result
End Sub
shines77 2000-09-07
  • 打赏
  • 举报
回复
第一个问题:RegCreateKeyEx的声明及用法解释:

【VB声明】
Private Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias "RegCreateKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions As Long, ByVal samDesired As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, phkResult As Long, lpdwDisposition As Long) As Long

【别名】
RegCreateKeyExA

【说明】
在指定项下创建新项的更复杂的方式。在Win32环境中建议使用这个函数。如指定的项已经存在,则函数会打开现有的项

【返回值】
Long,零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码

【备注】
REG_OPTION_VOLATILE不适用于windows 95

【参数表】
hKey ----------- Long,一个打开项的句柄,或者一个标准项名

lpSubKey ------- String,欲创建的新子项的名字

Reserved ------- Long,设为零

lpClass -------- String,项的类名

dwOptions ------ Long,下述常数为零:REG_OPTION_VOLATILE——这个项不正式保存下来,系统重新启动后会消失

samDesired ----- Long,带有前缀KEY_??的一个或多个常数。它们组合起来描述了允许对这个项进行哪些操作

lpSecurityAttributes - SECURITY_ATTRIBUTES,对这个项的安全特性进行描述的一个结构(用ByVal
As Long传递空值)。不适用于windows 95

phkResult ------ Long,指定用于装载新子项句柄的一个变量

lpdwDisposition - Long,用于装载下列某个常数的一个变量:
REG_CREATED_NEW_KEY——新建的一个子项
REG_OPENED_EXISTING_KEY——打开一个现有的项

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧