Формат поля

  • Автор темы Автор темы Oksana
  • Дата начала Дата начала
В таком случае могу предложить только разве что библиотеку dll ( писана кадато на делфях ) , работает только с NT win ( тоесть 98 и милениум и ниже отдыхают ) и только с TCP/IP

выкладывать?
для меня, пожалуй, это будет сложно, но там были еще желающие
 
Здесь в Dll описаны несколько функций
function GetWinType: PChar; stdcall; external 'SysInfo.dll';
function GetComputerName: PChar; stdcall; external 'SysInfo.dll';
function GetCPUUse: double; stdcall; external 'SysInfo.dll';
function GetCpuName: PChar; stdcall; external 'SysInfo.dll';
function GetCPUClass: PChar; stdcall; external 'SysInfo.dll';
function GetCPUSpeed: Extended; stdcall; external 'SysInfo.dll';
function GetCPUVendor: PChar; stdcall; external 'SysInfo.dll';
function GetCurUserName: PChar; stdcall; external 'SysInfo.dll';
function GetMemoryLoad: integer; stdcall; external 'SysInfo.dll';
function GetTotalPhysMemory: Cardinal; stdcall; external 'SysInfo.dll';
function GetVideoInfo: PChar; stdcall; external 'SysInfo.dll';
function GetDiskFreeSpace( DriveLatter: PChar ): Double; stdcall; external 'SysInfo.dll';
function GetDiskSpace(DriveLatter: PChar ): Double; stdcall; external 'SysInfo.dll';
function GetDriveSerial(DriveLatter: pchar): integer; stdcall; external 'SysInfo.dll';
function GetDriveType( DriveLatter: pchar ): pchar; stdcall; external 'SysInfo.dll';
function GetMAC: pchar; stdcall; external 'SysInfo.dll';
function GetIP: pchar; stdcall; external 'SysInfo.dll';

и з них до ума доведены далеко не все, желательно пользоваться
GetIP (вернёт IP локальной машины, могут быть ошибки если в системе несколько адаптеров)
GetWinType - тип винды NT или нет ( ну это и лотус может )
GetCpuName - это думаю понятно
GetCurUserName - текущий юзер виндовый
GetMAC - не работает !!!

з.ы. Кстати это не сложно, я делал так, в базе просто выкладывалась в профиле эта Dll, при открытии базы фалик выкладываеться в темпы юзверя и всё, можно работать, как работать с внешними библиотеками описано в хэлпе лотуса искать Declare statement (external C calls)
 

Вложения

<!--QuoteBegin-Oksana+4:05:2007, 04:22 -->
<span class="vbquote">(Oksana @ 4:05:2007, 04:22 )</span><!--QuoteEBegin-->Кстати, как получить IP, с которого подключился пользователь, с помощью LS
[snapback]64563" rel="nofollow" target="_blank[/snapback]​
[/quote]

Если код, в котором надо определять IP выполняется на _клиенте_, тогда абсолютно никаких проблем. Либо нормальный способ (через какие-нить Win32 функции), либо извратным способом (например выполнить ipconfig > ip.txt, и распарсить результат).

А если код выполняется на сервере, то сомневаюсь что это возможно вообще.
 
Если код, в котором надо определять IP выполняется на _клиенте_, тогда абсолютно никаких проблем. Либо нормальный способ (через какие-нить Win32 функции), либо извратным способом (например выполнить ipconfig > ip.txt, и распарсить результат).

А если код выполняется на сервере, то сомневаюсь что это возможно вообще.
Вот дали такой код:
Код:
cInterfacesKeys:="";
MaxInterfaces:=100;

@For (n := 1; n <= MaxInterfaces; n := n + 1;
@Do(
cInterfaceKey:=@RegQueryValue("HKEY_LOCAL_MACHINE"; "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\NetworkCards\\" + @Trim(@Text(n)); "ServiceName");
@If(
@Trim(cInterfaceKey) != "";
@Set("cInterfacesKeys"; cInterfacesKeys : cInterfaceKey);
""
)
)
);

@If(
@Trim(cInterfacesKeys) = "";
@Return("");
""
);

IPAddresses:="";
DHCPIPAddresses:="";

@For (n := 1; n <= @Elements(cInterfacesKeys); n := n + 1;
@Do(
IPAddress:=@RegQueryValue("HKEY_LOCAL_MACHINE"; "SYSTEM\\CurrentControlSet\\Services\\" + cInterfacesKeys[n] + "\\Parameters\\TCPIP"; "IPAddress");
DHCPIPAddress:=@RegQueryValue("HKEY_LOCAL_MACHINE"; "SYSTEM\\CurrentControlSet\\Services\\" + cInterfacesKeys[n] + "\\Parameters\\TCPIP"; "DhcpIPAddress");
@If(
@Trim(@Text(IPAddress)) != "";
@Set("IPAddresses"; IPAddresses : IPAddress);
""
);
@If(
@Trim(@Text(DHCPIPAddress)) != "";
@Set("DHCPIPAddresses"; DHCPIPAddresses : DHCPIPAddress);
""
)
)
);

@Trim(@Replace(@Unique(IPAddresses : DHCPIPAddresses); "0.0.0.0"; ""))
Так он не работает уже на первой @RegQueryValue, возвращает пустую строку, хотя переменная в реестре есть
 
Попробуй это:
Код:
Dim WMIService As Variant
Dim WNetwork As Variant
Dim IPConfigSet As Variant
Dim i As Integer

Set WNetwork = CreateObject("WScript.Network")
Set WMIService = GetObject("winmgmts:\\" + WNetwork.ComputerName + "\root\cimv2")
Set IPConfigSet = WMIService.ExecQuery("Select IPAddress from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")

Forall IPConfig In IPConfigSet
If Not Isnull(IPConfig.IPAddress) Then
For i=Lbound(IPConfig.IPAddress) To Ubound(IPConfig.IPAddress)
Msgbox IPConfig.IPAddress(i)
Next
End If
End Forall

Содрано .
 
Для: Oksana
Чесно, не очень, мой Вам совет не пользуйтесь реестром!
 
Попробуй это:
Код:
Dim WMIService As Variant
Dim WNetwork As Variant
Dim IPConfigSet As Variant
Dim i As Integer

Set WNetwork = CreateObject("WScript.Network")
Set WMIService = GetObject("winmgmts:\\" + WNetwork.ComputerName + "\root\cimv2")
Set IPConfigSet = WMIService.ExecQuery("Select IPAddress from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")

Forall IPConfig In IPConfigSet
If Not Isnull(IPConfig.IPAddress) Then
For i=Lbound(IPConfig.IPAddress) To Ubound(IPConfig.IPAddress)
Msgbox IPConfig.IPAddress(i)
Next
End If
End Forall

Попробовала, даже не разобравшись что там и к чему - РАБОТАЕТ! :)
Проверила пока только со своего места, сечас еще с других проверю.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!