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 |
|
|
|