TC官方合作论坛

 找回密码
 立即注册
查看: 1429|回复: 3

[已解决] dllcall功能 如何调用EnumWindows

[复制链接]
发表于 2014-10-8 19:24:29 | 显示全部楼层 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
就是枚举桌面上所有窗口  按照EnumWindows的说明来的呢,自带的 那个枚举不完全,老是缺少

功能 枚举桌面窗口句柄()
hwnd
句柄m=""
//Private Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long

dllcall("user32.dll","int","EnumWindows","int",EnumWindowsProc(hwnd,0),"int",0)
调试输出(句柄m)
功能结束
function EnumWindowsProc(hwnd,lParam=0)
    句柄m=句柄m&"|"&hwnd
    return true
endfunction

EnumWindows
函数功能 该函数枚举所有屏幕上的顶层窗口,并将窗口句柄传送给应用程序定义的回调函数。回调函数返回FALSE将停止枚举,否则EnumWindows函数继续到所有顶层窗口枚举完为止。 函数原型 BOOL EnumWindows(WNDENUMPROC lpEnumFunc,LPARAM lParam); 参数: lpEnumFunc:指向一个应用程序定义的回调函数指针,请参看EnumWindowsProc。 lPararm:指定一个传递给回调函数的应用程序定义值。

EnumWindowsProc
函数功能:该函数是一个与EnumWindows或EnumDesktopWindows一起使用的应用程序定义的回调函数。它接收顶层窗口句柄。WNDENUMPROC定义一个指向这个回调函数的指针。EnumWindowsProc是应用程序定义函数名的位置标志符。
函数原型:BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM IParam);
参数:
hwnd:顶层窗口句柄。
lParam:指定在EnumWindows或EnumDesktopWindows中的应用程序定义值。
返回值:为继续列表,回调函数必须返回TRUE;若停止列表,它必须返回FALSE。
备注:应用程序必须通过传递给EnumWindows或EnumDesktopWindows应用程序地址来注册这个回调函数。
回复

使用道具 举报

发表于 2014-10-9 01:49:25 | 显示全部楼层
TC目前不支持 CALLBACK
也就是无法取得某函数指针
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-10-12 15:44:31 | 显示全部楼层
sam7894604 发表于 2014-10-9 01:49
TC目前不支持 CALLBACK
也就是无法取得某函数指针

现在已经有些眉目了   通过com来弄,   正在用VB做相关方面的dll插件,以便来调用  呵呵
回复 支持 反对

使用道具 举报

发表于 2014-10-12 22:16:57 | 显示全部楼层
a837198 发表于 2014-10-12 15:44
现在已经有些眉目了   通过com来弄,   正在用VB做相关方面的dll插件,以便来调用  呵呵 ...

目前TC就有函数指针的API无法使用
其余多半可以纯TC实现...
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-9-28 06:43 , Processed in 0.044008 second(s), 23 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

快速回复 返回顶部 返回列表