Вобщем код модуля такой сделал, но пока толком не исправлял:
[more]
library module_glxtlt;
{$R module_glxtlt.res}
uses
Windows, Messages, SysUtils;
type
FN_HTTPDOWNLOAD = function(szURL: PChar;
szMethod: PChar;
szArgs: PChar;
szReferrer: PChar;
szContentType: PChar;
pBuffer: pBYTE;
dwMaxBufferLen: DWORD): DWORD; stdcall;
const
RES_MENU = 101;
TszModuleName = 'Модуль';
TszServerName = 'vpn.ru';
TszGUID = '{EC7B9ECC-8FC9-4c82-97BC-3CDB3E2C2B31}';
TszForgetPasswordLink = 'http://ссылка';
TszURL = 'http://ссылка';
TszModuleDescr = 1600;
TszLoginHint = 1601;
TszPasswordHint = 1602;
function GetModuleIcon: HICON; stdcall;
begin
Result := LoadImage(hInstance, MAKEINTRESOURCE(RES_MENU), IMAGE_ICON, 16, 16, LR_DEFAULTSIZE or LR_LOADTRANSPARENT or LR_LOADMAP3DCOLORS);
end;
function GetModuleInfo(szModuleName: PChar; dwMaxNameLen: DWORD; szGUID: PChar; dwMaxGUIDLen: DWORD; szModuleDescr: PChar; dwMaxDescrName: DWORD): BOOL; stdcall;
begin
dwMaxNameLen := StrLen(PChar(TszModuleName)) + 1;
StrLCopy(szModuleName, PChar(TszModuleName), dwMaxNameLen);
dwMaxDescrName := StrLen(PChar(Format(LoadStr(TszModuleDescr), [TszModuleName]))) + 1;
StrLCopy(szModuleDescr, PChar(Format(LoadStr(TszModuleDescr), [TszModuleName])), dwMaxDescrName);
dwMaxGUIDLen := StrLen(PChar(TszGUID)) + 1;
StrLCopy(szGUID, PChar(TszGUID), dwMaxGUIDLen);
Result := TRUE;
end;
function GetModuleHints(szLoginHint: PChar; dwLoginHintLen: DWORD; szPasswordHint: PChar; dwPasswordHintLen: DWORD; szForgetPasswordLink: PChar; dwLinkLen: DWORD): BOOL; stdcall;
begin
dwLoginHintLen := StrLen(PChar(Format(LoadStr(TszLoginHint), [TszModuleName, TszServerName]))) + 1;
StrLCopy(szLoginHint, PChar(Format(LoadStr(TszLoginHint), [TszModuleName, TszServerName])), dwLoginHintLen);
dwPasswordHintLen := StrLen(PChar(Format(LoadStr(TszPasswordHint), [TszModuleName, TszServerName]))) + 1;
StrLCopy(szPasswordHint, PChar(Format(LoadStr(TszPasswordHint), [TszModuleName, TszServerName])), dwPasswordHintLen);
dwLinkLen := StrLen(PChar(TszForgetPasswordLink)) + 1;
StrLCopy(szForgetPasswordLink, PChar(TszForgetPasswordLink), dwLinkLen);
Result := TRUE;
end;
{ Состояние записи, получение данных }
{ const char* szAccount - логин }
{ const char* szPassword - пароль }
{ double* dBalance - баланс }
{ double* dOverdraft - овердрафт }
{ double* dActive - активные сессии (если есть) }
{ double* dMinutes - минуты (если есть) }
{ char* szTarif - тарифный план }
{ DWORD dwMaxTarifLen - максимальная длина буффера }
{ char* szMessage - сообщение об ошибке }
{ DWORD dwMaxMessageLen - максимальная длина буффера }
{ FN_HTTPDOWNLOAD httpDownload - указатель на функцию (см. объявление FN_HTTPDOWNLOAD) }
function GetAccountState(szAccount: PChar; szPassword: PChar; dBalance: pDouble; dOverdraft: pDouble; dActive: pDouble; dMinutes: pDouble; szTarif: PChar; dwMaxTarifLen: DWORD; dwTarifDays: pDWORD; dwTarifDaysLeft: pDWORD; szMessage: PChar; dwMaxMessageLen: DWORD; httpDownload: FN_HTTPDOWNLOAD): BOOL; stdcall;
begin
Result := TRUE;
end;
function GetAccountURLAndPostData(szAccount: PChar; szPassword: PChar; szURL: PChar; dwURLLen: DWORD; szPOSTData: PChar; dwPOSTDataLen: DWORD): BOOL; stdcall;
begin
dwURLLen := StrLen(PChar(TszURL)) + 1;
StrLCopy(szURL, PChar(TszURL), dwURLLen);
wsprintf(szPOSTData, PChar(Format('?language=russian&user=%s&passwd=%s&logined=1', [szAccount, szPassword])));
Result := TRUE;
end;
exports
GetModuleIcon,
GetModuleInfo,
GetModuleHints,
GetAccountState,
GetAccountURLAndPostData;
begin
end.
[/more]
Но мне чего-то непонятно как отправить POST запрос username=blabla&password=blabla например на адрес
http://ссылка, используя колбек функцию FN_HTTPDOWNLOAD. И все это выполнить через функцию GetAccountState. Вобщем как нужно прописать этот запрос,для меня неясно. Значения szAccount и szPassword передаются из программы и всталвяются в сам запрос.