2011-05-05 7 views
3

Windows API 함수를 사용하여 powerbuilder 응용 프로그램을 통해 ftp 서버에 연결하려고합니다. 인터넷 익스플로러를 통해 ftp 서버에 연결할 수 있기 때문에 (권한 문제라고 생각하지는 않습니다) 알 수없는 이유로 응용 프로그램이 실패합니다.ftp 서버에 연결할 수 없습니다.

String ls_Null, & 
      ls_id 
Integer li_rc 

li_rc = 1 

IF Not InternetAutodial(AUTODIAL_FORCE_UNATTENDED, 0) THEN 
    f_write_to_err_log('IMPORT Unable To Connect Internet - Dialup') 
    li_rc = -1 
ELSE 
    SetNull(ls_Null) 
    ls_id = "Care_Dsend" 
    al_internet_handle = InternetOpen(ls_id, INTERNET_OPEN_TYPE_DIRECT, ls_Null, ls_Null, 0)   

    IF al_internet_handle > 0 THEN 
     al_ftp_connect_handle = InternetConnect(al_internet_handle, is_ftp_url, il_ftp_port, is_ftp_user, is_ftp_password, INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, al_ref) 
    END IF 
END IF 

Return li_rc 


//al_internet_handle, al_ftp_connect_handle are by ref long parms 
//al_ref is a by ref unsignedlong parm 
//is_ftp_url, is_ftp_user, is_ftp_password are strings 
//il_ftp_port is long 

이 함수는 InternetOpen API 함수에서 핸들을 반환하지만 InternetConnect 함수에서 0을 반환합니다.

아이디어가 있으십니까?

+0

내가 파워 빌더에 대해 아무것도 몰라,하지만 당신은 프록시를 지정해야합니까? –

+0

아니요, 아닙니다. 다른 주석에서 언급했듯이이 스크립트는 몇 년 전에 작성된 다른 응용 프로그램에서 작동하며 왜 지금 작동하지 않는지 이해할 수 없습니다. – Guy

답변

2

확인

  • Internet services example - PFC guide이 (PFC 사용) (또한 윈도우 배치 파일을 사용), 내가 발견 무엇 문제는 그랬다. 나는 실종되었다 안시을 내 함수 선언의 끝에서 같이 :

    기능 ULONG InternetOpen (REF 문자열 lpszAgent, ULONG dwAccessType, 심판 문자열 lpszProxy, 심판 문자열 lpszProxyBypass, ULONG dwFlags) 도서관 "InternetOpenA , 안시"에 대한 "WININET.DLL"별칭

  • +1

    다행스럽게 해결했습니다. Pb10에서 유니 코드 호환성에 대한 몇 가지 중요한 변경 사항이 있습니다. 아마도 다음과 같은 것 같습니다 : http://www.techno-kitten.com/Changes_to_PowerBuilder/New_in_PowerBuilder_10/PB10New_-_Unicode_Support/PB10New_-_Unicode_Related_Chan/PB10New_-_Calling_External_Fun/pb10new_- _calling_external_fun.html –

    1

    로컬 외부 기능을 게시하거나 InternetAutodial(), InternetOpen() 등 무엇을 사용하고 있습니까? 그것들은 내장 함수가 아니며 적어도 Powerbuilder 11.2에서는 그렇지 않습니다. PFC처럼 보이지 않습니다. 또한, 어떤 버전의 Powerbuilder를 사용하고 있습니까?

    또한, 이러한 링크에서 볼 수도 있습니다 :

    +0

    다음은 내가 사용하고있는 로컬 외부 함수입니다.'Function boolean InternetAutodial (ulong dwFlags, ulong dwReserved) 라이브러리 "WININET.DLL"' '함수 ulong InternetOpen (ref 문자열 lpszAgent, ulong dwAccessType, 참조 문자열 lpszProxy, 참조 문자열 lpszProxyBypass , ulong dwFlags) 라이브러리 "WININET.DLL" "InternetOpenA"에 대한 별칭 이러한 함수는 내장 PB 함수가 아니라 Windows API 함수입니다. 저는 PB 11.5를 사용하고 있습니다 만이 똑같은 기능이 PB의 이전 버전을 다시 시작한 지 몇 년 전에 작성된 응용 프로그램에서 사용되었으며 그 응용 프로그램은 잘 작동합니다. – Guy

    관련 문제