マイコンピュータ→システムのプロパティでは無く
マイコンピュータ→管理→コンピュータの管理(ローカル)のプロパティ
の方の「コンピュータ:」の情報を拾って来ることは可能なのでしょうか?
コンピュータの管理から直接、情報を取得する事は出来ないと思いますが
APIやWMIを使ったコードを書けば可能です。
>深夜鈍行 様
まだDelphiを触ってから浅いのでAPIやWMIを使った事がないのですが
どのようにしたら良いのでしょうか?
コンピュータの管理の情報を全て持ってくるのは、おお事ですね。
具体的には、どんな情報が欲しいのでしょう?
もう少し絞った方が回答がつきやすいと思いますよ。
WMIの使用例。「WMIをつかってIPアドレスを変更してみる」
http://homepage3.nifty.com/isayan/dnwmiw32ipcfg.html
Delphi7だと、Microsoft WMI Scripting V1.2 libraryが
インポートの一覧から見つからないのですが、なぜでしょう?
>RAN 様
メインで持ってくる情報は
・メーカー名
・コンピュータ名
の2つです。
使いまわし等で他に取れるようなら取りたいとは思っているのですが・・・
上記の項目なんですが
「システムのプロパティ」からの取り方はわかったのですが
OSを入れ直したりしているので
「コンピュータの管理」の方からの取ろうとしていたのです
コンピュータ名は、GetComputerNameで取れます。
http://forum.nifty.com/fdelphi/faq/00133.htm
>RAN 様
例のあげ方がまずかったですね
コンピュータ名 → FMV等の機種名の事です
たぶん、WMIのWin32_ComputerSystemのManufacturerとModelだと思います。
自分のPCはメーカー製でないので、上手く行っているか分からないのですが
こんな感じで如何でしょう?Delphi2005です。
uses
ActiveX, WbemScripting_TLB;
procedure TForm1.Button2Click(Sender: TObject);
var
Locator: ISWbemLocator;
Service: ISWbemServices;
ObjSet: ISWbemObjectSet;
Enum: IEnumVariant;
Obj: OleVariant;
Value: Cardinal;
begin
Locator := CoSWbemLocator.Create;
Service := Locator.ConnectServer('.', 'root\cimv2', '', '', '', '', 0, nil);
ObjSet:= Service.ExecQuery('SELECT * FROM Win32_ComputerSystem',
'WQL', wbemFlagReturnImmediately, nil);
Enum:= (ObjSet._NewEnum) as IEnumVariant;
while (Enum.Next(1, Obj, Value) = S_OK) do
begin
Obj:= IUnknown(Obj) as SWBemObject;
Edit1.Text := Obj.Manufacturer;
Edit2.Text := Obj.Model;
end;
end;
他のやりかたとしてBIOS情報からもメーカーやコンピュータの情報が得られます。
http://crystalmark.info/ のCrystalDMI で上を確認してみてください。
DMI 経由でシステム情報を取得しているようです。
C++でのソースコードが入手できます。
http://crystalmark.info/download/
>RAN 様
WbemScripting_TLB.dcu が見つかりませんというエラーが返ってきてしまいます・・・
>kkk 様
BIOSですか・・・
C++は触った事がないので、今以上に戸惑いそうな予感が・・・
>RAN 様
WbemScripting_TLB.dcu が見つかりませんというエラーが返ってきてしまいます・・・
>kkk 様
BIOSですか・・・
C++は触った事がないので、今以上に戸惑いそうな予感が・・・
タイプライブラリをインポートして下さい。
Delphi2005なら、メニューのコンポーネント。
コンポーネントのインポートで、タイプライブラリの取り込みを選択。
Microsoft WMI Scripting V1.2 libraryです。
Delphi7でもMicrosoft WMI Scripting V1.2 libraryはありました。
メニューのプロジェクト。タイプライブラリの取り込みです。
> Delphi7でもMicrosoft WMI Scripting V1.2 libraryはありました。
『Delphi7でも』というより、インストールされている DLLによるのでは?
http://www.catv296.ne.jp/~ken-yamada/devmemo/dev01.html
ここによると、XPは「Microsoft WMI Scripting V1.2 library」ですが、
2000は「Microsoft WMI Scripting V1.1 library」らしいです。
というわけで、必要なものが入っていれば、Delphi 3 とか 4 でも、
タイプライブラリの取り込みができる・・・と読みました。
いかがかな?
おっしゃるとおりです。
ActiveX コントロールの取り込みを一生懸命見てました orz
これなんかどうでしょう。Delphi用ですが。
http://blog.livedoor.jp/junki560/archives/17973852.html
↑の実行しても何も表示されてないんですが・・・?
表示されないって?
何事も諦めず、ネバリが肝心。
ネバレば海路の日和あり。
それって表示に時間がかかるって事ですか?
やはりBiosInfo自体のバージョン情報しか出ません
普通に
解凍→コンパイル→実行
で良いんですよね?
BiosHelp\Demos\bin\フォルダにある BiosHelp.exeを実行しても
BIOS情報が表示されないとしたら、そのマシンに対応してないということかな。
その方法でも表示されませんでした
未対応ですか・・・
>Edit1.Text := Obj.Manufacturer;
>Edit2.Text := Obj.Model;
このデータ以外に取れるものってあります?
あとコレをTStringList等でファイルに書き込む事はできますか?
> このデータ以外に取れるものってあります?
Win32_ComputerSystemだけでも大量にあります。
http://msdn.microsoft.com/library/en-us/wmisdk/wmi/win32_computersystem.asp
その他も色々とありますので、MSDNを見てください。
ツイート | ![]() |