c#中有没有像VB那样的“关于”对话框的模板? c#中有没有像VB那样的“关于”对话框的模板? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 谢谢 thinkingforever(努力学习) :再请问,要像win2000系统自带的记事本程序那样,在关于中获得操作系统的版本号、产品使用权归属、windows的可用物理内存,该怎么做?静候回复! 这是用VB写的得到系统信息的函数:你可以参考进行修改!Public Sub StartSysInfo() On Error GoTo SysInfoErr Dim rc As Long Dim SysInfoPath As String ' 试图从注册表中获得系统信息程序的路径及名称... If GetKeyValue(HKEY_LOCAL_MACHINE, gREGKEYSYSINFO, gREGVALSYSINFO, SysInfoPath) Then ' 试图仅从注册表中获得系统信息程序的路径... ElseIf GetKeyValue(HKEY_LOCAL_MACHINE, gREGKEYSYSINFOLOC, gREGVALSYSINFOLOC, SysInfoPath) Then ' 已知32位文件版本的有效位置 If (Dir(SysInfoPath & "\MSINFO32.EXE") <> "") Then SysInfoPath = SysInfoPath & "\MSINFO32.EXE" ' 错误 - 文件不能被找到... Else GoTo SysInfoErr End If ' 错误 - 注册表相应条目不能被找到... Else GoTo SysInfoErr End If Call Shell(SysInfoPath, vbNormalFocus) Exit SubSysInfoErr: MsgBox "此时系统信息不可用", vbOKOnlyEnd Sub 不好意思,忘了加上:' 注册表关键字安全选项...Const READ_CONTROL = &H20000Const KEY_QUERY_VALUE = &H1Const KEY_SET_VALUE = &H2Const KEY_CREATE_SUB_KEY = &H4Const KEY_ENUMERATE_SUB_KEYS = &H8Const KEY_NOTIFY = &H10Const KEY_CREATE_LINK = &H20Const KEY_ALL_ACCESS = KEY_QUERY_VALUE + KEY_SET_VALUE + _ KEY_CREATE_SUB_KEY + KEY_ENUMERATE_SUB_KEYS + _ KEY_NOTIFY + KEY_CREATE_LINK + READ_CONTROL ' 注册表关键字 ROOT 类型...Const HKEY_LOCAL_MACHINE = &H80000002Const ERROR_SUCCESS = 0Const REG_SZ = 1 ' 独立的空的终结字符串Const REG_DWORD = 4 ' 32位数字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 LongPrivate 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 LongPrivate Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As Long) As Long c#写的调用API获取系统消息的例子//声明API函数 [DllImport("kernel32.dll")] public static extern void GetWindowsDirectory(StringBuilder WinDir,int count); [DllImport("kernel32.dll")] public static extern void GetSystemDirectory(StringBuilder SysDir,int count); [DllImport("kernel32.dll")] public static extern void GetSystemInfo(ref CPU_INFO cpuinfo); [DllImport("kernel32.dll")] public static extern void GlobalMemoryStatus(ref MEMORY_INFO meminfo); [DllImport("kernel32.dll")] public static extern void GetSystemTime(ref SYSTEMTIME_INFO stinfo); /***************************************************** * 定义结构体 * *****************************************************/ //定义cpu的结构信息 [StructLayout(LayoutKind.Sequential)] public struct CPU_INFO { public uint dwOemId; public uint dwPageSize; public uint lpMinimumApplicationAdress; public uint dwActiveProcessorMark; public uint dwNumberOfProcessors; public uint dwProcessorType; public uint dwAllocationGranularity; public uint dwProcessorLevel; public uint dwProcessorRevision; } //定义内存的结构信息 [StructLayout(LayoutKind.Sequential)] public struct MEMORY_INFO { public uint dwLength; public uint dwMemoryLoad; public uint dwTotalPhys; public uint dwAvailPhys; public uint dwTotalPageFile; public uint dwAvailPageFile; public uint dwTotalVirtual; public uint dwAvailVirtual; } //定义系统时间的信息结构 [StructLayout(LayoutKind.Sequential)] public struct SYSTEMTIME_INFO { public ushort wYear; public ushort wMonth; public ushort wDayOfWeek; public ushort wDay; public ushort wHour; public ushort wMinute; public ushort wSecond; public ushort wMilliseconds; } //按钮事件 private void GetInfo_Click(object sender, System.EventArgs e) { //调用GetWindowsDirctory和GetSystemDirctory函数分别获取Windows路径和系统路径 const int nChars = 128; StringBuilder Buff = new StringBuilder(nChars); GetWindowsDirectory(Buff,nChars); this.WindowsDirectory.Text = "Windows路径:" + Buff.ToString(); GetSystemDirectory(Buff,nChars); this.SystemDirectory.Text = "系统路径:" + Buff.ToString(); //调用GetSystemInfo函数获取CPU的相关信息 CPU_INFO CpuInfo; CpuInfo = new CPU_INFO(); GetSystemInfo(ref CpuInfo); this.NumberOfProcessors.Text = "本地计算机有" + CpuInfo.dwNumberOfProcessors.ToString() + "个CPU"; this.ProcessorType.Text = "CPU的类型为" + CpuInfo.dwProcessorType.ToString(); this.ProcessorLevel.Text = "CPU的等级为" + CpuInfo.dwProcessorLevel.ToString(); this.OemId.Text = "CPU的OEM ID为" + CpuInfo.dwOemId.ToString(); this.PageSize.Text = "CPU中的页面大小为" + CpuInfo.dwPageSize.ToString(); //调用GlobalMemoryStatus函数获取内存的相关信息 MEMORY_INFO MemInfo; MemInfo =new MEMORY_INFO(); GlobalMemoryStatus(ref MemInfo); this.MemoryLoad.Text = MemInfo.dwMemoryLoad.ToString() + "%的内存正在使用"; this.TotalPhys.Text = "物理内存共有" + MemInfo.dwTotalPhys.ToString() + "字节"; this.AvailPhys.Text = "可使用的物理内存有" + MemInfo.dwAvailPhys.ToString() + "字节"; this.TotalPageFile.Text = "交换文件的总大小为" + MemInfo.dwTotalPageFile.ToString() + "字节"; this.AvailPageFile.Text = "尚可交换文件大小为" +MemInfo.dwAvailPageFile.ToString() + "字节"; this.TotalVirtual.Text = "总虚拟内存有" + MemInfo.dwTotalVirtual.ToString() + "字节"; this.AvailVirtual.Text = "未用虚拟内存有" + MemInfo.dwAvailVirtual.ToString() + "字节"; //调用GetSystemTime函数获取系统时间信息 SYSTEMTIME_INFO StInfo; StInfo = new SYSTEMTIME_INFO(); GetSystemTime(ref StInfo); this.Date.Text = StInfo.wYear.ToString() + "年" + StInfo.wMonth.ToString() + "月" + StInfo.wDay.ToString() + "日"; this.Time.Text = StInfo.wHour.ToString() + "时" + StInfo.wMinute.ToString() + "分" + StInfo.wSecond.ToString() + "秒"; } 多谢 bumm(......) ,还有就是windows的版本号和软件使用者及单位的信息用什么API获取? private void ShowSystemInformation() { RegistryKey rkey = Registry.LocalMachine; rkey = rkey.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion",true); FamilyName.Text = rkey.GetValue("RegisteredOwner").ToString(); Corporation.Text = rkey.GetValue("RegisteredOrganization").ToString(); Edition.Text = "版本 " + rkey.GetValue("CurrentVersion").ToString() + " 内部版本号 " + rkey.GetValue("CurrentBuildNumber").ToString() + ": " + rkey.GetValue("CSDVersion").ToString(); } 如何采集鼠标移动过程中的坐标位置? C# 关于类型转化的问题 C# 截取字符串问题 关于IEnumerable,大家帮我看看 怎样用C#实现视频只可以在线播放,不可以下载? 怎么用代码预设 保存Excel时的名称? 头痛的WinForm的加载和关闭窗体问题(在线给分) 有关于listView控件的问题 在web程序中,如何获取客户端的ip地址? 19寸大小的触摸屏用c#中的什么开发好 我想编写一个C/S下的控件,高手请进! 控件事件问题,哥哥姐姐高手们指点一下,在线等
Public Sub StartSysInfo()
On Error GoTo SysInfoErr
Dim rc As Long
Dim SysInfoPath As String
' 试图从注册表中获得系统信息程序的路径及名称...
If GetKeyValue(HKEY_LOCAL_MACHINE, gREGKEYSYSINFO, gREGVALSYSINFO, SysInfoPath) Then
' 试图仅从注册表中获得系统信息程序的路径...
ElseIf GetKeyValue(HKEY_LOCAL_MACHINE, gREGKEYSYSINFOLOC, gREGVALSYSINFOLOC, SysInfoPath) Then
' 已知32位文件版本的有效位置
If (Dir(SysInfoPath & "\MSINFO32.EXE") <> "") Then
SysInfoPath = SysInfoPath & "\MSINFO32.EXE"
' 错误 - 文件不能被找到...
Else
GoTo SysInfoErr
End If
' 错误 - 注册表相应条目不能被找到...
Else
GoTo SysInfoErr
End If
Call Shell(SysInfoPath, vbNormalFocus)
Exit Sub
SysInfoErr:
MsgBox "此时系统信息不可用", vbOKOnly
End Sub
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
' 注册表关键字 ROOT 类型...
Const HKEY_LOCAL_MACHINE = &H80000002
Const ERROR_SUCCESS = 0
Const REG_SZ = 1 ' 独立的空的终结字符串
Const REG_DWORD = 4 ' 32位数字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
[DllImport("kernel32.dll")]
public static extern void GetWindowsDirectory(StringBuilder WinDir,int count); [DllImport("kernel32.dll")]
public static extern void GetSystemDirectory(StringBuilder SysDir,int count); [DllImport("kernel32.dll")]
public static extern void GetSystemInfo(ref CPU_INFO cpuinfo); [DllImport("kernel32.dll")]
public static extern void GlobalMemoryStatus(ref MEMORY_INFO meminfo); [DllImport("kernel32.dll")]
public static extern void GetSystemTime(ref SYSTEMTIME_INFO stinfo);
/*****************************************************
* 定义结构体 *
*****************************************************/
//定义cpu的结构信息 [StructLayout(LayoutKind.Sequential)]
public struct CPU_INFO
{
public uint dwOemId;
public uint dwPageSize;
public uint lpMinimumApplicationAdress;
public uint dwActiveProcessorMark;
public uint dwNumberOfProcessors;
public uint dwProcessorType;
public uint dwAllocationGranularity;
public uint dwProcessorLevel;
public uint dwProcessorRevision;
} //定义内存的结构信息 [StructLayout(LayoutKind.Sequential)]
public struct MEMORY_INFO
{
public uint dwLength;
public uint dwMemoryLoad;
public uint dwTotalPhys;
public uint dwAvailPhys;
public uint dwTotalPageFile;
public uint dwAvailPageFile;
public uint dwTotalVirtual;
public uint dwAvailVirtual;
} //定义系统时间的信息结构 [StructLayout(LayoutKind.Sequential)]
public struct SYSTEMTIME_INFO
{
public ushort wYear;
public ushort wMonth;
public ushort wDayOfWeek;
public ushort wDay;
public ushort wHour;
public ushort wMinute;
public ushort wSecond;
public ushort wMilliseconds;
}
//按钮事件
private void GetInfo_Click(object sender, System.EventArgs e)
{
//调用GetWindowsDirctory和GetSystemDirctory函数分别获取Windows路径和系统路径
const int nChars = 128;
StringBuilder Buff = new StringBuilder(nChars);
GetWindowsDirectory(Buff,nChars);
this.WindowsDirectory.Text = "Windows路径:" + Buff.ToString();
GetSystemDirectory(Buff,nChars);
this.SystemDirectory.Text = "系统路径:" + Buff.ToString(); //调用GetSystemInfo函数获取CPU的相关信息
CPU_INFO CpuInfo;
CpuInfo = new CPU_INFO();
GetSystemInfo(ref CpuInfo);
this.NumberOfProcessors.Text = "本地计算机有" + CpuInfo.dwNumberOfProcessors.ToString() + "个CPU";
this.ProcessorType.Text = "CPU的类型为" + CpuInfo.dwProcessorType.ToString();
this.ProcessorLevel.Text = "CPU的等级为" + CpuInfo.dwProcessorLevel.ToString();
this.OemId.Text = "CPU的OEM ID为" + CpuInfo.dwOemId.ToString();
this.PageSize.Text = "CPU中的页面大小为" + CpuInfo.dwPageSize.ToString(); //调用GlobalMemoryStatus函数获取内存的相关信息
MEMORY_INFO MemInfo;
MemInfo =new MEMORY_INFO();
GlobalMemoryStatus(ref MemInfo);
this.MemoryLoad.Text = MemInfo.dwMemoryLoad.ToString() + "%的内存正在使用";
this.TotalPhys.Text = "物理内存共有" + MemInfo.dwTotalPhys.ToString() + "字节";
this.AvailPhys.Text = "可使用的物理内存有" + MemInfo.dwAvailPhys.ToString() + "字节";
this.TotalPageFile.Text = "交换文件的总大小为" + MemInfo.dwTotalPageFile.ToString() + "字节";
this.AvailPageFile.Text = "尚可交换文件大小为" +MemInfo.dwAvailPageFile.ToString() + "字节";
this.TotalVirtual.Text = "总虚拟内存有" + MemInfo.dwTotalVirtual.ToString() + "字节";
this.AvailVirtual.Text = "未用虚拟内存有" + MemInfo.dwAvailVirtual.ToString() + "字节"; //调用GetSystemTime函数获取系统时间信息
SYSTEMTIME_INFO StInfo;
StInfo = new SYSTEMTIME_INFO();
GetSystemTime(ref StInfo);
this.Date.Text = StInfo.wYear.ToString() + "年" + StInfo.wMonth.ToString() + "月" + StInfo.wDay.ToString() + "日";
this.Time.Text = StInfo.wHour.ToString() + "时" + StInfo.wMinute.ToString() + "分" + StInfo.wSecond.ToString() + "秒";
}
{
RegistryKey rkey = Registry.LocalMachine;
rkey = rkey.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion",true);
FamilyName.Text = rkey.GetValue("RegisteredOwner").ToString();
Corporation.Text = rkey.GetValue("RegisteredOrganization").ToString();
Edition.Text = "版本 " + rkey.GetValue("CurrentVersion").ToString()
+ " 内部版本号 " + rkey.GetValue("CurrentBuildNumber").ToString()
+ ": " + rkey.GetValue("CSDVersion").ToString(); }