为什么这段代码的结果会是这样的???(35分)

  • 主题发起人 主题发起人 gf.z
  • 开始时间 开始时间
G

gf.z

Unregistered / Unconfirmed
GUEST, unregistred user!
得到显卡名称的代码!!
procedure TForm1.ButtonClick(Sender: TObject);
var
lpDisplayDevice: TDisplayDevice;
dwFlags: DWORD;
cc: DWORD;
begin
lpDisplayDevice.cb := sizeof(lpDisplayDevice);
dwFlags := 0;
cc:= 0;
while EnumDisplayDevices(nil, cc, lpDisplayDevice , dwFlags) do
begin
Inc(cc);
aListbox.Items.Add(lpDisplayDevice.DeviceString); {there is also additional information in lpDisplayDevice}
end;
end;

运行好在alistbox中显示的显卡型号为:
NVIDIA GeForce2 MX/MX 400
NetMeeting driver

多出来一个“NetMeeting driver”
这是在win2000下的结果,在win98下正常!
怎么样在win2000下得到正确结果?(不出来NetMeeting driver)
 
if lpDisplayDevice.DeviceName='//./DISPLAY1' then ...
 
是'//./DISPLAY1' 吗?
还是简写了?
 
应该是if lpDisplayDevice.DeviceName='//./Display1' then
但是加入了后在98下可以,在win2000下却什么也读不出了??

 
我已经解决了!
原来在win98下lpDisplayDevice.DeviceName='//./Display1'
而在win2000下lpDisplayDevice.DeviceName='//./DISPLAY1'
所以写成
if (lpDisplayDevice.DeviceName='//./Display1') or (isplayDevice.DeviceName='//./DISPLAY1 then
就可以了!!
在两个系统下都可以读到!
 

if (lpDisplayDevice.DeviceName='//./Display1') or (isplayDevice.DeviceName='//./DISPLAY1') then
 
后退
顶部