Delphi Dünyası Facebook'ta

Kodbank İndir

! CODEBANK 2012 !

İNDİRMEK&DETAYLI BİLGİ ALMAK İÇİN BURAYI TIKLAYINIZ.

Gönderen Konu: CPU seri numarasını almak  (Okunma sayısı 2831 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimiçi barutali

  • Administrator
  • *****
  • İleti: 2.229
  • Rep: +55/-0
  • Cinsiyet: Bay
  • Falan filan ...
  • Delphi Sürümü: 2010 - XE2
CPU seri numarasını almak
« : 28 Haziran 2009 07:53:03 »
arkadaşlar bana bi ara lazım olmuştu belki işine yarayan çıkar kodlar bana ait olmayıp nerden aldığımı hatırlamamaktayım :S,

forma bir adet edit ve bir adet button koyun button un onclik olayında Cpu procedure ünü çalıştırın ....


Kod:  (Unknown Language)
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses SysUtils, Forms, Dialogs, Classes, Controls, StdCtrls;
  6.  
  7. type
  8.   TForm1 = class(TForm)
  9.     Edit1: TEdit;
  10.     Button1: TButton;
  11.     procedure CPU(Sender: TObject);
  12.   end;
  13.  
  14. var
  15.   Form1: TForm1;
  16.  
  17. implementation
  18.  
  19. {$R *.DFM}
  20.  
  21. const
  22.      ID_BIT     =     $200000;               // EFLAGS ID bit
  23. type
  24.      TCPUID     = array[1..4] of Longint;
  25.      TVendor     = array [0..11] of char;
  26.  
  27.  
  28. function IsCPUID_Available : Boolean; register;
  29. asm
  30.      PUSHFD                                   {direct access to flags no possible, only via stack}
  31.   POP     EAX                         {flags to EAX}
  32.   MOV     EDX,EAX               {save current flags}
  33.   XOR     EAX,ID_BIT     {not ID bit}
  34.   PUSH    EAX                         {onto stack}
  35.   POPFD                                        {from stack to flags, with not ID bit}
  36.   PUSHFD                                   {back to stack}
  37.   POP     EAX                         {get back to EAX}
  38.   XOR     EAX,EDX               {check if ID bit affected}
  39.   JZ      @exit                    {no, CPUID not availavle}
  40.   MOV     AL,True               {Result=True}
  41. @exit:
  42. end;
  43.  
  44.  
  45. function GetCPUID : TCPUID; assembler; register;
  46. asm
  47.   PUSH    EBX         {Save affected register}
  48.   PUSH    EDI
  49.   MOV     EDI,EAX     {@Resukt}
  50.   MOV     EAX,1
  51.   DW      $A20F       {CPUID Command}
  52.   STOSD                         {CPUID[1]}
  53.   MOV     EAX,EBX
  54.   STOSD               {CPUID[2]}
  55.   MOV     EAX,ECX
  56.   STOSD               {CPUID[3]}
  57.   MOV     EAX,EDX
  58.   STOSD               {CPUID[4]}
  59.   POP     EDI                         {Restore registers}
  60.   POP     EBX
  61. end;
  62.  
  63.  
  64. function GetCPUVendor : TVendor; assembler; register;
  65. asm
  66.   PUSH    EBX                         {Save affected register}
  67.   PUSH    EDI
  68.   MOV     EDI,EAX               {@Result (TVendor)}
  69.   MOV     EAX,0
  70.   DW      $A20F                    {CPUID Command}
  71.   MOV     EAX,EBX
  72.   XCHG          EBX,ECX     {save ECX result}
  73.   MOV               ECX,4
  74. @1:
  75.   STOSB
  76.   SHR     EAX,8
  77.   LOOP    @1
  78.   MOV     EAX,EDX
  79.   MOV               ECX,4
  80. @2:
  81.   STOSB
  82.   SHR     EAX,8
  83.   LOOP    @2
  84.   MOV     EAX,EBX
  85.   MOV               ECX,4
  86. @3:
  87.   STOSB
  88.   SHR     EAX,8
  89.   LOOP    @3
  90.   POP     EDI                         {Restore registers}
  91.   POP     EBX
  92. end;
  93.  
  94. procedure TForm1.CPU(Sender: TObject);
  95. var
  96.   CPUID : TCPUID;
  97.   I     : Integer;
  98.   S               : String;
  99. begin
  100.      for I := Low(CPUID) to High(CPUID)
  101.      do CPUID[I] := -1;
  102.  
  103.  
  104.   if IsCPUID_Available then
  105.   begin
  106.        CPUID     := GetCPUID;
  107.  
  108.        S := IntToHex(CPUID[1],8) + '_';
  109.        S := S + IntToHex(CPUID[4],8) + '_';
  110.        S := S + IntToHex(CPUID[3],8) + '_';
  111.        S := S + IntToHex(CPUID[2],8);
  112.  
  113.        Edit1.Text := (S);
  114.  
  115.   end;
  116. end;
  117.  
  118. end.
  119.  
  120.  
  121.  
  122.  



Amatör Küme Programcı

Çevrimdışı selchuk

  • Delphi 6 Level 3
  • ***
  • İleti: 274
  • Rep: +0/-0
  • Cinsiyet: Bay
    • Arma Ticari Sistem
Ynt: CPU seri numarasını almak
« Yanıtla #1 : 09 Ocak 2010 00:55:23 »
Çalışan bir örnek varmı acaba?

Ben çalıştıramadım. :(
Knowledge is power (Bilgi Güçtür)

Çevrimdışı MosCom

  • Delphi 1 Level 5
  • *****
  • İleti: 40
  • Rep: +0/-0
Ynt: CPU seri numarasını almak
« Yanıtla #2 : 09 Ocak 2010 09:17:48 »
sağolasın barutali..

Çevrimdışı selchuk

  • Delphi 6 Level 3
  • ***
  • İleti: 274
  • Rep: +0/-0
  • Cinsiyet: Bay
    • Arma Ticari Sistem
Ynt: CPU seri numarasını almak
« Yanıtla #3 : 10 Ocak 2010 01:02:02 »
MosCom arkadaşım bu kodu çalıştırabildiysen örneği yollarmısın?
Knowledge is power (Bilgi Güçtür)

Çevrimiçi barutali

  • Administrator
  • *****
  • İleti: 2.229
  • Rep: +55/-0
  • Cinsiyet: Bay
  • Falan filan ...
  • Delphi Sürümü: 2010 - XE2
Ynt: CPU seri numarasını almak
« Yanıtla #4 : 10 Ocak 2010 08:11:08 »
örnek ektedir ... Kodu biraz değiştirdim son CPU procedure ünü function yaptım ..




Amatör Küme Programcı

Çevrimdışı selchuk

  • Delphi 6 Level 3
  • ***
  • İleti: 274
  • Rep: +0/-0
  • Cinsiyet: Bay
    • Arma Ticari Sistem
Ynt: CPU seri numarasını almak
« Yanıtla #5 : 10 Ocak 2010 15:46:41 »
Çok teşekkür ederim.
Knowledge is power (Bilgi Güçtür)