I did this just recently as a quick test for a proof of concept. It uses the SetupAPI header translation from Project Jedi and the rest is adapted from source from the Microsoft Win2K3 DDK. It works in Win2K/WinXP (the only platforms of interest in my work) but may work in others. YMMV.
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, SetupAPI; const GUID_DEVCLASS_NET: TGUID = '{4D36E972-E325-11CE-BFC1-08002BE10318}'; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} function StateChange(NewState, SelectedItem: cardinal; hDevInfo: HDEVINFO): boolean; var PropChangeParams: SP_PROPCHANGE_PARAMS; DeviceInfoData: SP_DEVINFO_DATA; begin DeviceInfoData.cbSize := SizeOf(SP_DEVINFO_DATA); // Get handle to selected item if not SetupDiEnumDeviceInfo(hDevInfo, SelectedItem, DeviceInfoData) then begin Result := False; Exit; end; // Set the PropChangeParams structure for this item PropChangeParams.ClassInstallHeader.InstallFunction := DIF_PROPERTYCHANGE; PropChangeParams.ClassInstallHeader.cbSize := SizeOf(SP_CLASSINSTALL_HEADER); PropChangeParams.Scope := DICS_FLAG_GLOBAL; PropChangeParams.StateChange := NewState; if not SetupDiSetClassInstallParams(hDevInfo, @DeviceInfoData, PSPCLASSINSTALLHEADER(@PropChangeParams), SizeOf(PropChangeParams)) then begin Result := False; Exit; end; // Call the ClassInstaller and perform the change if not SetupDiCallClassInstaller(DIF_PROPERTYCHANGE, hDevInfo, @DeviceInfoData) then begin Result := False; Exit; end; Result := True; end; // ------------------------------------------------------------------------ ----- function DisableNetAdapter: boolean; var hdi: HDEVINFO; begin hdi := SetupDiGetClassDevs(@GUID_DEVCLASS_NET, nil, 0, DIGCF_PRESENT); if cardinal(hdi) = INVALID_HANDLE_VALUE then begin Result := False; end else begin Result := StateChange(DICS_DISABLE, 0, hdi); SetupDiDestroyDeviceInfoList(hdi); end; end; // ------------------------------------------------------------------------ ----- function EnableNetAdapter: boolean; var hdi: HDEVINFO; begin hdi := SetupDiGetClassDevs(@GUID_DEVCLASS_NET, nil, 0, DIGCF_PRESENT); if cardinal(hdi) = INVALID_HANDLE_VALUE then begin Result := False; end else begin Result := StateChange(DICS_ENABLE, 0, hdi); SetupDiDestroyDeviceInfoList(hdi); end; end; // ------------------------------------------------------------------------ ----- procedure TForm1.Button1Click(Sender: TObject); begin EnableNetAdapter; end; // ------------------------------------------------------------------------ ----- procedure TForm1.Button2Click(Sender: TObject); begin DisableNetAdapter; end; // ------------------------------------------------------------------------ ----- end. ---- Michael Bowers, Sr. Applications Programmer Analyst Desktop Solutions R&D, Memorial Hermann Healthcare System Email: [EMAIL PROTECTED] Phone: 713/448-6306 Without walls you don't Pager: 713/605-8989 x21934 need Gates or Windows -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Ken Phipps Sent: Monday, June 27, 2005 1:24 PM To: Borland's Delphi Discussion List Subject: Disable/Enable Network Is there any way to disable/enable the network card with Delphi 7? _______________________________________________ Delphi mailing list -> Delphi@elists.org http://www.elists.org/mailman/listinfo/delphi _______________________________________________ Delphi mailing list -> Delphi@elists.org http://www.elists.org/mailman/listinfo/delphi