| View previous topic :: View next topic   | 
	
	
	
		| Author | 
		Message | 
	
	
		Светлана
 
 
  Joined: 22 Jul 2002 Posts: 416 Location: Эпштейн Светлана
  Interests: Бердск, Новосибирская обл
  | 
		
			
				 Posted: 08 Nov 2005 06:50    Post subject: Как получить? | 
				     | 
			 
			
				
  | 
			 
			
				| Как получить в Harbour номер данной рабочей станции и пароль (или имя) оператора, с которым он вошел в данный пункт программы? | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		Марина
 
 
  Joined: 27 Aug 2002 Posts: 501 Location: Кондрина Марина Александровна Occupation: ОАО БКО программист Interests: Боровичи Новгородской обл
  | 
		
			
				 Posted: 08 Nov 2005 09:31    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				netname()
 
_user_code | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		Светлана
 
 
  Joined: 22 Jul 2002 Posts: 416 Location: Эпштейн Светлана
  Interests: Бердск, Новосибирская обл
  | 
		
			
				 Posted: 08 Nov 2005 19:02    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				| Спасибо, с  _user_code поняла- это имя пользователя, а вот про netname()  отладчик говорит, что «Неизвестная функция». А  можно еще как-нибудь узнать с каким паролем бухгалтер зашел в подсистему? | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		nordk
 
 
  Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
  | 
		
			
				 Posted: 09 Nov 2005 12:50    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				Зачем Вам с каким паролем вошел ?
 
Задайте в настройке пароль нужный а тут наоборот не должно быть тако | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		Марина
 
 
  Joined: 27 Aug 2002 Posts: 501 Location: Кондрина Марина Александровна Occupation: ОАО БКО программист Interests: Боровичи Новгородской обл
  | 
		
			
				 Posted: 09 Nov 2005 15:23    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				netname() это клипперовская функция. Правда, она и там-то не всегда работала
 
 
to nordk
 
Если Вы хотите ограничить права пользователя, в принципе конечно достаточно _user_code. Но к сожалению, для разных версий БЭСТ в нем сидит то номер пользователя из справочника пользователей, то значение из terminal (если не путаю с сетевым именем компьютера). А также в удаленных модулях или при отсутствии авторизации в нем еще может сидеть пустая строка. | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		shura_k
 
 
  Joined: 10 Oct 2003 Posts: 342 Location: Александр Occupation: Специалист Interests: Калининград
  | 
		
			
				 Posted: 09 Nov 2005 15:31    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				Добавьте в проверку ещё MAС адрес. Правда надо ещё придумать как его получить в харборе   | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		Олег Смирнов
 
 
  Joined: 06 Sep 2004 Posts: 821 Location: Олег Смирнов Occupation: Раут (поганист-сисадмин) Interests: Новосибирск
  | 
		
			
				 Posted: 09 Nov 2005 20:11    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | shura_k wrote: | 	 		  Добавьте в проверку ещё MAС адрес. Правда надо ещё придумать как его получить в харборе   | 	  
 
Оба!..   А кто у нас тут специалист по харбору?!.   _________________ С уважением, Олег Р. Смирн | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		nordk
 
 
  Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
  | 
		
			
				 Posted: 10 Nov 2005 17:56    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				Попробуйте
 
HWINFONETADAPTERS() | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		VBE
 
 
  Joined: 09 Jan 2002 Posts: 31 Location: Белорусцев Валерий Occupation: 4+
 
  | 
		
			
				 Posted: 10 Nov 2005 18:19    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				MAC адрес сетевой карты можно получить так
 
GetMACAddress()
 
 
#pragma BEGINDUMP
 
#include <windows.h>
 
#include <rpc.h>
 
#include <rpcdce.h>
 
#include "hbapi.h"
 
#include "hbapiitm.h"
 
 
 
#include <iphlpapi.h>
 
#include <winioctl.h>
 
 
 
static void GetMACaddress(void)
 
{
 
  IP_ADAPTER_INFO AdapterInfo[16];
 
  PIP_ADAPTER_INFO pAdapterInfo;
 
  DWORD dwBufLen = sizeof(AdapterInfo);
 
  DWORD dwStatus = GetAdaptersInfo(AdapterInfo,&dwBufLen);
 
//  assert(dwStatus == ERROR_SUCCESS);
 
 
  pAdapterInfo = AdapterInfo;
 
  do {
 
//    PrintMACaddress(pAdapterInfo->-Address);
 
    pAdapterInfo = pAdapterInfo->Next;
 
  }
 
  while(pAdapterInfo);
 
}
 
 
HB_FUNC ( GETMACADDRES )
 
{
 
unsigned char MACData[6];
 
UUID uuid;
 
char szMac[17];
 
int i;
 
    UuidCreateSequential( &uuid );              // Ask OS to create UUID
 
    hb_xmemset( szMac, '\0', 17 );
 
    for (i=2; i<8; i++)                     // Bytes 2 through 7 inclusive are MAC address
 
        MACData[i - 2] = uuid.Data4[i];
 
    sprintf( szMac,"%02X-%02X-%02X-%02X-%02X-%02X",
 
        MACData[0], MACData[1], MACData[2], MACData[3], MACData[4],MACData[5]);
 
    hb_retclen(szMac,17);
 
}
 
 
#pragma ENDDUMP
 
 
но,к сожалению ,эта функция недоступна в Б4+ | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		shura_k
 
 
  Joined: 10 Oct 2003 Posts: 342 Location: Александр Occupation: Специалист Interests: Калининград
  | 
		
			
				 Posted: 10 Nov 2005 18:45    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				Её надо сначало загрузить 
 
 
  LoadLibrary('IPHLPAPI.DLL');
 
  GetProcAddress(hDLL,'GetAdaptersInfo'); | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		shura_k
 
 
  Joined: 10 Oct 2003 Posts: 342 Location: Александр Occupation: Специалист Interests: Калининград
  | 
		
			
				 Posted: 10 Nov 2005 18:48    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | nordk wrote: | 	 		  Попробуйте
 
HWINFONETADAPTERS() | 	  
 
 
Для этой функции нужны параме | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		VBE
 
 
  Joined: 09 Jan 2002 Posts: 31 Location: Белорусцев Валерий Occupation: 4+
 
  | 
		
			
				 Posted: 10 Nov 2005 19:14    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				Параметры не нужны для HWINFONETADAPTERS()
 
Возвращается массив ,в котором находятся
 
параметры сетевых адаптеров
 
 
HB_FUNC( HWINFONETADAPTERS )
 
{
 
  typedef DWORD (WINAPI * GetAdaptersInfo_Func)(PIP_ADAPTER_INFO, PULONG);
 
 
  HINSTANCE             hLib;
 
  PHB_ITEM              pitmRet, pitmAdapter, pitmTmp;
 
  IP_ADAPTER_INFO       *pAI, *pAdapter;
 
  ULONG                 nLen;
 
  GetAdaptersInfo_Func  pGetAdaptersInfo;
 
 
 
 
  if ( (DWORD)(hLib = LoadLibrary("iphlpapi.dll")) <= 32 ||
 
       (pGetAdaptersInfo = (GetAdaptersInfo_Func)GetProcAddress(hLib, "GetAdaptersInfo")) == NULL )  {
 
    if ( (DWORD)hLib > 32 )  FreeLibrary(hLib);
 
    hb_ret();
 
    return;
 
  }
 
 
  pAI = (IP_ADAPTER_INFO*) hb_xgrab( nLen = sizeof(IP_ADAPTER_INFO) );
 
  if ( pGetAdaptersInfo(pAI, &nLen) == ERROR_BUFFER_OVERFLOW ) {
 
    hb_xfree(pAI);
 
    pAI = (IP_ADAPTER_INFO *) hb_xgrab( nLen );
 
  }
 
 
  if ( pGetAdaptersInfo(pAI, &nLen) != ERROR_SUCCESS )  {
 
    FreeLibrary(hLib);
 
    hb_ret();
 
    return;
 
  }
 
  FreeLibrary(hLib);
 
 
  nLen = 0;
 
  pAdapter = pAI;
 
  while ( pAdapter )  {
 
    nLen++;
 
    pAdapter = pAdapter->Next;
 
  }
 
 
  pitmRet = hb_itemArrayNew(nLen);
 
  nLen = 0;
 
  pAdapter = pAI;
 
  while ( pAdapter )  {
 
    pitmAdapter = hb_itemArrayNew(4);
 
 
    pitmTmp = hb_itemPutC(NULL, pAdapter->AdapterName);
 
    hb_arraySetForward(pitmAdapter, 1, pitmTmp);
 
    hb_itemRelease( pitmTmp );
 
 
    pitmTmp = hb_itemPutC(NULL, pAdapter->Description);
 
    hb_arraySetForward(pitmAdapter, 2, pitmTmp);
 
    hb_itemRelease( pitmTmp );
 
 
    pitmTmp = hb_itemPutCL(NULL, pAdapter->Address, pAdapter->AddressLength);
 
    hb_arraySetForward(pitmAdapter, 3, pitmTmp);
 
    hb_itemRelease( pitmTmp );
 
 
    pitmTmp = hb_itemPutNI(NULL, pAdapter->Type);
 
    hb_arraySetForward(pitmAdapter, 4, pitmTmp);
 
    hb_itemRelease( pitmTmp );
 
 
    hb_arraySetForward(pitmRet, ++nLen, pitmAdapter);
 
    hb_itemRelease( pitmAdapter );
 
    pAdapter = pAdapter->Next;
 
  }
 
 
  if ( pAI )
 
    hb_xfree( pAI );
 
  hb_itemRelease( hb_itemReturn( pitmRet ) );
 
} | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		shura_k
 
 
  Joined: 10 Oct 2003 Posts: 342 Location: Александр Occupation: Специалист Interests: Калининград
  | 
		
			
				 Posted: 10 Nov 2005 19:21    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				что-то пустой массив на выходе получаем   | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		VBE
 
 
  Joined: 09 Jan 2002 Posts: 31 Location: Белорусцев Валерий Occupation: 4+
 
  | 
		
			
				 Posted: 10 Nov 2005 20:03    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				хмм
 
работает
 
a := HWINFONETADAPTERS()
 
? a[1][1]
 
? a[1][2]
 
? a[1][4]
 
 
 
{86363904-BF32-43C1-9ECA-53CE950DD29A}
 
3Com EtherLink XL 10/100 PCI For Complete PC Management NIC (3C905C-TX)
 
6 | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		Марина
 
 
  Joined: 27 Aug 2002 Posts: 501 Location: Кондрина Марина Александровна Occupation: ОАО БКО программист Interests: Боровичи Новгородской обл
  | 
		
			
				 Posted: 11 Nov 2005 09:16    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				| и то, что возвращается, не изменяется при смене пользовате | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		 |