TC官方合作论坛

标题: dllcall功能 如何调用EnumWindows [打印本页]

作者: a837198    时间: 2014-10-8 19:24
标题: dllcall功能 如何调用EnumWindows
就是枚举桌面上所有窗口  按照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应用程序地址来注册这个回调函数。

作者: sam7894604    时间: 2014-10-9 01:49
TC目前不支持 CALLBACK
也就是无法取得某函数指针
作者: a837198    时间: 2014-10-12 15:44
sam7894604 发表于 2014-10-9 01:49
TC目前不支持 CALLBACK
也就是无法取得某函数指针

现在已经有些眉目了   通过com来弄,   正在用VB做相关方面的dll插件,以便来调用  呵呵
作者: sam7894604    时间: 2014-10-12 22:16
a837198 发表于 2014-10-12 15:44
现在已经有些眉目了   通过com来弄,   正在用VB做相关方面的dll插件,以便来调用  呵呵 ...

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




欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/) Powered by Discuz! X3.1