是否可以在不同但当前正在执行的进程中调用函数?

时间:2012-03-19 18:38:22

标签: windows winapi automation build-automation ipc

我有一位朋友在一家公司工作,该公司为其开发人员提供了相当差的支持(在Joel Test上得分为1/12)。

他们的构建过程非常严格锁定,根据项目的大小,可能需要40多次(x2)鼠标点击才能部署。所以我想,“嘿,为什么不使用win32api自动化点击?” (特别是使用Python)。我有一个真正漂亮的工具,除了一个问题外,工作得很好 - 他们使用的工具有一个导航窗格,可能打开也可能不打开。

您可以通过按下按钮来打开和关闭它,但我不确定如何确保它是打开还是关闭。它与构建过程无关 - 唯一的问题是它会改变鼠标需要在屏幕上单击的位置,具体取决于其打开状态。该应用程序是用.NET编写的,它公开了一个函数调用,应用程序可以使用它来切换面板,所以我一直在寻找想法,到目前为止我有两个:

  • 通过调试器附加到进程并以某种方式执行函数调用。
  • 在面板标题栏的位置截取屏幕截图(我已通过win32 API获取屏幕截图,无论面板是否隐藏,都不会发生变化。)

有没有更简单的方法来确定这个面板的状态?除了常规帐户之外,开发人员还在他们的计算机上获得管理员帐户,因此我可以接受需要管理员访问权限的想法,但我认为这不是必要的吗?

更新 看起来有一个按钮可以关闭窗格。在UIAVerify中,某些东西显示为“文本”“导航”“btnClose”。它说它的AutomationId是btnClose,但它是一个ControlType.Text

1 个答案:

答案 0 :(得分:0)

这个面板是由什么技术构建的?它是标准的GDI还是WPF?如果它的GDI,它应该有一个HWND。您应该能够通过类名或窗口标题找到此HWND。一旦你有了HWND,你就可以得到它的宽度。 如果用WPF构建,呃,我不知道,但是Snoop做了这种事情,所以我知道它可能。