btn用cpu挖矿
『壹』 VC++ MFC如何获取CPU ID及硬盘的序列号
// “获得Intel CPU ID”按钮消息处理函数
void CIntelCPUIDDlg::OnBtnCPUID()
{
unsigned long s1,s2;
unsigned char vendor_id[]="------------";//CPU提供商ID
CString str1,str2,str3;
// 以下为获得CPU ID的汇编语言指令
_asm // 得到CPU提供商信息
{
xor eax,eax // 将eax清0
cpuid // 获取CPUID的指令
mov dword ptr vendor_id,ebx
mov dword ptr vendor_id[+4],edx
mov dword ptr vendor_id[+8],ecx
}
str1.Format("%s",vendor_id);
_asm // 得到CPU ID的高32位
{
mov eax,01h
xor edx,edx
cpuid
mov s2,eax
}
str2.Format("%08X-",s2);
_asm // 得到CPU ID的低64位
{
mov eax,03h
xor ecx,ecx
xor edx,edx
cpuid
mov s1,edx
mov s2,ecx
}
str3.Format("%08X-%08X\n",s1,s2);
str2=str2+str3;
m_editVendor.SetWindowText(str1);
m_editCPUID.SetWindowText(str2);
}
// GetHDSerial.cpp: implementation of the CGetHDSerial class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "GetHDSerial.h"
char m_buffer[256];
WORD m_serial[256];
DWORD m_OldInterruptAddress;
DWORDLONG m_IDTR;
// 等待硬盘空闲
static unsigned int WaitHardDiskIdle()
{
BYTE byTemp;
Waiting:
_asm
{
mov dx, 0x1f7
in al, dx
cmp al, 0x80
jb Endwaiting
jmp Waiting
}
Endwaiting:
_asm
{
mov byTemp, al
}
return byTemp;
}
//中断服务程序
void _declspec( naked )InterruptProcess(void)
{
int byTemp;
int i;
WORD temp;
//保存寄存器值
_asm
{
push eax
push ebx
push ecx
push edx
push esi
}
WaitHardDiskIdle();//等待硬盘空闲状态
_asm
{
mov dx, 0x1f6
mov al, 0xa0
out dx, al
}
byTemp = WaitHardDiskIdle(); //若直接在Ring3级执行等待命令,会进入死循环
if ((byTemp&0x50)!=0x50)
{
_asm // 恢复中断现场并退出中断服务程序
{
pop esi
pop edx
pop ecx
pop ebx
pop eax
iretd
}
}
_asm
{
mov dx, 0x1f6 //命令端口1f6,选择驱动器0
mov al, 0xa0
out dx, al
inc dx
mov al, 0xec
out dx, al //发送读驱动器参数命令
}
byTemp = WaitHardDiskIdle();
if ((byTemp&0x58)!=0x58)
{
_asm // 恢复中断现场并退出中断服务程序
{
pop esi
pop edx
pop ecx
pop ebx
pop eax
iretd
}
}
//读取硬盘控制器的全部信息
for (i=0;i<256;i++)
{
_asm
{
mov dx, 0x1f0
in ax, dx
mov temp, ax
}
m_serial[i] = temp;
}
_asm
{
pop esi
pop edx
pop ecx
pop ebx
pop eax
iretd
}
}
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CGetHDSerial::CGetHDSerial()
{
}
CGetHDSerial::~CGetHDSerial()
{
}
// 读取硬盘序列号函数
char* CGetHDSerial::GetHDSerial()
{
m_buffer[0]='\n';
// 得到当前操作系统版本
OSVERSIONINFO OSVersionInfo;
OSVersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx( &OSVersionInfo);
if (OSVersionInfo.dwPlatformId != VER_PLATFORM_WIN32_NT)
{
// Windows 9x/ME下读取硬盘序列号
WORD m_wWin9xHDSerial[256];
Win9xReadHDSerial(m_wWin9xHDSerial);
strcpy (m_buffer, WORDToChar (m_wWin9xHDSerial, 10, 19));
}
else
{
// Windows NT/2000/XP下读取硬盘序列号
DWORD m_wWinNTHDSerial[256];
// 判断是否有SCSI硬盘
if ( ! WinNTReadIDEHDSerial(m_wWinNTHDSerial))
WinNTReadSCSIHDSerial(m_wWinNTHDSerial);
strcpy (m_buffer, DWORDToChar (m_wWinNTHDSerial, 10, 19));
}
return m_buffer;
}
// Windows9X/ME系统下读取硬盘序列号
void _stdcall CGetHDSerial::Win9xReadHDSerial(WORD * buffer)
{
int i;
for(i=0;i<256;i++)
buffer[i]=0;
_asm
{
push eax
//获取修改的中断的中断描述符(中断门)地址
sidt m_IDTR
mov eax,dword ptr [m_IDTR+02h]
add eax,3*08h+04h
cli
//保存原先的中断入口地址
push ecx
mov ecx,dword ptr [eax]
mov cx,word ptr [eax-04h]
mov dword ptr m_OldInterruptAddress,ecx
pop ecx
//设置修改的中断入口地址为新的中断处理程序入口地址
push ebx
lea ebx,InterruptProcess
mov word ptr [eax-04h],bx
shr ebx,10h
mov word ptr [eax+02h],bx
pop ebx
//执行中断,转到Ring 0(类似CIH病毒原理)
int 3h
//恢复原先的中断入口地址
push ecx
mov ecx,dword ptr m_OldInterruptAddress
mov word ptr [eax-04h],cx
shr ecx,10h
mov word ptr [eax+02h],cx
pop ecx
sti
pop eax
}
for(i=0;i<256;i++)
buffer[i]=m_serial[i];
}
// Windows 9x/ME系统下,将字类型(WORD)的硬盘信息转换为字符类型(char)
char * CGetHDSerial::WORDToChar (WORD diskdata [256], int firstIndex, int lastIndex)
{
static char string [1024];
int index = 0;
int position = 0;
// 按照高字节在前,低字节在后的顺序将字数组diskdata 中内容存入到字符串string中
for (index = firstIndex; index <= lastIndex; index++)
{
// 存入字中的高字节
string [position] = (char) (diskdata [index] / 256);
position++;
// 存入字中的低字节
string [position] = (char) (diskdata [index] % 256);
position++;
}
// 添加字符串结束标志
string [position] = '\0';
// 删除字符串中空格
for (index = position - 1; index > 0 && ' ' == string [index]; index--)
string [index] = '\0';
return string;
}
// Windows NT/2000/XP系统下,将双字类型(DWORD)的硬盘信息转换为字符类型(char)
char* CGetHDSerial::DWORDToChar (DWORD diskdata [256], int firstIndex, int lastIndex)
{
static char string [1024];
int index = 0;
int position = 0;
// 按照高字节在前,低字节在后的顺序将双字中的低字存入到字符串string中
for (index = firstIndex; index <= lastIndex; index++)
{
// 存入低字中的高字节
string [position] = (char) (diskdata [index] / 256);
position++;
// 存入低字中的低字节
string [position] = (char) (diskdata [index] % 256);
position++;
}
// 添加字符串结束标志
string [position] = '\0';
// 删除字符串中空格
for (index = position - 1; index > 0 && ' ' == string [index]; index--)
string [index] = '\0';
return string;
}
// Windows NT/2000/XP下读取IDE硬盘序列号
BOOL CGetHDSerial::WinNTReadIDEHDSerial(DWORD * buffer)
{
BYTE IdOutCmd [sizeof (SENDCMDOUTPARAMS) + IDENTIFY_BUFFER_SIZE - 1];
BOOL bFlag = FALSE;
int drive = 0;
char driveName [256];
HANDLE hPhysicalDriveIOCTL = 0;
sprintf (driveName, "\\\\.\\PhysicalDrive%d", drive);
// Windows NT/2000/XP下创建文件需要管理员权限
hPhysicalDriveIOCTL = CreateFile (driveName,
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
OPEN_EXISTING, 0, NULL);
if (hPhysicalDriveIOCTL != INVALID_HANDLE_VALUE)
{
GETVERSIONOUTPARAMS VersionParams;
DWORD cbBytesReturned = 0;
// 得到驱动器的IO控制器版本
memset ((void*) &VersionParams, 0, sizeof(VersionParams));
if(DeviceIoControl (hPhysicalDriveIOCTL, IOCTL_GET_VERSION,
NULL, 0, &VersionParams,
sizeof(VersionParams),
&cbBytesReturned, NULL) )
{
if (VersionParams.bIDEDeviceMap > 0)
{
BYTE bIDCmd = 0; // IDE或者ATAPI识别命令
SENDCMDINPARAMS scip;
// 如果驱动器是光驱,采用命令IDE_ATAPI_IDENTIFY, command,
// 否则采用命令IDE_ATA_IDENTIFY读取驱动器信息
bIDCmd = (VersionParams.bIDEDeviceMap >> drive & 0x10)?
IDE_ATAPI_IDENTIFY : IDE_ATA_IDENTIFY;
memset (&scip, 0, sizeof(scip));
memset (IdOutCmd, 0, sizeof(IdOutCmd));
// 获取驱动器信息
if (WinNTGetIDEHDInfo (hPhysicalDriveIOCTL,
&scip,
(PSENDCMDOUTPARAMS)&IdOutCmd,
(BYTE) bIDCmd,
(BYTE) drive,
&cbBytesReturned))
{
int m = 0;
USHORT *pIdSector = (USHORT *)
((PSENDCMDOUTPARAMS) IdOutCmd) -> bBuffer;
for (m = 0; m < 256; m++)
buffer[m] = pIdSector [m];
bFlag = TRUE; // 读取硬盘信息成功
}
}
}
CloseHandle (hPhysicalDriveIOCTL); // 关闭句柄
}
return bFlag;
}
// WindowsNT/2000/XP系统下读取SCSI硬盘序列号
BOOL CGetHDSerial::WinNTReadSCSIHDSerial (DWORD * buffer)
{
buffer[0]='\n';
int controller = 0;
HANDLE hScsiDriveIOCTL = 0;
char driveName [256];
sprintf (driveName, "\\\\.\\Scsi%d:", controller);
// Windows NT/2000/XP下任何权限都可以进行
hScsiDriveIOCTL = CreateFile (driveName,
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
OPEN_EXISTING, 0, NULL);
if (hScsiDriveIOCTL != INVALID_HANDLE_VALUE)
{
int drive = 0;
DWORD mmy;
for (drive = 0; drive < 2; drive++)
{
char buffer [sizeof (SRB_IO_CONTROL) + SENDIDLENGTH];
SRB_IO_CONTROL *p = (SRB_IO_CONTROL *) buffer;
SENDCMDINPARAMS *pin =
(SENDCMDINPARAMS *) (buffer + sizeof (SRB_IO_CONTROL));
// 准备参数
memset (buffer, 0, sizeof (buffer));
p -> HeaderLength = sizeof (SRB_IO_CONTROL);
p -> Timeout = 10000;
p -> Length = SENDIDLENGTH;
p -> ControlCode = IOCTL_SCSI_MINIPORT_IDENTIFY;
strncpy ((char *) p -> Signature, "SCSIDISK", 8);
pin -> irDriveRegs.bCommandReg = IDE_ATA_IDENTIFY;
pin -> bDriveNumber = drive;
// 得到SCSI硬盘信息
if (DeviceIoControl (hScsiDriveIOCTL, IOCTL_SCSI_MINIPORT,
buffer,
sizeof (SRB_IO_CONTROL) +
sizeof (SENDCMDINPARAMS) - 1,
buffer,
sizeof (SRB_IO_CONTROL) + SENDIDLENGTH,
&mmy, NULL))
{
SENDCMDOUTPARAMS *pOut =
(SENDCMDOUTPARAMS *) (buffer + sizeof (SRB_IO_CONTROL));
IDSECTOR *pId = (IDSECTOR *) (pOut -> bBuffer);
if (pId -> sModelNumber [0])
{
int n = 0;
USHORT *pIdSector = (USHORT *) pId;
for (n = 0; n < 256; n++)
buffer[n] =pIdSector [n];
return TRUE; // 读取成功
}
}
}
CloseHandle (hScsiDriveIOCTL); // 关闭句柄
}
return FALSE; // 读取失败
}
// Windows NT/2000/XP下读取IDE设备信息
BOOL CGetHDSerial::WinNTGetIDEHDInfo (HANDLE hPhysicalDriveIOCTL, PSENDCMDINPARAMS pSCIP,
PSENDCMDOUTPARAMS pSCOP, BYTE bIDCmd, BYTE bDriveNum,
PDWORD lpcbBytesReturned)
{
// 为读取设备信息准备参数
pSCIP -> cBufferSize = IDENTIFY_BUFFER_SIZE;
pSCIP -> irDriveRegs.bFeaturesReg = 0;
pSCIP -> irDriveRegs.bSectorCountReg = 1;
pSCIP -> irDriveRegs.bSectorNumberReg = 1;
pSCIP -> irDriveRegs.bCylLowReg = 0;
pSCIP -> irDriveRegs.bCylHighReg = 0;
// 计算驱动器位置
pSCIP -> irDriveRegs.bDriveHeadReg = 0xA0 | ((bDriveNum & 1) << 4);
// 设置读取命令
pSCIP -> irDriveRegs.bCommandReg = bIDCmd;
pSCIP -> bDriveNumber = bDriveNum;
pSCIP -> cBufferSize = IDENTIFY_BUFFER_SIZE;
// 读取驱动器信息
return ( DeviceIoControl (hPhysicalDriveIOCTL, IOCTL_GET_DRIVE_INFO,
(LPVOID) pSCIP,
sizeof(SENDCMDINPARAMS) - 1,
(LPVOID) pSCOP,
sizeof(SENDCMDOUTPARAMS) + IDENTIFY_BUFFER_SIZE - 1,
lpcbBytesReturned, NULL) );
}
『贰』 请高手指点利用注册表优化XP系统
1、加快开机及关机速度
在[开始]-->[运行]-->键入[Regedit]-->[HKEY_CURRENT_USER]-->[Control Panel]-->[Desktop],将字符串值[HungAppTimeout]的数值数据更改为[200],将字符串值[WaitToKillAppTimeout]的数值数据更改为1000.另外在[HKEY_LOCAL_MACHINE]-->[System]-->[CurrentControlSet]-->[Control],将字符串值[HungAppTimeout]的数值数据更改为[200],将字符串值[WaitToKillServiceTimeout]的数值数据更改1000.
2、自动关闭停止响应程序
在[开始]-->[运行]-->键入[Regedit]-->[HKEY_CURRENT_USER]-->[Control Panel]-->[Desktop],将字符串值[AutoEndTasks]的数值数据更改为1,重新启动即可。
3、清除内存内被不使用的DLL文件
在[开始]-->[运行]-->键入[Regedit]-->[HKKEY_LOCAL_MACHINE]-->[SOFTWARE]-->[Microsoft]-->[Windows]-->[CurrentVersion],在[Explorer]增加一个项[AlwaysUnloadDLL],默认值设为1。注:如由默认值设定为[0]则代表停用此功能。
4、加快宽带接入速度
(1)家用版本:在[开始]-->[运行]-->键入[regedit]-->在[HKEY_LOCAL_MACHINE]-->[SOFTWARE]-->[Policies]-->[Microsoft] -->[Windows],增加一个名为[Psched]的项,在[Psched]右面窗口增加一个Dword值[NonBestEffortLimit]数值数据为0。
(2)商业版本:在[开始]-->[运行]-->键入[gpedit.msc],打开本地计算机策略,在左边窗口中选取[计算机配置]-->[管理模板]-->[网络]-->[QoS数据包调度程序],在右边的窗口中双击"限制可保留的带宽",选择"已启用"并将"带宽限制(%)"设为0应用-->确定,重启动即可。
5、加快菜单显示速度
在[开始]-->[运行]-->键入[Regedit]-->[HKEY_CURRENT_USER]-->[Control Panel]-->[Desktop],将字符串值[MenuShowDelay]的数值数据更改为[0],调整后如觉得菜单显示速度太快而不适应者可将[MenuShowDelay]的数值数据更改为[200],重新启动即可。
6、加快自动刷新率
在[开始]-->[运行]-->键入[Regedit]-->[HKEY_LOCAL_MACHINE]-->[System]-->[CurrentControlSet]-->[Control]-->[Update],将Dword[UpdateMode]的数值数据更改为[0],重新启动即可.
7、加快预读能力改善开机速度
Windows XP预读设定可提高系统速度,加快开机速度。按下修改可进一步善用CPU的效率:在[开始]-->[运行]-->键入[Regedit]-->[HKEY_LOCAL_MACHINE]-->[SYSTEM]-->[CurrentControlSet]-->[Control]-->[SessionManager]-->[MemoryManagement],在[PrefetchParameters]右边窗口,将[EnablePrefetcher]的数值数据如下更改,如使用PIII 800MHz CPU以上的建议将数值数据更改为4或5,否则建议保留数值数据为默认值即3。
8、利用CPU的L2 Cache加快整体效能
在[开始]-->[运行]-->键入[Regedit]-->[HKEY_LOCAL_MACHINE]-->[SYSTEM]-->[CurrentControlSet]-->[Control]-->[SessionManager],在[MemoryManagement]的右边窗口,将[SecondLevelDataCache]的数值数据更改为与CPU L2 Cache相同的十进制数值:例如:P4 1.6G A的L2 Cache为512Kb,数值数据更改为十进制数值512。
9、在启动计算机时运行Defrag程序
在[开始]-->[运行]-->键入[Regedit]-->[HKEY_LOCAL_MACHINE]-->[SOFTWARE]-->[Microsoft]-->[Dfrg]-->[BootOptimizeFunction ],将字符串值[Enable]设定为:Y等于开启而设定为N等于关闭。
10、关机时自动关闭停止响应程序
在[开始]-->[运行]-->键入[Regedit]-->[HKEY_USERS]-->[.DEFAULT]-->[Control Panel],然后在[Desktop]右面窗口将[AutoEndTasks]的数值数据改为1,注销或重新启动。
11、在不同的内存空间中运行程序
找到HKEY_CURRENT_子键,把MemCheckBoxInRunDlg设置成1,“开始”菜单的“运行对话框”会增加一个“在独立的内存空间中运行”选项。
12、禁止修改用户文件夹
找到HKEY_CURRENT_。如果要锁定“图片收藏”、“我的文档”、“收藏夹”、“我的音乐”这些用户文件夹的物理位置,分别把下面这些键设置成1:DisableMyPicturesDirChange,DisablePersonalDirChange,DisableFavoritesDirChange,DisableMyMusicDirChange
13、显示映射网络驱动器的按钮
找到HKEY_CURRENT_子键,把MapNetDrvBtn设置成1。映射网络驱动器的按钮将出现在Windows资源管理器和“我的电脑”的工具条上。
14、减小浏览局域网的延迟时间
和Windows 2000一样,XP在浏览局域网时也存在烦人的延迟问题,但介绍这个问题的资料却很难找到。如果你浏览一台Win 9x的机器,例如,在网上邻居的地址栏输入“\computername”,XP的机器会在它正在连接的机器上检查“任务计划”。这种搜索过程可能造成多达30秒的延迟。如果你直接打开某个共享资源,例如在网上邻居的地址栏输入“\computernameshare”,就不会有这个延迟过程。要想避免XP搜索“任务计划”的操作,提高浏览网络的速度,你可以删除HKEY_LOCAL_eSpace{D6277990-4C6A-11CF-8D87-00AA0060F5BF}子键。该键的类型是REG_SZ。
15、XP中让程序开机即运行的新方法
点击“开始”菜单中的“运行”,在打开的“运行”对话框中输入“Regedit”,打开注册表编辑器。顺次展开注册表到HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows下,在这里新建一个字符串值,方法是右击主键“Windows”,在弹出的菜单中选择“新建”→“串值”,把该字符串值命名为“load”。然后,双击“load”,在弹出的窗口中将它的键值改为你想开机就自动运行的程序路径。要注意的是应该使用文件的短文件名,即“C:\Program Files”应该写为“C:\Progra~1”。
16、屏蔽系统中的热键
点击“开始”→“运行”,输入Regedit,打开注册表编辑器。然后依次打开到HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer,新建一个双字节值,键名为“NoWindows Keys”,键值为“1”,这样就可以禁止用户利用系统热键来执行一些禁用的命令。如果要恢复,只要将键值设为0或是将此键删除即可。
17、关闭不用的共享
安全问题一直为大家所关注,为了自己的系统安全能够有保证,某些不必要的共享还是应该关闭的。用记事本编辑如下内容的注册表文件,保存为任意名字的.Reg文件,使用时双击即可关闭那些不必要的共享:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters]
"AutoShareServer"=dword:00000000
"AutoSharewks"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa]
"restrictanonymous"=dword:00000001
18、修改服务名称和解释
在注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services下的次级主键就是各个服务,选中任何一个次级主键,在右边可以看到DisplayName和Description两个字符串,DisplayName就是在“管理工具→服务”里面显示的名字,Description就是对应服务的描述。二者可以任意修改,但是次级主键名和其他的不能乱动。
19、取消磁盘空间不够警告提示
Windows XP会自动监控磁盘空间剩余量,一旦磁盘空间不足的话,会提示你并挂起系统还原功能。如果要取消的话,就打开注册表编辑器,找到HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer,新建一个Dword值NoLowDiskSpaceChecks,然后修改为1即可。
20、自动关闭停止响应的程序
在Windows XP操作系统中,我们可以通过修改注册表,使Windows XP诊测到某个应用程序已经停止响应时就自动关闭它,这样就不需要手工干预了。想要实现这个功能,请点击“开始”→“运行”输入RegEdit,打开注册表编辑器,依次展示HKEY_CURRENT_USER\Control Panel\Desktop\Auto End Tasks,将其键值改为1即可。
21、让“我的电脑”和“我的文档”“乾坤倒挂”
Win2000以下版本的视窗操作系统的“我的电脑”的图表都是放在“我的文档”之上的,到了Win2000及其以后操作系统则正好相反。在Windows XP中,我们可以利用修改注册表来把“我的电脑”图标放在“我的文档”之上,具体操作步骤如下:在注册表中找到HKEY_CLASSES_ROOT\CLSID\{450D8FBA-AD25-11D0-98A8-0800361B1103},然后新建Dword值“SortOrderIndex”,并修改其键值为“54”(16进制)。如果要把“我的文档”放在首位的话,只需要修改“SortOrderIndex”的键值为48(16进制)即可。
22、每次启动时保持桌面设置不变
我们可以通过修改注册表来保护我们的桌面设置,无论做了什么样的修改,只要重新启动之后桌面就会恢复原样。步骤如下:打开注册表编辑器,找到HKEY_CURRENT_USERS\Software\Microsoft\Windows\CurrentVersion\Polices\Explorer子键分支,在它的下面找到NoSaveSettings,其类型为REG_SZ,将其键值改为“0”,或者直接删除该键值项,重新启动系统使设置生效。
23、禁止IE下载文件
在有些公用电脑上需要禁止下载文件功能,虽然某些管理软件可以做到这一点,但安装调试这类软件实在是太麻烦了。其实在注册表中稍作修改就可以满足大家的要求了。打开注册表编辑器,找到HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3,然后在右边找到1803这个DWORD值,将其键值修改为3即可。重新启动IE看看还能不能够下载的?如果要取消限制的话,只需要还原DWORD值为0即可。
24、让IE支持多线程下载
一般情况下,大家都使用多线程下载软件如Flashget等下载文件,其实IE也可以支持多线程下载的,只是微软将这个功能给藏了起来。我们把它给挖出来就可以使用了。打开注册表编辑器,在注册表HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings下新建双字节值项“MaxConnectionsPerServer”,它决定了最大同步下载的连线数目,一般设定为5~8个连线数目比较好。另外,对于HTTP 1.0服务器,可以加入名为“MaxConnectionsPer1_0Server”的双字节值项,它也是用来设置最大同步下载的数目,也可以设定为5~8。
25、让WINDOWS XP自动登陆
打开:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon,在右边的窗口中的新建字符串"AutoAdminlogon",并把他们的键值为"1",并且把“DefaultUserName”的值设置为用户名,并且另外新建一个字符串值“DefaultPassword”,并设其值为用户的密码。
『叁』 用JAVA编一个小游戏或者其他程序
import java.util.Random;
import java.util.Scanner;
public class Game {
private static int win=0;
private static int fail=0;
private static int pi=0;
private static void check(int cpu,int pe){
int t=0;
if(pe-cpu==2) t= -1;
else if(pe-cpu==-2) t= 1;
else t=pe-cpu;
if(t>0) {System.out.println("你赢了!");win++;}
else if(t==0) {System.out.println("咱们平了!");pi++;}
else {System.out.println("你输了!");fail++;}
}
public static void main(String[] args) {
String input="";
String cpuStr="";
Random rand=new Random();
int cpu=0;
int pe=0;
while(true){
System.out.println("*************************小游戏一个 输e/E可以退出*****************");
System.out.println("请选择你要出什么?F--剪刀(forfex),S--石头(stone),C--布(cloth)");
Scanner scan=new Scanner(System.in);
input=scan.nextLine();
cpu=rand.nextInt(3);
if(cpu==0)cpuStr="剪刀";
else if(cpu==1)cpuStr="石头";
else cpuStr="布";
if(input.equals("F")||input.equals("f")){
pe=0;
System.out.println("你出的是,剪刀");
System.out.println("我出"+cpuStr);
check(cpu,pe);
}else if(input.equals("S")||input.equals("s")){
pe=1;
System.out.println("你出的是,石头");
System.out.println("我出"+cpuStr);
check(cpu,pe);
}else if(input.equals("C")||input.equals("c")){
pe=2;
System.out.println("你出的是,布");
System.out.println("我出"+cpuStr);
check(cpu,pe);
}else if(input.equals("E")||input.equals("e")){
System.out.println("结束游戏。。");
System.out.println("结果统计:");
System.out.println("胜:"+win+"局");
System.out.println("负:"+fail+"局");
System.out.println("平:"+pi+"局");
System.exit(0);
}
}
}
}
以上回答参考:
http://..com/question/39899654.html
『肆』 用VB提交网页数据
DoEvents 转让控制权,就是减少cpu使用率,50%应该是系统默认的吧,要想更高的占有可以试一下递归或者提高程序优先级,具体我也不会,补充问题,简单的乘除法,自己算。
『伍』 C#获取CPU占用率
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//使用额外的线程获取CPU状态值
Thread newThread;
delegate void SetLabelTextDele(string text);
private void ThreadForCpuView(object obj)
{
PerformanceCounter pcCpuLoad = (PerformanceCounter)obj;
SetLabelTextDele setTextDele = new SetLabelTextDele(SetLabelText);
while (true)
{
Thread.Sleep(1000);
float cpuLoad = pcCpuLoad.NextValue();
//label2.Text = cpuLoad + "%";
label2.Invoke(setTextDele, new object[] { cpuLoad + "%" });
}
}
private void SetLabelText(string text)
{
label2.Text = text;
}
private void Btn_Start_Click(object sender, EventArgs e)
{
PerformanceCounter pcCpuLoad = new PerformanceCounter("Processor", "% Processor Time", "_Total");
pcCpuLoad.NextValue();
ParameterizedThreadStart p = new ParameterizedThreadStart(ThreadForCpuView);
newThread = new Thread(ThreadForCpuView);
newThread.Start(pcCpuLoad);
}
private void Btn_Abort_Click(object sender, EventArgs e)
{
newThread.Abort();
}
}
『陆』 关于腾迅QQ占用CPU很高的问题
建议去查BTN+Service.exe和两个RUNDLL32所运行的DLL
『柒』 在android中进程的级别有哪些
进程的优先级 12); //实例化按钮对象 Button btnDownload=(Button)findViewById(RMessage); Button btnDownload=(Button)findViewById(R.id.btnDownload); Button btnUpdate=(Button)findViewById(R.id.btnUpdate); //注册按钮的单击事件 btnDownload.setOnClickListener(this); btnUpdate.setOnClickListener(this); } //实现按钮的单击时间事件 @Override public void onClick(View v) { switch (v.getId()) { case R.id.btnDownload: //创建对象 MyAsyncTask myAsyncTask=new MyAsyncTask(); myAsyncTask.execute(null);//执行任务 break; case R.id.btnUpdate: break; } } private class MyAsyncTask extends AsyncTask<URL, Integer, String>{ //在UI中执行,更新UI @Override protected void onProgressUpdate(Integer... values) { mProgressBar.setProgress(values[0]); if(values[0]<100){ mTextView.setText("progress="+values[0]+"%"); } } //现在work thread中执行耗时操作 @Override protected String doInBackground(URL... params) { for (int i = 0; i < 100; i++) { publishProgress(i+1);//向onProgressUpdate发送消息 try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } return "download finished"; } //doInBackground结束后,执行本方法,result是doInBackground方法返回的数据 @Override protected void onPostExecute(String result) { mTextView.setText(result); } } } 12.9. 软件开发术语 12.9.1性能 临时对象越多,垃圾回收(GC)的频率越高 GC占用CPU,CPU被占用时,无法响应用户的操作 用户感觉到卡,影响用户体验。 12.9.2资源池 存放一定数量的同样类型的对象,当程序需要使用时,可以从资源池中获取,使用完成,收回资源池。 等待下一次被使用。 示例:从资源池中获取Message对象。 Message msg=Message.obtainMessage(); 提示:若之前没有创建过Message,则创建给对象。Android系统会在适当时候回收该对象,方便下次取用。 提示:解决性能问题的前提是不能影响功能。
『捌』 启动故障:btn_rst是什么意思
答:RST是RESET的简写,RESET信号一般用于有CPU的电路中,是复位、初始化的意思,在开机时要用RESET信号使电路初始化,电路工作状态出现异常死机时也要用...
『玖』 bootstrap小白一枚 今天复刻网页练习看到这么一个状态,在网上也查不到 求大神指导! btn-normal什么效果
默认的按钮吧。默认白色。默认大小。