AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Monitor Seriennummer auslesen

Ein Thema von bafoeg · begonnen am 11. Jun 2004 · letzter Beitrag vom 14. Mai 2010
Antwort Antwort
Seite 2 von 3     12 3      
Blinky

Registriert seit: 12. Jun 2004
3 Beiträge
 
Delphi 7 Professional
 
#11

Re: Monitor Seriennummer auslesen

  Alt 14. Jun 2004, 08:17
Hallo bafoeg, hallo erstmal zusammen

dem ist genauso wie du vermutet hast.

Die EDID entspricht meines Wissens nach dem - was der Monitor via DDC beim Boot dem Betriebssystem mitteilt - (Danke Chris, waren fast zeitgleich).

Ein auslesen via WMI wäre die einfachste Methode, dies war jedoch in meinem Fall nicht möglich. Da sich bei unseren Maschinen auf diesem Key zusätzlich ein fehlerhafter Eintrag befindet, der sich nicht einfach so auf sichere Weise löschen lässt (bei der Anzahl von Maschienen) - habe ich diesen Lösungsweg gewählt (Die WMI Funktion lieferte immer einen Leeren Wert).

Durch ein auslesen direkt via DDC würde man wohl die aktuellesten Informationen kriegen, diese konnte ich jedoch nicht realisieren, aber wäre sicher sehr interessant.

Einfach wenn du eine Monitor Switchbox dazwischengeschaltet hast, liefert diese unter umständen das DDC Signal nicht weiter.

Falls es dir etwas weiterhilft, hier einen Link zu Microsoft "WMI\computer_system_hardware_classes"

http://msdn.microsoft.com/library/de...re_classes.asp

Gruss Blinky
als bisheriger nur Leser der "Delphi-Praxis" möchte ich mich mal bei allen hier bedanken, habe ich hier doch schon so mache Info und Hilfe entdeckt .
  Mit Zitat antworten Zitat
bafoeg

Registriert seit: 11. Jun 2004
7 Beiträge
 
#12

Re: Monitor Seriennummer auslesen

  Alt 14. Jun 2004, 22:56
Hallo zusammen!

ich werde versuchen DDC auszuprobieren.
Nur stelle ich mir dann die Frage, wie die div. Sharewaretools das auch während des laufenden Betriebes anstellen, und nicht nur beim booten

Wenn ich mir die MSDN Library durchsuche finde ich unter:

- Win32_VideoConfiguration
- Win32_DisplayConfiguration
- Win32_DisplayControllerConfiguration

Zwar schon einige Infos, aber leider keine, wie man die Serial auslesen kann...habe ich da was überlesen??

Bafög
  Mit Zitat antworten Zitat
bafoeg

Registriert seit: 11. Jun 2004
7 Beiträge
 
#13

Re: Monitor Seriennummer auslesen

  Alt 17. Jun 2004, 06:30
Hallo zusammen,

hier: Webpage Title
Gibts z.B. das Tool zum auslesen der Ser.

Bafög
  Mit Zitat antworten Zitat
scp

Registriert seit: 31. Okt 2003
1.120 Beiträge
 
Delphi 7 Personal
 
#14

Re: Monitor Seriennummer auslesen

  Alt 27. Jun 2004, 01:25
Für alle, die sich für den EDID header interessieren, hier gibt es die Spezifikation. Der Header würde in Delphi also so aussehen:
Delphi-Quellcode:
type
  TEDIDHeader = record
    Padding : array[1..8] of Byte;
    VendorID : Word; // bits 14 - 10 first letter (01h='A', 02h='B', etc.)
                        // bits 9 - 5 second letter
                        // bits 4 - 0 third letter
    ProductID : Word;
    SerialNo : DWord; // serial number or FFFFFFFFh
                        // for "MAG", subtract 7000000 to get actual serial number
                        // for "OQI", subtract 456150000
                        // for "PHL", subtract ???
                        // for "VSC", subtract 640000000
    ManufactureWeek : Byte;
    ManufactureYear : Byte; // manufacture year - 1990
    EDIDversion : Byte;
    EDIDrevision : Byte;
    VideoInputType : Byte;
    SizeHorizontal : Byte; // in cm
    SizeVertical : Byte; // in cm
    GammaFactor : Byte; // gamma factor (gamma = 1.0 + factor/100, so max = 3.55)
    DPMSflags : Byte;
    ChromaXYgreenred : Byte;
    ChromaXYwhiteblue : Byte;
    ChromaXred : Byte;
    ChromaYred : Byte;
    ChromaXgreen : Byte;
    ChromaYgreen : Byte;
    ChromaXblue : Byte;
    ChromaYblue : Byte;
    ChromaXwhite : Byte;
    ChromaYwhite : Byte;
    EstablishedTimings1 : Byte;
    EstablishedTimings2 : Byte;
    ManufacturersReservedTiming : Byte;
    StandardTimingIdentification : array[1..8] Of Word;
    DetailedTimingDescription1 : array[1..18] Of Byte;
    DetailedTimingDescription2 : array[1..18] Of Byte;
    DetailedTimingDescription3 : array[1..18] Of Byte;
    DetailedTimingDescription4 : array[1..18] Of Byte;
    Unused : Byte;
    Checksum : Byte;
  end;
Jetzt muss man nur noch die Binärdaten aus der Registry auslesen und in eine Variable dieses Typs schleusen.

EDIT:
Es gibt mehrere Spezifikationen (1.0, 1.1, 1.2, 1.3 und 2.0) die leicht voneinander abweichen. Besonders zu beachten ist, das v2.0 aus 256 bytes besteht, daher immer nur die ersten 128 bytes kopieren oder ein Reserverd : array[1..128] Of Byte an den Header anhängen.
  Mit Zitat antworten Zitat
bafoeg

Registriert seit: 11. Jun 2004
7 Beiträge
 
#15

Re: Monitor Seriennummer auslesen

  Alt 8. Jul 2004, 18:28
cool danke!
  Mit Zitat antworten Zitat
andy65

Registriert seit: 3. Dez 2004
7 Beiträge
 
#16

Re: Monitor Seriennummer auslesen

  Alt 3. Dez 2004, 16:35
Hallo

Ich kann die EDID Informationen aus der Registry auslesen. Es gelingt mir auch die rein numerischen Werte auszulesen. Wo ich aber im Moment überhaupt nicht weiter komme ist bei

Zitat:
VendorID : Word; // bits 14 - 10 first letter (01h='A', 02h='B', etc.)
// bits 9 - 5 second letter
// bits 4 - 0 third letter
ProductID : Word;
SerialNo : DWord; // serial number or FFFFFFFFh
// for "MAG", subtract 7000000 to get actual serial number
// for "OQI", subtract 456150000
// for "PHL", subtract ???
// for "VSC", subtract 640000000
Wie kann ich eine Word- oder DWord-variable in einen String umwandeln, so dass in diesem dann auch der Herrsteller oder die Seriennummer steht?

Gruss
Andy
  Mit Zitat antworten Zitat
supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#17

Re: Monitor Seriennummer auslesen

  Alt 3. Dez 2004, 16:40
Herzlich Willkommen

Dword ist DoubleWord und das ist eine "Zahl"

Wie der Delphi OH zu entnehmen:

Type Range Format
Integer ?2147483648..2147483647 signed 32-bit
Cardinal 0..4294967295 unsigned 32-bit
Fundamental integer types include Shortint, Smallint, Longint, Int64, Byte, Word, and Longword.

Type Range Format
Shortint ?128..127 signed 8-bit
Smallint ?32768..32767 signed 16-bit
Longint ?2147483648..2147483647 signed 32-bit
Int64 ?2^63..2^63?1 signed 64-bit
Byte 0..255 unsigned 8-bit
Word 0..65535 unsigned 16-bit
Longword 0..4294967295 unsigned 32-bit

also einfach inttostr(variable als longword) und du hast deinen string

wenn das allerdings noch kodiert ist, dann musst du das noch umwandeln
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat
andy65

Registriert seit: 3. Dez 2004
7 Beiträge
 
#18

Re: Monitor Seriennummer auslesen

  Alt 4. Dez 2004, 08:18
Hallo supermuckel

Ganz so einfach ist es leider nicht! wenn ich z.B. Das Feld VendorId nehme erhalte ich mit IntToStr 183 als Rückgabewert. Ich sollte aber 3 Zeichne, auf meinem PC 'SAM' für Samsung, zurückbekommen. Ich muss also diesen Wert irgendwie Bitweise auftrennen, damit ich an die einzelnen Zeichen komme und da fehlt mir im Moment der Lösungsweg.

Gruss
Andy
  Mit Zitat antworten Zitat
Benutzerbild von Nothine
Nothine

Registriert seit: 3. Jul 2004
Ort: Mülheim an der Ruhr
198 Beiträge
 
Delphi 5 Enterprise
 
#19

Re: Monitor Seriennummer auslesen

  Alt 4. Dez 2004, 11:09
Delphi-Quellcode:
function _5BitsToChr(Vendor: Word): Char;
asm
  AND EAX,$1F
  ADD EAX,$41
end;

function GetVendorString(VendorID: Word): string;
begin
  SetLength(Result,3);
  Result := _5BitsToChr(VendorID shr $A) + //bits 14-10
            _5BitsToChr(VendorID shr $5) + //bits 9- 5
            _5BitsToChr(VendorID); //bits 4- 0
end;
@andy65: für die von dir angegebenen 183 kommt allerdings 'AFX' raus
if ThisPost is senseless then
ThisPost.WasPostedBy := SomeoneElse();
  Mit Zitat antworten Zitat
scp

Registriert seit: 31. Okt 2003
1.120 Beiträge
 
Delphi 7 Personal
 
#20

Re: Monitor Seriennummer auslesen

  Alt 24. Dez 2004, 01:31
Kram aus....
Die Bytes müssen vorher verdreht werden, dann haut es hin.

Delphi-Quellcode:
function VendorLetters(vid : word) : String;
begin
  vid := ((vid and $00FF) shl 8) +
         ((vid and $FF00) shr 8);

  result := Chr(((vid and $7C00) shr 10) + $40) +
            Chr(((vid and $03E0) shr 5) + $40) +
            Chr(((vid and $001F) ) + $40);
end;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz