Fórumozást segítő progik forumozóktól forumozóknak. Avagy a \"Mi kellene az SG-nek?\" kérdésre kliens oldali megoldások.
  • Sir Quno Jedi
    #35
    Használata pl.:
    LoadFromURL2('www.sg.hu','/forum.php','proxyuser','proxypassword','','');


    procedure TForm1.LoadFromURL2(Site,Document,ProxyUser,ProxyPWD,User,PWD: string);
    var
    hOpenHandle, hConnectHandle, hResourceHandle:HINTERNET;
    dwReserved, dwStatus: DWORD;
    pStatus:pointer;
    dwStatusSize:DWORD;
    buf: array[0..16383] of byte;
    dwBytesRead: cardinal;
    st: TMemoryStream;
    begin
    try
    hOpenHandle := InternetOpen('MSIE',
    INTERNET_OPEN_TYPE_PRECONFIG,
    nil, nil, 0);

    try
    hConnectHandle := InternetConnect(hOpenHandle,
    PChar(Site),
    INTERNET_INVALID_PORT_NUMBER,
    nil,
    nil,
    INTERNET_SERVICE_HTTP,
    0,0);

    try
    hResourceHandle := HttpOpenRequest(hConnectHandle, 'GET',
    PChar(Document),
    nil, nil, nil,
    INTERNET_FLAG_KEEP_CONNECTION,
    0);

    try
    HttpSendRequest(hResourceHandle, nil, 0, nil, 0);

    pStatus:=addr(dwStatus);
    dwStatusSize:=sizeof(dwStatus);
    dwReserved:=0;

    HttpQueryInfo(hResourceHandle,
    HTTP_QUERY_FLAG_NUMBER or HTTP_QUERY_STATUS_CODE,
    pStatus,
    dwStatusSize,
    dwReserved);

    if dwStatus=HTTP_STATUS_PROXY_AUTH_REQ then
    begin

    InternetSetOption(hResourceHandle,
    INTERNET_OPTION_PROXY_USERNAME,
    PChar(ProxyUser),
    Length(ProxyUser)+1);

    InternetSetOption(hResourceHandle,
    INTERNET_OPTION_PROXY_PASSWORD,
    PChar(ProxyPWD),
    Length(ProxyPWD)+1);

    HttpSendRequest(hResourceHandle, nil, 0, nil, 0);

    pStatus:=addr(dwStatus);
    dwStatusSize:=sizeof(dwStatus);
    dwReserved:=0;

    HttpQueryInfo(hResourceHandle,
    HTTP_QUERY_FLAG_NUMBER or HTTP_QUERY_STATUS_CODE,
    pStatus,
    dwStatusSize,
    dwReserved);

    end;

    if dwStatus=HTTP_STATUS_DENIED then
    begin

    InternetSetOption(hResourceHandle,
    INTERNET_OPTION_USERNAME,
    PChar(User),
    Length(User)+1);

    InternetSetOption(hResourceHandle,
    INTERNET_OPTION_PASSWORD,
    PChar(PWD),
    Length(PWD)+1);

    HttpSendRequest(hResourceHandle, nil, 0, nil, 0);

    end;

    st:=TMemoryStream.Create;
    try
    repeat
    InternetReadFile(hResourceHandle, @buf, 8192, dwBytesRead);
    st.Write(buf, dwBytesRead);
    until dwBytesRead = 0;
    st.Position:=0;
    memo1.Lines.LoadFromStream(st);
    finally
    st.Free;
    end;

    finally
    end;
    finally
    InternetCloseHandle(hResourceHandle);
    end;
    finally
    InternetCloseHandle(hConnectHandle);
    end;
    finally
    InternetCloseHandle(hOpenHandle);
    end;

    end;