用api获取其它程序中picturebox中图形的问题
我的代码如下:
Private Declare Function FindWindow Lib "user32 " Alias "FindWindowA " (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SendMessage Lib "user32 " Alias "SendMessageA " (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function GetDlgItem Lib "user32 " (ByVal hDlg As Long, ByVal nIDDlgItem As Long) As Long
Private Declare Function BitBlt Lib "gdi32 " (ByVal hDestDC As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
Private Declare Function GetDC Lib "user32 " (ByVal hwnd As Long) As Long
Private Declare Function GetPixel Lib "gdi32 " (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long
Private Sub Command1_Click()
aa = FindWindow(vbNullString, "Form1 ")
MsgBox aa
Dim bb As Long
bb = GetDlgItem(aa, 3)
MsgBox bb
Dim cc As Long
cc = GetDC(bb)
BitBlt Picture1.hdc, 5, 5, 50, 50, cc, 0, 0, &HCC0020
Picture1.Refresh
End Sub
如果那个caption为Form1的窗体在前端显示,没有问题,能够正确地获取form1中那个picturebox的图片,但是如果form1被其他程序的界面覆盖,就会显示出其它程序界面上的图形。
我想知道怎么才能不管form1的状态如何都能获取form1中picturebox里面的图形。
我的分不多,先谢谢大家了。
[解决办法]
我有办法,明天给代码!
[解决办法]
用getdc 或getwindowdc这样的方法恐怕行不通!
当窗口完全显示时(没有遮挡)程序要重绘窗口(常识),既然要重绘,哪么一定要从某个地方读取要绘制的内容,哪么哪个地方是那儿呢?又是如何存储的?好多问题......