to loopy: 我是穷人我想要分^&^<br>to thtfsyh,我相信你了不过现在不发布确实是还没完全成功,分我还是要的未完成的<br> 代码也给你吧<br>to chaoro: 我现在只能给你VC的代码启示一下以后可进一步讨论!<br><br>to all:<br> 本问题的关键是一条未公开的指新令CPUID,他提代的功能号01,03分别取得<br>cpuid的前32位和后64位,加起来就是96位的PIIIcpu序列号。 我已经与intel<br>提供的工具cpuid取得的id比较验证过是对的!<br> 但我发现这条指令竞然只有VC有,delphi4,delphi5都没有提供,我在delphi<br>中测试失败,看来只有期待delphi6来解决了<br> 现在公开的是vc6下的代码可有了它,你完全可以作一个dll,ocx什么在delphi中<br>调用, 我就是这样实现的如要这个现成的ocx,请与我联系:<br><br> email: hbliao@jobroad.net<br><br>=======================================================================<br><br>CString CGetcpuidCtrl::GetCpuId()<br>{<br> // TODO: Add your control notification handler code here<br> int EAX_,EDX_,ECX_;<br> CString rst="",rst2,rst3;<br><br> __asm{<br> MOV EAX,01H<br> CPUID<br> MOV EAX_,EAX<br> MOV EDX_,EDX<br> }<br> if (EDX_ & 0x00000100)//此位为1表示此cpu有序列号<br> {<br> rst.Format("%8x",EAX_);<br> __asm{<br> MOV EAX,03H<br> CPUID<br> MOV EDX_,EDX<br> MOV ECX_,ECX<br> }<br> rst2.Format("%8x",EDX_);<br> rst3.Format("%8x",ECX_);<br> rst.Format("%s%s%s",rst,rst2,rst3);<br> }<br> else<br> {<br> rst="This Cpu Not Have PIII serialno"; }<br> return(rst);<br>}<br>