是否可以使用Microsoft JScript查询窗口的启用/禁用状态?

时间:2011-09-09 14:50:26

标签: javascript wmi

是否可以使用Microsoft JScript查询窗口的启用/禁用状态?

我有这个工作代码

#include <windows.h>
#include <iostream>
#include <string>

BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM lParam)
{
   wchar_t text[80];
   if ( ::GetWindowText( hwnd, text, 80 ) ) {
      if ( std::wstring(text).find(L"MyApp") != std::wstring::npos ) {
         std::wcout << ::IsWindowEnabled( hwnd ) << L"\t" << text << L"\n";
      }
   }
   return TRUE;
}

int main(int, char**)
{
   while(true){
      ::EnumWindows( EnumWindowsProc, 0 );
      ::Sleep(1000);
   }
    return 0;
}

我希望将其转换为JScript脚本(并通过cscript.exe运行)。

使用WMI可能有办法吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

JScript / WSH和WMI都没有此功能(WSH的GUI交互功能仅限于SendKeysAppActivate,而WMI根本不能与GUI一起使用。)

但是,如果你肯定更喜欢使用脚本编译代码而不介意使用第三方组件或WSH以外的脚本环境,那么你可以这样做。

例如,在AutoIt脚本中,您可以使用WinGetState功能检查窗口的启用/禁用状态。您也可以通过AutoIt ActiveX / COM控件从JScript调用此函数:

// Note: this code is untested
var oAutoIt = new ActiveXObject("AutoItX3.Control");
var state = oAutoIt.WinGetState("MyApp");
var isEnabled = state & 4;