* 這段代碼是網上找的,據說是都市夜貓老師的代碼,請幫看一下代碼沒有執行的原因,我主要是想實作列印滑鼠點擊圖片就直接列印,請老師指點!
DECLARE INTEGER FindWindow IN user32 STRING lpClassName,STRING lpWindowName
DECLARE INTEGER GetDC IN user32 INTEGER hwnd
Declare SHORT GetWindowRect IN user32 INTEGER hwnd, STRING @ lpRect
DECLARE Long GetWindowDC IN WIN32API Long hWnd
DECLARE Long ReleaseDC IN WIN32API Long hWnd, Long hDc
DECLARE Long CreateCompatibleDC IN WIN32API Long hDc
DECLARE Long DeleteDC IN WIN32API Long hDc
DECLARE Long CreateCompatibleBitmap IN WIN32API Long hDc, Long nWidth, Long nHeight
DECLARE Long BitBlt IN WIN32API Long hDestDC, Long nXDest, Long nYDest, Long nWidth, Long nHeight, Long hSrcDC, Long nXSrc, Long nYSrc, Long dwRop
DECLARE Long SelectObject IN WIN32API Long hDc, Long hObject
DECLARE Long DeleteObject IN WIN32API Long hObject
DECLARE Long GdiplusStartup IN gdiplus Long @ token, String @ inputbuf, Long @ outputbuf
DECLARE Long GdiplusShutdown IN gdiplus Long token
DECLARE Long GdipCreateBitmapFromHBITMAP IN gdiplus Long hbitmap, Long hpalette, Long @ hGpBitmap
DECLARE Long GdipDisposeImage IN gdiplus Long image
DECLARE Long GdipSaveImageToFile IN gdiplus Long nImage, String FileName, String clsIdEncoder, Long encoderParams
**以上的API 不是全部用上 只是復制進來,懶得洗掉了!
DECLARE INTEGER PrintWindow IN user32 INTEGER,INTEGER ,INTEGER
#define SRCCOPY 0x00CC0020 LOCAL cFileExtName, cEncoder, iInputBuf, iResult
LOCAL hDesktopDc, hVDc, hBitmap, hToken, hGdipBitmap
m.hWnd=FindWindow("Notepad",NULL) &&截取一個文本視窗試一試
tcFile=LOWER('d:\aaa.JPG') &&jpg 格式影像
m.cFileExtName =LOWER( JUSTEXT( m.tcFile ))
lpRect = REPLI (Chr(0), 16)
GetWindowRect (m.hWnd, @lpRect)
lnWidth=ctob(SUBS(lpRect,9,4),'4rs')-ctob(SUBS(lpRect,1,4),'4rs')&&視窗寬度
lnHeight=ctob(SUBS(lpRect,13,4),'4rs')-ctob(SUBS(lpRect,5,4),'4rs')&&視窗高度
m.hDesktopDc = GetDC( m.hWnd )
m.hVdc = CreateCompatibleDC( m.hDesktopDc )
m.hBitmap = CreateCompatibleBitmap( m.hDesktopDc,lnWidth,lnHeight )
ABC=SelectObject( m.hVdc, m.hBitmap )
i=PrintWindow(m.hWnd,m.hVdc,0)
SelectObject( m.hVdc, ABC )
*BitBlt( m.hVdc, 0,0,lnWidth,lnHeight, m.hDesktopDc,0,0, SRCCOPY )
m.hToken = 0
m.iInputBuf = 0h01 + REPLICATE( CHR(0),15 )
m.iResult = -1
IF ( 0 == GdiplusStartup( @ m.hToken, @ m.iInputBuf, 0 ))
m.hGdipBitmap = 0
IF ( 0 == GdipCreateBitmapFromHBITMAP( ;
m.hBitmap, 0, @ m.hGdipBitmap ))
m.cEncoder = ICASE( ;
'jpg' == m.cFileExtName, 0h01, ;
'gif' == m.cFileExtName, 0h02, ;
'tif' == m.cFileExtName, 0h05, ;
'png' == m.cFileExtName, 0h06, 0h00 ) ;
+ 0hF47C55041AD3119A730000F81EF32E
m.iResult = GdipSaveImageToFile( ;
m.hGdipBitmap, ;
STRCONV( m.tcFile+CHR(0), 5 ), ;
m.cEncoder, 0 )
GdipDisposeImage( m.hGdipBitmap )
ENDIF
GdiplusShutdown( m.hToken )
ENDIF
DeleteObject( m.hBitmap )
DeleteDC( m.hVdc )
ReleaseDC( 0, m.hDesktopDc )
uj5u.com熱心網友回復:
用了一個ShellExecute笨辦法先暫時過渡一下,期待各位大師的指點!uj5u.com熱心網友回復:
m.hWnd=FindWindow("Notepad",NULL) &&截取一個文本視窗試一試這一句視窗名與你要截取的相對應
uj5u.com熱心網友回復:
那一句已經改為 m.hWnd=thisform.hWnd,主要原因是代碼沒有任何反應,也不報錯轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/11827.html
標籤:VFP
上一篇:mysql資料庫
