web-dev-qa-db-ja.com

vbスクリプトを使用してウィンドウを最大化、復元、または最小化するにはどうすればよいですか?

(キーボードショートカットでトリガーされたときに)アクティブウィンドウを最大化、最小化、または復元する個別の.vbsファイルを作成できる必要があります。

別のパッケージをダウンロードしてインストールせずに(ここでは許可されていません)、これを行うにはどうすればよいですか?.

9
Keng

VBScriptおよびWindowsScript Hostは、ウィンドウを最大化/最小化/復元するための組み込み関数を提供していません。サードパーティのツールがない場合、唯一のオプションは SendKeys を使用して、ウィンドウのシステムメニューの対応するコマンドのショートカットをキーボードでシミュレートすることです。

  • アクティブウィンドウを最大化するために、 Alt+SpaceBar、 x ショートカット:

    Set oShell = CreateObject("WScript.Shell")
    oShell.SendKeys "% x"
    
  • アクティブウィンドウを最小化するには、 Alt+SpaceBar、 n

    Set oShell = CreateObject("WScript.Shell")
    oShell.SendKeys "% n"
    
  • アクティブなウィンドウを復元するには、 Alt+SpaceBar、 r

    Set oShell = CreateObject("WScript.Shell")
    oShell.SendKeys "% r"
    

(このコードは、Maximize/Minimize/Restoreコマンドの名前がローカライズされているため、他のショートカットがある英語以外のWindowsバージョンでは機能しないことに注意してください。)

18
Helen

SendKeysが私のコンピューターで機能していませんでした。スペイン語と英語のキーボードを使用したスペイン語ネイティブ。私はこれを行い、コードを命令として使用し、Excelウィンドウを最大化するように努めました。 .Sleepを入れて目視で確認しました。

objExcel.SendKeys"% x"
objExcel.Visible = True
objExcel.SendKeys"% x"

WScript.Sleep 2000
2
Abraham

トピックは古いです。しかし、私はなんとか言語に依存しない解決策を見つけることができました。 SendKeys基本的に、矢印キーやEnterキーなど、あらゆるキーをアプリケーションに送信できます。したがって、特定の文字(x、r、n)なしでこれらのアクションをエミュレートできます。これが実際の例です:

Dim oShell : Set oShell = CreateObject("WScript.Shell")
oShell.SendKeys("% {DOWN}{DOWN}{DOWN}{DOWN}{ENTER}")   'Maximize
'...
oShell.SendKeys("% {ENTER}")   'Restore
'...
oShell.SendKeys("% {DOWN}{DOWN}{DOWN}{ENTER}")   'Minimize
0
Dmitry Babich

ウィンドウを最大化するには、次のコードが機能します。

Application.SendKeys "%{ }"
Application.Wait (Now + TimeValue("00:00:02"))
Application.SendKeys "x"
0
Bisweswar Swain