파워빌더에서 화면 캡처하기파워빌더에서 화면 캡처하기
Posted at 2013. 9. 2. 14:25 | Posted in PowerBuilder파워빌더 자체에서 제공하는 함수가 따로 있는 것은 아닙니다.
파워빌더에서 직접 윈도우 API 를 호출하는 방법도 있지만
매우 복잡해져서, DLL 을 만들고 파워빌더에서는 간단하게
함수를 호출하는 형식으로 만들어봤습니다.
첫번째 argument 에 윈도우의 handle 을 넘겨주면 그 윈도우 만을 capture 하게 됩니다.
만약 파워빌더에서 다른 윈도우의 화면을 capture 하려고 한다면 그 윈도우의 handle 을
찾는 것은 별도로 구현하셔야 합니다.
첫번째 argument 에 0 을 주면 두번째 argument 에 지정된 모니터 화면 전체를 capture 합니다.
(멀티 모니터도 지원이 됩니다. 1 이 기본 모니터이며 2가 확장된 모니터입니다.
3개 이상의 모니터를 가지고 있을 경우 2, 3 이 어떤 것이 될지는 테스트되지 않았습니다.
테스트 후 프로그램에 반영하셔야 합니다.)
자세한 내용은 첨부한 소스를 보시면 됩니다.
PB 11.5 에서 만들어 졌으며, 하위 버전을 사용하시는 분들은 아래의 스크립트를 참조하십시요.
// external function
FUNCTION long pb_screencapture( unsignedlong hwnd, long whichMonitor, long imageType, long imageQuality, string filename, ref string msg ) library "pbscreen.dll" alias for "pb_screencapture;ansi"
// PowerBuidler scripts
boolean lb_checked
long ll_ret, ll_monitor_no, ll_imageType, ll_imageQuality
ulong lu_handle
string ls_filename, ls_msg, ls_imageType
// 저장될 파일 이름.
ls_filename = sle_3.text
// 에러가 발생했을 때, 메시지. 반드시 space 로 공간을 잡아주어야 한다.
ls_msg = space(1024)
// 현재의 윈도우만 capture 할 것인지의 여부를 묻는 체크박스
// 체크되지 않으면 monitor number 에 지정된 화면 전체를 capture.
lb_checked = cbx_1.checked
if lb_checked then
lu_handle = handle(parent)
else
lu_handle = 0
end if
// 윈도우만 capture 하는 것이 아닐 경우에만 사용. 모니터의 번호. 1 부터 시작.
// 1 은 기본 모니터를 뜻한다.
ll_monitor_no = long( sle_4.text )
// 그림의 형식. JPG, GIF, BMP 만 지원된다.
// JPG 가 가장 효율적임.
ls_imageType = ddlb_1.text
choose case ls_imageType
case "JPG"
ll_imageType = 1
case "GIF"
ll_imageType = 2
case "BMP"
ll_imageType = 3
end choose
// 100 : 가장 좋은 품질. 사이즈가 커진다.
// 1 : 가장 않좋은 품질. 사이즈가 작다.
// 50-80 사이의 값이면 화면을 알아보는데 지장이 없음.
ll_imageQuality = 50
ll_ret = pb_screencapture( lu_handle, ll_monitor_no, ll_imageType, ll_imageQuality, ls_filename, ls_msg )
MessageBox( string(ll_ret), ls_msg )
20100504165026_wer_pbscreen_capture.zip
'PowerBuilder' 카테고리의 다른 글
PowerBuilder 10 과 EAServer 5 이용한 웹 서비스 (0) | 2013.09.03 |
---|---|
PowerBuilder 10 으로 Migration 하기 (0) | 2013.09.03 |
DataDirect ODBC 등록방법 (0) | 2013.09.02 |
파워빌더 어플리케이션 1개만 실행하기 (0) | 2013.09.02 |
웹브라우저로 URL열기 (파월빌더 함수사용) (0) | 2013.09.02 |