是否可以使用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可能有办法吗?
谢谢。
答案 0 :(得分:1)
JScript / WSH和WMI都没有此功能(WSH的GUI交互功能仅限于SendKeys
和AppActivate
,而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;