Тема: Опять длл
Показать сообщение отдельно
Старый 10.11.2007, 17:49   #8
devolonter
Разработчик
 
Аватар для devolonter
 
Регистрация: 17.01.2007
Сообщений: 409
Написано 114 полезных сообщений
(для 281 пользователей)
Re: Опять длл

Вот реальный код из моей либы Может поможет...
код С++:
[blitz]extern "C" __declspec(dllexport) int WinApi_RegReadValue(const void *in,int in_size,void *out,int out_sz)
{
HKEY root = *(HKEY *)in;
HKEY hKey;
DWORD nSize= 0x256;
in = (int *)in+1;
int len_subkey = *(int *)in;
in = (int *)in+1;
int len_key = *(int *)in;
in = (int *)in+1;
char subkey[256];
char key[256];
char value[256];
ZeroMemory(&value, sizeof(value));
ZeroMemory(&key, sizeof(key));
ZeroMemory(&subkey, sizeof(subkey));
for (int i=0; i<len_subkey+1; i++)
{
subkey[i] = *(char *)in;
in = (char *)in+sizeof(char);
}
for (i=0; i<len_key+1; i++)
{
key[i] = *(char *)in;
in = (char *)in+sizeof(char);
}
if (RegOpenKeyEx(root,subkey,0,KEY_READ,&hKey)) return 0;
if (RegQueryValueEx(hKey,key,0,0,(LPBYTE)value,&nSize )) return 0;
for (i=0; i<256; i++)
{
(*(char *)out) = value[i];
out = (char *)out+sizeof(char);
}
if (RegCloseKey (hKey)) return 0;
return 1;
}[/blitz]

А вот код блица:
[blitz]Function bRegGetValue$(root, subkey$, key$)
Local blitzwinapi_result$, blitzwinapi_bankIn, blitzwinapi_bankOut
blitzwinapi_bankIn = CreateBank (12+Len(subkey)+Len(key)+2)
PokeInt (blitzwinapi_bankIn,0,root)
PokeInt (blitzwinapi_bankIn,4,Len(subkey))
PokeInt (blitzwinapi_bankIn,8,Len(key))
PokeString (blitzwinapi_bankIn,subkey,12)
PokeString (blitzwinapi_bankIn,key,12+Len(subkey)+1)
blitzwinapi_bankOut = CreateBank (256)
CallDLL (BWA_DLL_NAME,"WinApi_RegReadValue",blitzwinapi_ba nkIn,blitzwinapi_bankOut)
blitzwinapi_result = PeekString(blitzwinapi_bankOut,0)
FreeBank (blitzwinapi_bankIn)
FreeBank (blitzwinapi_bankOut)
Return blitzwinapi_result
End Function[/blitz]
(Offline)
 
Ответить с цитированием