当前位置:编程学习 > VB >>

如何得到TOOLbar上某个按钮的句柄,然后给这个按钮发一个点击的消息

各位好
我已经知道TOOLBAR的句柄了,但是我如何得到TOOLbar上某个按钮的句柄,然后用sendmessage给这个按钮发一个点击的消息
请各位直接给代码 谢谢了 搞了一天了 --------------------编程问答-------------------- 不懂,顶一下. --------------------编程问答-------------------- toolbar的按钮没有句柄 --------------------编程问答-------------------- 各位帮忙啊,不要沉没啊 --------------------编程问答-------------------- 如果没有按钮 那么如何给这个按钮发消息啊 --------------------编程问答-------------------- 兄弟们 给点办法啊 :( --------------------编程问答-------------------- Private Const WM_LBUTTONDOWN = &H201
lngControl = FindWindowEx(lngWindow, 0, "Button", "取消")
lngRet = SendMessage(lngControl, WM_LBUTTONDOWN, 0, 0&)
'lngWindow为TOOLbar的句柄
'lngControl为按钮句柄 --------------------编程问答-------------------- 好像,无法得到lngControl ,调式后的值为0 请再帮助 --------------------编程问答-------------------- 请再帮助 --------------------编程问答-------------------- 用spy++查看一下,TOOLBAR的子窗口句柄为0,子窗口列表为空,因此,一般窗口操作不解决问题. --------------------编程问答-------------------- 兄弟们啊,那我该如何做啊,请帮助我啊,一定帮助啊 --------------------编程问答-------------------- 有没有人帮助啊 --------------------编程问答-------------------- 麻烦的很
取得toolbar句柄,然后取得按钮ID ,用sendmessage 发送wm_command 给这个按钮ID,理论上是这样,不过我没有试成功过。
===
下面是dephi写的,据说可以,自己看看

uses CommCtrl, Types; function ToolbarButtonClick( // 模拟点击其他进程的Toolbar按钮  mHandle: THandle; // Toolbar句柄  
mIndex: Integer // 按钮序号 ): Boolean; 
//设计 Zswang 2006-11-13 wjhu111#21cn.com 尊重作者,转贴请注明出处 
var  vRect: TRect;  
vSmallPoint: TSmallPoint;  
vProcessId: DWORD;  
vProcess: THandle;  
vPointer: Pointer;  
vNumberOfBytesRead: Cardinal; 
begin  Result := False;  
if mHandle <= 0 then Exit;  
GetWindowThreadProcessId(mHandle, @vProcessId);  
if vProcessId <= 0 then Exit;  
vProcess := OpenProcess(PROCESS_VM_OPERATION or PROCESS_VM_READ or    PROCESS_VM_WRITE, False, vProcessId);  
vPointer := VirtualAllocEx(vProcess, nil, $1000, MEM_RESERVE or MEM_COMMIT,    PAGE_READWRITE);  
try    SendMessage(mHandle, TB_GETITEMRECT, mIndex, Integer(vPointer));    ReadProcessMemory(vProcess, vPointer, @vRect, SizeOf(TRect),      vNumberOfBytesRead);    if vNumberOfBytesRead <= 0 then Exit;  
finally    VirtualFreeEx(vProcess, vPointer, 0, MEM_RELEASE);    CloseHandle(vProcess);  end;  
vSmallPoint := PointToSmallPoint(CenterPoint(vRect));  
SendMessage(mHandle, WM_LBUTTONDOWN, MK_LBUTTON, Longint(vSmallPoint));  
SendMessage(mHandle, WM_LBUTTONUP, MK_LBUTTON, Longint(vSmallPoint));  
Result := True; 
end; { ToolbarButtonClick }
补充:VB ,  API
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,