2

プロセス名を指定してプロセスのメイン ウィンドウのハンドルを取得する JScript のメソッドはありますか? このProcess.MainWindowHandleプロパティは、JScript .NET でのみ機能します。従来の JScript で同様のものを利用できますか?

4

4 に答える 4

0

JScriptとWindowsScriptHostにはこの機能がなく、WMIにもありません。

PowerShellがオプションである場合は、Process.MainWindowHandle前述のプロパティを使用できます。

(Get-Process notepad).MainWindowHandle

それ以外の場合は、この機能を提供するユーティリティ(COMオブジェクト、コマンドラインツールなど)を検索または作成し、スクリプトからこのツールを呼び出す必要があります。


編集:ウィンドウを閉じる必要があります—これはUI自動化タスクです。

Windows Script Hostは、非常に限られたUI自動化機能を提供します。ウィンドウのタイトルがわかっている場合は、AppActivatetoメソッドとSendKeysメソッドを使用してそのウィンドウをアクティブにし、Alt+F4ショートカットを送信してみてください。あなたはこの答えの例を見つけることができます。(コードはVBScriptにありますが、アイデアが得られるはずです。)ただし、このアプローチは信頼できません。

本当にプロセスを強制終了したくない場合、最も簡単な解決策は、サードパーティのUI自動化ツールを使用することです。たとえば、無料のAutoItツールを試すことができます—必要なことを達成できるはずだと思います。


編集2:ウィンドウの終了を記録してみましたか?次のようなスクリプトを取得する必要があります。

Sys.Process("notepad").Window("Notepad", "Untitled - Notepad").Close();

これはあなたが必要なものではありませんか?

于 2010-09-14T11:57:39.307 に答える
0

あるとき、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 ++を使用しました)

于 2010-09-30T09:09:36.790 に答える
0

ネイティブの win32 アプリケーションには、「メイン ウィンドウ」などはありません。プロセスにはウィンドウがまったくない場合もあれば、トップレベルの「メイン」ウィンドウがいくつかある場合もあります。

于 2010-09-17T17:44:19.117 に答える
0

window.parentこれが機能するかどうかはわかりません。未定義になるまでループしてみてください。

何かのようなもの -

var mainWindow = window;
while( mainWindow.parent ) {
    mainWindow = mainWindow.parent;
}

window.topまた、常に一番上のウィンドウを返すようなものもあります。ただし、これがすべてのブラウザーでサポートされているかどうかはわかりません。

于 2010-09-14T11:00:51.580 に答える