MAYA MAL查看窗体结构

本文介绍了一种用于查看和分析系统窗口结构的方法,包括查找特定窗口及其子元素,并以树状形式展示出来,适用于系统界面定制和UI学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

查看窗体结构。当想改系统的窗口时。或想参照学习一下时。列出窗口的层级结构看看是不错的。简单功能没写UI。直接调用就行了。
最后更新时间 2013-11-23 07:25:32

//例子
printWindowUI(findWindowChildren(findWindowByTitle("UV Texture Editor")));

//通过窗体的 标签 找 窗体名称
proc string findWindowByTitle( string $windowTitle )
{
  // Default empty string to denote that no matching window was found.
  //
  string $windowUI = "";
  string $allWindows[] = `lsUI -type "window"`;

  for ( $w in $allWindows )
  {
    // Compare the specified title with that queried from each window.
    //
    if ( $windowTitle == `window -q -title $w` )
    {
      // Found it!
      //
      $windowUI = $w;
      break;
    }
  }

  return $windowUI;
}
//显示窗体的子元素
proc string[] findWindowChildrenLayout( string $windowUI )
{
	string $pattern = $windowUI + "*";
	string $controls[] = `lsUI -l -cl`;
	string $child[];

  for ( $ui in $controls )
  {
    if ( `gmatch $ui $pattern` )
    {
		 $child[`size $child`] = $ui;
    }
  }
  return sort($child);
}
//显示窗体的子元素
proc string[] findWindowChildren( string $windowUI )
{
	string $pattern = $windowUI + "*";
	string $controls[] = `lsUI -l -ctl`;
	string $child[];

  for ( $ui in $controls )
  {
    if ( `gmatch $ui $pattern` )
    {
		 $child[`size $child`] = $ui;
    }
  }
  return sort($child);
}
//输出显示
proc int printWindowUI(string $windowAllChildren[])
{
	string $child;
	string $buffer[];
	print("--------------------------------------------------------------------------\n");
	print(`match "^[^\|]*" $windowAllChildren[0]`+" : \n");
	for ($child in $windowAllChildren)
	{
		int $i,$n = `tokenize $child "|" $buffer` - 1;
		for ($i = 0 ;$i < $n ; $i++)
		{
			print("| ");
		}
		print("+ " + `match "[^|]*$" $child` + "\n");
	}
	print("--------------------------------------------------------------------------\n");
	return 1;
}
Spy++ Lite 2.4 Build 20080512 Spy++ Lite是一款强有力的编程辅助工具,对分析窗体结构有独到之处。可以以十六进制和十进制两种不同方式显示窗口句柄等所有数值。本软件还可以简单调节窗口的状态和形为,如是否可见,是否可用,最大化,激活等。除此以外,您还可以把它当作一个截图的小工具来用。:) 下面举两个例子来小试牛刀: 1、激活灰色按钮: 打开任一文件的属性窗口,它的右下角处“应用”按钮都是不可用的(灰色的)。拖动本软件的探测器指针选中该按钮。切换至“消息”标签页,勾选“窗口可用”。看到了吧?“应用”按钮被我们激活了。 2、监视IE上网记录: 用本软件的探测器指针选中IE的地址栏。看到它的窗口类名为Edit;切换至“窗口”标签页,点击“父窗口”标签,使父窗口成为当前窗口;切换到“类”标签页,看到其类名为ComboBox;再依照上步点击,将得到父窗口类名依次是ComboBoxEx32、ReBarWindow32、WorkerW,直到最外层的IEFrame。此时再点击“子窗口列表”按钮,依次双击子窗口,看看能否找到地址栏Edit。窗体结构清楚了,我们就不难用FindWindowEx、SendMessage、GetClassName、GetWindowText等几个API函数来监视上网记录了。 升级日志: 2.2-2.4 增加功能: 1、更换内部控件,引用主题风格; 2、修正细节问题; 3、提供不同编程语言的开源版本。 2.1-2.2 增加功能: 1、去除对对话框控件的依赖; 2、修正进程ID的显示BUG。 2.0-2.1 增加功能: 1、可以直接选中不可用的窗口; 2、子窗口列表; 3、进入多级子窗口并可导出。 1.1-2.0 增加功能: 1、显示窗口ID、进程ID、程序文件路径; 2、窗口样式、扩展样式、类样式并列表给出; 3、消息功能,改变窗口的最大化、最小化、是否可见、是否可用等状态; 4、窗口截图。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

笑虾

多情黯叹痴情癫。情癫苦笑多情难

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值