如何得到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