CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  API

如何调用Windows系统信息,API函数如何用?

楼主sdrobin2004(Robin)2005-01-16 18:08:13 在 VB / API 提问

如何调用Windows系统信息,API函数如何用?谢谢! 问题点数:5、回复次数:7Top

1 楼laviewpbt(人一定要靠自己)回复于 2005-01-16 18:17:49 得分 5

Private   Declare   Sub   GetSystemInfo   Lib   "kernel32"   (lpSystemInfo   As   SYSTEM_INFO)  
  Private   Type   SYSTEM_INFO  
          dwOemID   As   Long  
          dwPageSize   As   Long  
          lpMinimumApplicationAddress   As   Long  
          lpMaximumApplicationAddress   As   Long  
          dwActiveProcessorMask   As   Long  
          dwNumberOrfProcessors   As   Long  
          dwProcessorType   As   Long  
          dwAllocationGranularity   As   Long  
          dwReserved   As   Long  
  End   Type  
  Private   Sub   Form_Load()  
          Dim   SInfo   As   SYSTEM_INFO  
          'KPD-Team   1998  
          'URL:   http://www.allapi.net/  
          'KPDTeam@Allapi.net  
          'Set   the   graphical   mode   to   persistent  
          Me.AutoRedraw   =   True  
          'Get   the   system   information  
          GetSystemInfo   SInfo  
          'Print   it   to   the   form  
          Me.Print   "Number   of   procesor:"   +   Str$(SInfo.dwNumberOrfProcessors)  
          Me.Print   "Processor:"   +   Str$(SInfo.dwProcessorType)  
          Me.Print   "Low   memory   address:"   +   Str$(SInfo.lpMinimumApplicationAddress)  
          Me.Print   "High   memory   address:"   +   Str$(SInfo.lpMaximumApplicationAddress)  
  End   Sub  
  Top

2 楼sdrobin2004(Robin)回复于 2005-01-16 18:29:50 得分 0

我是说,如何调用系统信息对话框,就像在Word中,点击关于Microsoft   Word   后,再点击系统信息时,弹出的对话框!Top

3 楼laviewpbt(人一定要靠自己)回复于 2005-01-16 18:44:24 得分 0

Option   Explicit  
   
  '   Reg   Key   Security   Options...  
  Const   READ_CONTROL   =   &H20000  
  Const   KEY_QUERY_VALUE   =   &H1  
  Const   KEY_SET_VALUE   =   &H2  
  Const   KEY_CREATE_SUB_KEY   =   &H4  
  Const   KEY_ENUMERATE_SUB_KEYS   =   &H8  
  Const   KEY_NOTIFY   =   &H10  
  Const   KEY_CREATE_LINK   =   &H20  
  Const   KEY_ALL_ACCESS   =   KEY_QUERY_VALUE   +   KEY_SET_VALUE   +   _  
                                                KEY_CREATE_SUB_KEY   +   KEY_ENUMERATE_SUB_KEYS   +   _  
                                                KEY_NOTIFY   +   KEY_CREATE_LINK   +   READ_CONTROL  
                                             
  '   Reg   Key   ROOT   Types...  
  Const   HKEY_LOCAL_MACHINE   =   &H80000002  
  Const   ERROR_SUCCESS   =   0  
  Const   REG_SZ   =   1                                                   '   Unicode   nul   terminated   string  
  Const   REG_DWORD   =   4                                             '   32-bit   number  
   
  Const   gREGKEYSYSINFOLOC   =   "SOFTWARE\Microsoft\Shared   Tools   Location"  
  Const   gREGVALSYSINFOLOC   =   "MSINFO"  
  Const   gREGKEYSYSINFO   =   "SOFTWARE\Microsoft\Shared   Tools\MSINFO"  
  Const   gREGVALSYSINFO   =   "PATH"  
   
  Private   Declare   Function   RegOpenKeyEx   Lib   "advapi32"   Alias   "RegOpenKeyExA"   (ByVal   hKey   As   Long,   ByVal   lpSubKey   As   String,   ByVal   ulOptions   As   Long,   ByVal   samDesired   As   Long,   ByRef   phkResult   As   Long)   As   Long  
  Private   Declare   Function   RegQueryValueEx   Lib   "advapi32"   Alias   "RegQueryValueExA"   (ByVal   hKey   As   Long,   ByVal   lpValueName   As   String,   ByVal   lpReserved   As   Long,   ByRef   lpType   As   Long,   ByVal   lpData   As   String,   ByRef   lpcbData   As   Long)   As   Long  
  Private   Declare   Function   RegCloseKey   Lib   "advapi32"   (ByVal   hKey   As   Long)   As   Long  
  Private   Declare   Function   ShellExecute   Lib   "shell32.dll"   Alias   "ShellExecuteA"   (ByVal   hwnd   As   Long,   ByVal   lpOperation   As   String,   ByVal   lpFile   As   String,   ByVal   lpParameters   As   String,   ByVal   lpDirectory   As   String,   ByVal   nShowCmd   As   Long)   As   Long  
   
  Public   Sub   StartSysInfo()  
          On   Error   GoTo   SysInfoErr  
       
          Dim   rc   As   Long  
          Dim   SysInfoPath   As   String  
           
          '   Try   To   Get   System   Info   Program   Path\Name   From   Registry...  
          If   GetKeyValue(HKEY_LOCAL_MACHINE,   gREGKEYSYSINFO,   gREGVALSYSINFO,   SysInfoPath)   Then  
          '   Try   To   Get   System   Info   Program   Path   Only   From   Registry...  
          ElseIf   GetKeyValue(HKEY_LOCAL_MACHINE,   gREGKEYSYSINFOLOC,   gREGVALSYSINFOLOC,   SysInfoPath)   Then  
                  '   Validate   Existance   Of   Known   32   Bit   File   Version  
                  If   (Dir(SysInfoPath   &   "\MSINFO32.EXE")   <>   "")   Then  
                          SysInfoPath   =   SysInfoPath   &   "\MSINFO32.EXE"  
                           
                  '   Error   -   File   Can   Not   Be   Found...  
                  Else  
                          GoTo   SysInfoErr  
                  End   If  
          '   Error   -   Registry   Entry   Can   Not   Be   Found...  
          Else  
                  GoTo   SysInfoErr  
          End   If  
           
          Call   Shell(SysInfoPath,   vbNormalFocus)  
           
          Exit   Sub  
  SysInfoErr:  
          MsgBox   "System   Information   Is   Unavailable   At   This   Time",   vbOKOnly  
  End   Sub  
   
   
   
  Public   Function   GetKeyValue(KeyRoot   As   Long,   KeyName   As   String,   SubKeyRef   As   String,   ByRef   KeyVal   As   String)   As   Boolean  
          Dim   i   As   Long                                                                                       '   Loop   Counter  
          Dim   rc   As   Long                                                                                     '   Return   Code  
          Dim   hKey   As   Long                                                                                 '   Handle   To   An   Open   Registry   Key  
          Dim   hDepth   As   Long                                                                             '  
          Dim   KeyValType   As   Long                                                                     '   Data   Type   Of   A   Registry   Key  
          Dim   tmpVal   As   String                                                                         '   Tempory   Storage   For   A   Registry   Key   Value  
          Dim   KeyValSize   As   Long                                                                     '   Size   Of   Registry   Key   Variable  
          '------------------------------------------------------------  
          '   Open   RegKey   Under   KeyRoot   {HKEY_LOCAL_MACHINE...}  
          '------------------------------------------------------------  
          rc   =   RegOpenKeyEx(KeyRoot,   KeyName,   0,   KEY_ALL_ACCESS,   hKey)   '   Open   Registry   Key  
           
          If   (rc   <>   ERROR_SUCCESS)   Then   GoTo   GetKeyError                     '   Handle   Error...  
           
          tmpVal   =   String$(1024,   0)                                                           '   Allocate   Variable   Space  
          KeyValSize   =   1024                                                                               '   Mark   Variable   Size  
           
          '------------------------------------------------------------  
          '   Retrieve   Registry   Key   Value...  
          '------------------------------------------------------------  
          rc   =   RegQueryValueEx(hKey,   SubKeyRef,   0,   _  
                                                    KeyValType,   tmpVal,   KeyValSize)         '   Get/Create   Key   Value  
                                                   
          If   (rc   <>   ERROR_SUCCESS)   Then   GoTo   GetKeyError                     '   Handle   Errors  
           
          If   (Asc(Mid(tmpVal,   KeyValSize,   1))   =   0)   Then                       '   Win95   Adds   Null   Terminated   String...  
                  tmpVal   =   Left(tmpVal,   KeyValSize   -   1)                               '   Null   Found,   Extract   From   String  
          Else                                                                                                         '   WinNT   Does   NOT   Null   Terminate   String...  
                  tmpVal   =   Left(tmpVal,   KeyValSize)                                       '   Null   Not   Found,   Extract   String   Only  
          End   If  
          '------------------------------------------------------------  
          '   Determine   Key   Value   Type   For   Conversion...  
          '------------------------------------------------------------  
          Select   Case   KeyValType                                                                     '   Search   Data   Types...  
          Case   REG_SZ                                                                                           '   String   Registry   Key   Data   Type  
                  KeyVal   =   tmpVal                                                                           '   Copy   String   Value  
          Case   REG_DWORD                                                                                     '   Double   Word   Registry   Key   Data   Type  
                  For   i   =   Len(tmpVal)   To   1   Step   -1                                         '   Convert   Each   Bit  
                          KeyVal   =   KeyVal   +   Hex(Asc(Mid(tmpVal,   i,   1)))       '   Build   Value   Char.   By   Char.  
                  Next  
                  KeyVal   =   Format$("&h"   +   KeyVal)                                           '   Convert   Double   Word   To   String  
          End   Select  
           
          GetKeyValue   =   True                                                                             '   Return   Success  
          rc   =   RegCloseKey(hKey)                                                                     '   Close   Registry   Key  
          Exit   Function                                                                                       '   Exit  
           
  GetKeyError:             '   Cleanup   After   An   Error   Has   Occured...  
          KeyVal   =   ""                                                                                           '   Set   Return   Val   To   Empty   String  
          GetKeyValue   =   False                                                                           '   Return   Failure  
          rc   =   RegCloseKey(hKey)                                                                     '   Close   Registry   Key  
  End   Function  
  Private   Sub   Command1_Click()  
    Call   StartSysInfo  
  End   Sub  
  Top

4 楼sdrobin2004(Robin)回复于 2005-01-16 20:31:14 得分 0

老大,你还是没有清楚我的问题!我是说,如何调用系统信息对话框,就像在Word中,点击关于Microsoft   Word   后,再点击系统信息按钮时,弹出的对话框!  
  就是说,弹出系统信息的对话框!Top

5 楼laviewpbt(人一定要靠自己)回复于 2005-01-16 20:34:32 得分 0

无语!Top

6 楼sdrobin2004(Robin)回复于 2005-01-16 21:35:43 得分 0

你有QQ吗?184998146Top

7 楼sworddx(.:RNPA:. hillin)回复于 2005-01-16 22:00:14 得分 0

贴帖子大师……Top

相关问题

  • 调用系统的函数??
  • 关于Delphi中调用Api函数修改系统时间
  • 请问在c#中怎样调用api系统关机函数??
  • CALLBACK函数何时被系统调用?
  • 调用系统函数有限制吗?
  • 调用api函数出错
  • api函数调用问题
  • 操作系统的运行,是否也全部调用这些公开的API函数。
  • 问:系统调用的原理,一个C函数的系统调用是怎样进入到系统的?
  • C++中调用 什么函数让WINDOWS NT 系统重起

关键词

  • .net
  • 系统
  • 信息
  • tmpval
  • keyvalsize
  • sysinfopath
  • keyval
  • 调用
  • getkeyvalue
  • registry

得分解答快速导航

  • 帖主:sdrobin2004
  • laviewpbt

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo