PDA

Visualizza la versione completa : Delphi & Api


st3p
06-10-2008, 14:16
Salve ragazzi, sto cercando di scrivere un programma che rilevi l'hardware presente nel pc. Più precisamente :

1. CPU : marca, modello, potenza.
2. RAM : Quantità.
3. Scheda Video : Marca, modello, potenza.
4. Scheda di Rete : Marca, modello.

Preciso che per i primi due punti ho risolto, quindi mi servirebbe solo scheda di rete e scheda video. La mia domanda è questa : il titolo è giusto ? Quindi ci vogliono le API ? Se si quali ? Perché premetto che per la CPU ho usato il registro di sistema mentre per la ram ho usato un amico e a quanto sembra ha usato le api. Siccome vorrei evitare di incollare codice a caso, potreste darmi qualche dritta ? tipo dirmi in generale dove trovo le API e come si richiamano.

Grazie, St3p.

st3p
07-10-2008, 14:17
UP

pallinopinco
07-10-2008, 14:38
Ci sono vari metodi per recuperare le informazioni sull'hardware, la scelta va fatta in base al dettaglio desiderato, ai requisiti di portabilità su sistemi Windows diversi e alla facilità di sviluppo.

Oltre all'uso della Windows API, ci sono particolari device drivers e la piattaforma WMI. Se non sei un programmatore particolarmente esperto potresti integrare componenti specifici (http://www.torry.ru/pages.php?id=240).

st3p
07-10-2008, 16:03
Ho provato ad usare i componenti specifici visto che non sono molto esperto. Quando vado ad installare il componente che secondo me è quello più indicato ( devicecup ) mi dice di fare :

1. In the delphi menu select:
Component > Install Component> Browse
2. Select the .pas file and select OK.

Però delphi mi chiede anche di selezionare un nome per il package. Che devo fare ?
E come uso questo componente ? oO

Grazie, Step.

pallinopinco
07-10-2008, 16:09
componente che secondo me è quello più indicato ( devicecup ) mi dice di fare :


In base a quale principio sarebbe il più indicato? A mio avviso è proprio il MENO indicato per i tuoi scopi, visto che non fornisce informazioni generiche sull'hardware (CPU, RAM, ...) ma dettagli sulle caratteristiche dei device. Ce ne sono altri più generici...

Se il componente ha un suo package di installazione puoi usare quello, altrimenti ne crei uno ad hoc o ne usi uno esistente. Il processo è legato alla specifica versione di Delphi, quindi non posso essere più preciso sui passaggi esatti. In ogni caso dovrebbe essere abbastanza intuitivo scegliere un pacchetto esistente o crearne uno vuoto.

st3p
07-10-2008, 18:07
Si infatti ho fatto una * * * *. Ho optato per - Hardware info and computerID - che penso sia il migliore. Come avrai notato sono parecchio ignorante ma stò cercando di imparare :unz:

Allora premetto che ho delphi 7 second edition, allora, sono riuscito ad creare un nuovo package selezionando l'unita HardwareinfoandcomputerID.pas e dando come nome al package hiacid.dpk. Il problema è questo, per utilizzare il package come devo fare ? cosa devo dichiarare nelle uses ? nelle uses ho dichiarato hiacid ma quando compilo mi da errore dicendomi che non trova hiacid.pas che infatti non c'è. Io penso che debba trovare HardwareinfoandcomputerID.pas però se il package lo chiamo con lo stesso nome dell'unita ovvero HardwareinfoandcomputerID mi dice

[Error] HardInfosAndComputerID.dpk(31): Identifier redeclared: 'HardInfosAndComputerID'


Qual'è il problema ? :dhò:

pallinopinco
07-10-2008, 18:12
Mandami il link esatto del pacchetto che hai scaricato...

st3p
07-10-2008, 18:59
http://www.torry.ru/vcl/system/systeminfo/HardwareInfosAndComputerIDv1.3.zip

pallinopinco
07-10-2008, 19:09
Per usare quel componente di basterebbe copiare i file HardInfosAndComputerID.pas e HardInfosAndComputerID.dll nella cartella del tuo progetto ed includere HardInfosAndComputerID nella clausola uses. Poi richiami le funzioni esposte dalla unit.

Note:

1) Devi distribuire il HardInfosAndComputerID.dll insieme al tuo eseguibile
2) Ho provato il programma demo su Vista e non funziona

st3p
07-10-2008, 19:38
Allora, pensavo quasi di aver risolto invece ancora non ci sono -.-"
ho copiato entrambi i file nelle cartelle ( .dll e .pas ), poi ho messo HardInfosAndComputerID nelle uses, e per provare ho fatto un form con un pulsante e una label. In public declaretion ho messo

h : Thardwareinfos;

e poi nel pulsante ho messo

procedure TForm1.Button1Click(Sender: TObject);
begin
Label4.Caption := h.CPUName;
end;

E in compilazione non mi da errore mentre runtime mi da un errore di access violation. Come mai ?

Loading