⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vfp调用系统用户.txt

📁 Vfp 文档 一些经典编程文章 可供初学者学习编程时使用
💻 TXT
字号:
返回文摘目录

在VFP中如何调用系统用户及单位名称
 

下面这段代码用于获得系统用户名及单位名称,在 Windows 3.X、Window 95、Windows 98, Windows NT 4.0 均测试成功。

LOCAL lcBuffer, ; 
lnBufferSize, ; 
lcRetVal, ; 
lnReserved, ; 
lnResult, ; 
lnError, ; 
lnType, ; 
lcKey, ; 
lcUser, ; 
lcCompany 
  
#DEFINE ERROR_SUCCESS 0 
#DEFINE HKEY_LOCAL_MACHINE -2147483646 
#DEFINE KEY_WIN4_MSINFO "Software\Microsoft\Windows\CurrentVersion" 
#DEFINE KEY_QUERY_VALUE 1 
*-- 注册表函数 
DECLARE Integer RegOpenKeyEx IN Win32API ; 
Integer nKey, String @cSubKey, Integer nReserved,; 
Integer nAccessMask, Integer @nResult 
DECLARE Integer RegQueryValueEx IN Win32API ; 
Integer nKey, String cValueName, Integer nReserved,; 
Integer @nType, String @cBuffer, Integer @nBufferSize 
DECLARE Integer RegCloseKey IN Win32API ; 
Integer nKey 
*-- Windows 3.X API 函数 
DECLARE INTEGER GetProfileString IN Win32API AS GetProStr ; 
String cSection, String cKey, String cDefault, ; 
String @cBuffer, Integer nBufferSize 
 

*-- 初始化DLL调用变量 
STORE 0 TO lnReserved, lnResult, lnType 
lcBuffer = SPACE(128) 
lnBufferSize = LEN(lcBuffer) 
 

STORE "" TO lcUser, lcCompany 
 

DO CASE

CASE UPPER(OS()) = "WINDOWS NT" 
*-- 系统为Windows NT 
lnError = RegOpenKeyEx(HKEY_LOCAL_MACHINE, KEY_SHARED_TOOLS_LOCATION, ; 
lnReserved, KEY_QUERY_VALUE, @lnResult) 
 

IF lnError = ERROR_SUCCESS 
lnType = 0 
lcBuffer = SPACE(128) 
lnBufferSize = LEN(lcBuffer) 
lnError = RegQueryValueEx(lnResult, "RegisteredOwner", lnReserved, ; 
@lnType, @lcBuffer, @lnBufferSize) 
 

IF lnError = ERROR_SUCCESS AND lcBuffer <> CHR(0) 
lcUser = LEFT(lcBuffer, lnBufferSize - 1) 
ENDIF 
 

lnType = 0 
lcBuffer = SPACE(128) 
lnBufferSize = LEN(lcBuffer) 
lnError = RegQueryValueEx(lnResult, "RegisteredOrganization", lnReserved, ; 
@lnType, @lcBuffer, @lnBufferSize) 
 

IF lnError = ERROR_SUCCESS AND lcBuffer <> CHR(0) 
lcCompany = LEFT(lcBuffer, lnBufferSize - 1) 
ENDIF 
ENDIF 
 

=RegCloseKey(lnResult) 
 

CASE UPPER(OS()) = "WINDOWS 4" 
*-- 系统为Windows 95 以上版本 
lnError = RegOpenKeyEx(HKEY_LOCAL_MACHINE, KEY_WIN4_MSINFO, ; 
lnReserved, KEY_QUERY_VALUE, @lnResult) 
 

IF lnError = ERROR_SUCCESS 
lnType = 0 
lcBuffer = SPACE(128) 
lnBufferSize = LEN(lcBuffer) 
lnError = RegQueryValueEx(lnResult, "RegisteredOwner", lnReserved, ; 
@lnType, @lcBuffer, @lnBufferSize) 
 

IF lnError = ERROR_SUCCESS AND lcBuffer <> CHR(0) 
lcUser = LEFT(lcBuffer, lnBufferSize - 1) 
ENDIF 
 

lnType = 0 
lcBuffer = SPACE(128) 
lnBufferSize = LEN(lcBuffer) 
lnError = RegQueryValueEx(lnResult, "RegisteredOrganization", lnReserved, ; 
@lnType, @lcBuffer, @lnBufferSize) 
 

IF lnError = ERROR_SUCCESS AND lcBuffer <> CHR(0) 
lcCompany = LEFT(lcBuffer, lnBufferSize - 1) 
ENDIF 
ENDIF 
 

=RegCloseKey(lnResult) 
 

OTHERWISE 
*-- 系统为Windows 3.X 版本 
lcRetVal = GetProStr("MS USER INFO", "DEFNAME", "", @lcBuffer, lnBufferSize) 
lcUser = LEFT(lcBuffer, lcRetVal) 
 

lcRetVal = GetProStr("MS USER INFO", "DEFCOMPANY", "", @lcBuffer, lnBufferSize) 
lcCompany = LEFT(lcBuffer, lcRetVal) 
ENDCASE

If lnError = ERROR_SUCCESS 
=MessageBox("用户:" + lcUser + Chr(13) + "单位:" + lcCompany) 
Else 
=MessageBox("未找到用户及单位。") 
Endif 
 

返回文摘目录

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -