首页
社区
课程
招聘
[求助]关于PrintWindow函数
发表于: 2013-3-20 21:15 3703

[求助]关于PrintWindow函数

2013-3-20 21:15
3703
在做一个后台取色的程序,用到了一个PrintWindow函数,但是编译时提示没有定义这个函数,到网上查了好多资料也没有头绪。
请问这个函数是哪里的函数,如果要使用的话,要如何声明啊?或者谁有这个函数的源码啊,能告诉我吗?谢谢啦

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 318
活跃值: (41)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
1 可以升级SDK

2 直接从DLL获取

typedef BOOL(FAR WINAPI *PWFUNC)(HWND, HDC, UINT);

BOOL PrintWindow(IN HWND hwnd, IN HDC hdcBlt, IN UINT nFlags)
{
        HMODULE hmod = LoadLibrary("user32.dll");
        PWFUNC PrintWindow = (PWFUNC)GetProcAddress(hmod, "PrintWindow");
        BOOL bReturn = PrintWindow(hwnd, hdcBlt, nFlags);
        FreeLibrary(hmod);
        return bReturn;
}
2013-3-20 22:10
0
雪    币: 184
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我用的是radasm,您的第二种方法不是很明白啊,怎么在PrintWindow函数里还有一句PrintWindow(hwnd, hdcBlt, nFlags)啊,递归吗?
请问能用汇编的方式说明一下吗?
2013-3-20 22:38
0
雪    币: 184
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
有人会么赛...
2013-3-21 09:58
0
雪    币: 114
活跃值: (180)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
那不是递归,是获取PrintWindow这个函数的地址,获取了之后你就可以调用了。
2013-3-21 10:20
0
雪    币: 184
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
知道了,只是不知道用radasm支持的语法如何做到,下面是我写的,最后一句不对了,不知道怎么写,求教了。
注:szText=user32.dll,szText1=PrintWindow,hWnd是一个窗口的句柄,hDc是这个窗口的DC句柄。
_PrintWindow        proc        hWnd:DWORD,hDc:DWORD,FLAG:DWORD
                LOCAL        hMod
                LOCAL        PWnd
                LOCAL        DReturn
               
                invoke        LoadLibrary,offset szText
                mov        hMod,eax
                invoke        GetProcAddress,hMod,szText1
                mov        PWnd,eax
                invoke        PWnd,hWnd,hDc,FLAG
               
        ret
_PrintWindow        endp
2013-3-21 11:00
0
雪    币: 184
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
顶起来!求解....
或者谁能告诉我如何在汇编里引用一个只知道地址的函数,把数据传给函数的参数
2013-3-21 19:36
0
游客
登录 | 注册 方可回帖
返回
//