Hi, during the migration of my TProxyInfo component to D2009 I get a strange problem that get me crazy. One API always fail with error 1003 (Cannot complete this function). The exactly same code with D5 works (it show "XYZT"). I explicitly declared Ansi what must be Ansi, so I really don't understand what's wrong. If someone has an idea why it doesn't work, the follow is a sample code:
type PAutoProxyScriptBuffer = ^AUTO_PROXY_SCRIPT_BUFFER; AUTO_PROXY_SCRIPT_BUFFER = packed record dwStructSize: DWORD; lpszScriptBuffer: LPSTR; dwScriptBufferSize: DWORD; end; TAutoProxyScriptBuffer = AUTO_PROXY_SCRIPT_BUFFER; TInitializeAutoProxyDll = function ( dwVersion: DWORD; lpszDownloadedTempFile: LPSTR; lpszMime: LPSTR; lpAutoProxyCallbacks: Pointer; // AutoProxyHelperFunctions* lpAutoProxyScriptBuffer: PAutoProxyScriptBuffer ): BOOL; stdcall; TGetProxyInfo = function ( lpszUrl: LPCSTR; dwUrlLength: DWORD; lpszUrlHostName: LPSTR; dwUrlHostNameLength: DWORD; out lplpszProxyHostName: LPSTR; out lpdwProxyHostNameLength: DWORD ): BOOL; stdcall; TDeInitializeAutoProxyDll = function ( lpszMime: LPSTR; dwReserved: DWORD ): BOOL; stdcall; procedure TForm1.Button1Click(Sender: TObject); var LibHandle: THandle; InitializeAutoProxyDll: TInitializeAutoProxyDll; GetProxyInfo: TGetProxyInfo; DeInitializeAutoProxyDll: TDeInitializeAutoProxyDll; ScriptText: AnsiString; ScriptBuffer: TAutoProxyScriptBuffer; Url: AnsiString; Host: AnsiString; ProxyName: PAnsiChar; ProxyLength: LongWord; begin LibHandle := SafeLoadLibrary('jsproxy.dll'); if LibHandle = 0 then Exit; try @InitializeAutoProxyDll := GetProcAddress(LibHandle, 'InternetInitializeAutoProxyDll'); if @InitializeAutoProxyDll = nil then begin ShowMessageFmt('GetProcAddress(''InternetInitializeAutoProxyDll'') failed: error %d (%s)', [GetLastError, SysErrorMessage(GetLastError)]); Exit; end; @GetProxyInfo := GetProcAddress(LibHandle, 'InternetGetProxyInfo'); if @GetProxyInfo = nil then begin ShowMessageFmt('GetProcAddress(''InternetGetProxyInfo'') failed: error %d (%s)', [GetLastError, SysErrorMessage(GetLastError)]); Exit; end; @DeInitializeAutoProxyDll := GetProcAddress(LibHandle, 'InternetDeInitializeAutoProxyDll'); if @DeInitializeAutoProxyDll = nil then begin ShowMessageFmt('GetProcAddress(''InternetDeInitializeAutoProxyDll'') failed: error %d (%s)', [GetLastError, SysErrorMessage(GetLastError)]); Exit; end; ScriptText := 'function FindProxyForURL(url, host)'#13#10'{'#13#10'return "XYZT";'#13#10'}'#13#10; ScriptBuffer.dwStructSize := SizeOf(TAutoProxyScriptBuffer); ScriptBuffer.lpszScriptBuffer := PAnsiChar(ScriptText); ScriptBuffer.dwScriptBufferSize := Length(ScriptText) + 1; if not InitializeAutoProxyDll(0, nil, nil, nil, @ScriptBuffer) then begin ShowMessageFmt('InternetInitializeAutoProxyDll() failed: error %d (%s)', [GetLastError, SysErrorMessage(GetLastError)]); Exit; end; try Url := 'URL'; Host := 'host'; ProxyName := nil; try if not GetProxyInfo(PAnsiChar(Url), Length(Url) + 1, PAnsiChar(Host), Length(Host) + 1, ProxyName, ProxyLength) then begin ShowMessageFmt('InternetGetProxyInfo() failed: error %d (%s)', [GetLastError, SysErrorMessage(GetLastError)]); Exit; end; ShowMessage(ProxyName); finally if ProxyName <> nil then GlobalFree(HGLOBAL(ProxyName)); end; finally if not DeInitializeAutoProxyDll(nil, 0) then ShowMessageFmt('InternetDeInitializeAutoProxyDll() failed: error %d (%s)', [GetLastError, SysErrorMessage(GetLastError)]); end; finally FreeLibrary(LibHandle); end; end; Bye, Maurizio. ---------------------------------------------------- This mail has been sent using Alpikom webmail system http://www.alpikom.it -- To unsubscribe or change your settings for TWSocket mailing list please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket Visit our website at http://www.overbyte.be