Можно ли запросить состояние включения / выключения окна с помощью Microsoft JScript? - PullRequest
0 голосов
/ 09 сентября 2011

Можно ли запросить состояние включения / выключения окна с помощью 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 Ответ

1 голос
/ 09 сентября 2011

Ни JScript / WSH, ни WMI не имеют этой функциональности (возможности взаимодействия с GUI в WSH ограничены SendKeys и AppActivate, а WMI вообще не работает с GUI).

Однако, если вы определенно предпочитаете сценарии скомпилированному коду и не возражаете против использования сторонних компонентов или сред сценариев, отличных от WSH, вы можете сделать это.

Например, в AutoIt Сценарий, вы можете проверить состояние включения / выключения окна с помощью функции WinGetState.Вы также можете вызвать эту функцию из JScript через элемент управления AutoIt ActiveX / COM:

// Note: this code is untested
var oAutoIt = new ActiveXObject("AutoItX3.Control");
var state = oAutoIt.WinGetState("MyApp");
var isEnabled = state & 4;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...