プロセス名を指定してプロセスのメイン ウィンドウのハンドルを取得する JScript のメソッドはありますか? このProcess.MainWindowHandle
プロパティは、JScript .NET でのみ機能します。従来の JScript で同様のものを利用できますか?
4 に答える
JScriptとWindowsScriptHostにはこの機能がなく、WMIにもありません。
PowerShellがオプションである場合は、Process.MainWindowHandle
前述のプロパティを使用できます。
(Get-Process notepad).MainWindowHandle
それ以外の場合は、この機能を提供するユーティリティ(COMオブジェクト、コマンドラインツールなど)を検索または作成し、スクリプトからこのツールを呼び出す必要があります。
編集:ウィンドウを閉じる必要があります—これはUI自動化タスクです。
Windows Script Hostは、非常に限られたUI自動化機能を提供します。ウィンドウのタイトルがわかっている場合は、AppActivate
toメソッドとSendKeys
メソッドを使用してそのウィンドウをアクティブにし、Alt+F4ショートカットを送信してみてください。あなたはこの答えの例を見つけることができます。(コードはVBScriptにありますが、アイデアが得られるはずです。)ただし、このアプローチは信頼できません。
本当にプロセスを強制終了したくない場合、最も簡単な解決策は、サードパーティのUI自動化ツールを使用することです。たとえば、無料のAutoItツールを試すことができます—必要なことを達成できるはずだと思います。
編集2:ウィンドウの終了を記録してみましたか?次のようなスクリプトを取得する必要があります。
Sys.Process("notepad").Window("Notepad", "Untitled - Notepad").Close();
これはあなたが必要なものではありませんか?
あるとき、Outlook 用のアドインを作成する必要がありました。私の上司は、Outlook の読み込み時にスプラッシュ スクリーンが表示されることを望んでいます。しかし、Outlook ウィンドウがスプラッシュを超えます。多くの検索の後、 http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=EN-US&k=k FindWindow
%28FINDWINDOW%29%3bk%28TargetFrameworkMoniker-%22.NETFRAMEWORK%2cVERSION%3dV4 を見つけました。 0%22%29%3bk%28DevLang-CSHARP%29&rd=trueこれは役に立ちます . この関数は、ウィンドウ キャプションとウィンドウ クラス名に基づいてウィンドウを検索します。私はそれを p-invoke し、C# から使用しました。JScript を介してこの関数を使用できる場合は、それでうまくいくと思います。lpClassName
(パラメータを見つけるためにSpy ++を使用しました)
ネイティブの win32 アプリケーションには、「メイン ウィンドウ」などはありません。プロセスにはウィンドウがまったくない場合もあれば、トップレベルの「メイン」ウィンドウがいくつかある場合もあります。
window.parent
これが機能するかどうかはわかりません。未定義になるまでループしてみてください。
何かのようなもの -
var mainWindow = window;
while( mainWindow.parent ) {
mainWindow = mainWindow.parent;
}
window.top
また、常に一番上のウィンドウを返すようなものもあります。ただし、これがすべてのブラウザーでサポートされているかどうかはわかりません。