怎么得到ToolBar上按钮的句柄!(100分)

  • 主题发起人 主题发起人 pgjeffrey
  • 开始时间 开始时间
P

pgjeffrey

Unregistered / Unconfirmed
GUEST, unregistred user!
怎么控制它们!??谢了先!!
 
FindChildControl
 
amli谢了先,但是我要控制的是其它程序的ToolBar。有没有类似的API呢??
 
循環調用EnumChildWindows
 
function aaa(handle, lparam: Integer): boolean;<br>begin<br>&nbsp; showmessage(inttostr(handle));<br>&nbsp; result := true;<br>end;<br><br>procedure TForm1.Button1Click(Sender: TObject);<br>begin<br>&nbsp; enumchildwindows(toolbar1.handle, @aaa, 0);<br>end;<br><br>没有获得一个句柄,上面的代码有错吗??<br>
 
ToolBar1.Buttons 不就可以访问每个Button了嘛。<br><br>另外ToolButton是light控件,没有句柄的(就像TLabel)。
 
ToolButton没有句柄???哪怎么控制它们???我是说其它程序的ToolButton。
 
呵呵呵,那没看清题目,我说的是delphi中的TToolButton组件是没有句柄的,楼下继续。
 
完全对,<br>delphi中的TToolButton组件没有handle,谁不相信?自己试试看,<br>怎么得到ToolBar上按钮的句柄?<br>答案的:[blue]没有[/blue]
 
//應該明白了吧<br>function EnumFun(hWnd : Thandle; lParam : LongInt): BOOL; Stdcall;<br>var<br>&nbsp; ClassName : array[0..1024] of Char;<br>&nbsp; Control : TControl;<br>begin<br>&nbsp; GetClassName(hWnd, ClassName, 1024);<br>&nbsp; Control := FindControl(hWnd);<br>&nbsp; if Control is TToolBar then ShowMessage(Control.Name);<br>&nbsp; Result := True;//EnumChildWindows(hWnd, @EnumFun, lParam);<br>end;<br><br>procedure TForm1.Button2Click(Sender: TObject);<br>begin<br>&nbsp; EnumChildWindows(Handle, @EnumFun, 0);<br>end;
 
有人答非所问。<br>再补充一点,Windows系统的toolbar (ToolbarWindow32)的按钮也的没有handle的。。。。<br>其它程序的Toolbar我就不清楚(你的其它程序是用什么写的?)
 
VC寫的toolbar可用 GetClassName定<br>當前處理代碼當別論.<br>參考Win32s API Reference
 
to amli<br>&nbsp; &nbsp;那段代码也不能showmessage出toolbutton的name。<br><br>to xuxiaohan<br>&nbsp; toolbutton没有句柄就没有其它的方法控制它们了吗???
 
//Handle這裡的句柄是Form的<br>EnumChildWindows(Handle, @EnumFun, 0);<br>
 
//顯示按鈕名字<br>function EnumFun(hWnd : Thandle; lParam : LongInt): BOOL; Stdcall;<br>var<br>&nbsp;//ClassName : array[0..1024] of Char;<br>&nbsp;Control : TControl;<br>&nbsp;i : Integer;<br>begin<br>&nbsp;//GetClassName(hWnd, ClassName, 1024);<br>&nbsp;Control := FindControl(hWnd);<br>&nbsp;if Control is TToolBar then<br>&nbsp;with Control as TToolBar do<br>&nbsp; &nbsp;for i := 0 to ButtonCount -1 do<br>&nbsp; &nbsp; &nbsp;ShowMessage(Buttons.Name);<br>&nbsp;Result := True;<br>end;
 
amli:<br>&nbsp; 如果是“其它程序”是delphi写的,你的代码可以。<br><br><br>
 
“其它程序”是VC等其它写的怎么办呢?
 
收工啦!
 

Similar threads

回复
0
查看
878
不得闲
回复
0
查看
867
不得闲
回复
0
查看
830
不得闲
后退
顶部