티스토리 뷰

반응형

WINAPI 활용하여 Excel, PDF 등 연결 프로그램으로 열기

 WINAP를 사용하여 Excel, PDF 등의 파일을 파워빌더에서 열 경우 윈도우에 설치된 연결된 프로그램으로 오픈하는 방법에 대해서 포스팅 하고자 합니다. 부연 설명하자면 Excel 은 Office의 excel프로그램에서, PDF는 아크로벳리더에서 오픈 될 수 있게 코딩하고자 합니다.

 

 

 소스코드

Global External Functions 에 사용할 WINAPI를 아래와 같이 선언합니다.

FUNCTION long    ShellExecuteA( long hWnd, REF String ls_Operation, REF String ls_File, REF String ls_Parameters, REF String ls_Directory, INT nShowCmd ) library "shell32.dll" alias for "ShellExecuteA;Ansi"

아래 소스는 DataWindow 의 File_Nm 이란 필더를 클릭 할 경우 해당 연결 파일의 프로그램이 오픈 될 경우의 코딩입니다.

 

if dwo.name = 'file_nm' then	// 파일명을 클릭하면 파일 열기
	String ls_file_path, ls_ftp_file_nm, ls_File_nm
	
	This.AcceptText()
	
	ls_File_nm     = This.GetItemString(row, 'file_nm')
	ls_file_path   = This.GetItemString(row, 'file_path')


	if isnull(ls_File_nm) or ls_File_nm = '' then
		return 0
	end if 	

	uf_doc_view(ls_file_path, ls_File_nm)
end if


//uf_doc_view 함수 스크립트
uf_doc_view(string ls_file_path, string ls_File_Nm)
Integer li_rtn
	
if isnull(ls_file_path) or ls_file_path = '' then 
	ls_file_path = '.\' + ls_File_Nm
else
	ls_file_path = ls_file_path + ls_File_Nm
end if


Ulong lul_handle
string f1, f2, f3, f4

f1 = "Open"
f2 = ls_file_path
f3 = " "
f4 = " "
lul_handle = Handle(This)

ShellExecuteA(lul_handle, f1, f2, f3, f4, 1)

return li_rtn
반응형
댓글