次の方法で共有


AppActivate 関数

更新 : 2007 年 11 月

既に動作しているアプリケーションをアクティブにします。

Public Overloads Sub AppActivate( _
      ByVal { Title As String | ProcessId As Integer } _
)

パラメータ

  • Title
    アクティブにするアプリケーションのタイトル バーに表示されるタイトルを文字列 (String) 式で指定します。アプリケーションを起動したときアプリケーションに割り当てたタイトルを使用します。

  • ProcessId
    このプロセスに割り当てられる Win32 プロセス ID 番号を表す整数 (Integer) を指定します。Shell 関数 から返された ID を使用します。ただし、ゼロでないことが必要です。

例外

例外の種類

エラー番号

条件

ArgumentException

5

Title または ProcessId が見つかりません。

非構造化エラー処理を使用する Visual Basic 6.0 アプリケーションをアップグレードする場合は、"エラー番号" の列を参照してください(エラー番号を Number プロパティ (Err オブジェクト) と比較することもできます)。ただし、可能であれば、このようなエラー制御は Visual Basic の構造化例外処理の概要 に置き換えることを検討してください。

解説

AppActivate を使用すると、アプリケーションのアクティブなウィンドウにフォーカスを移すことができます。アクティブなウィンドウへのハンドルや参照がない場合もあれば、特定の瞬間にどのウィンドウがアクティブであるかわからない場合さえあります。そのような場合は、Focus メソッドを使用できません。

AppActivate 関数は、指定したアプリケーションやウィンドウにフォーカスを移します。このとき、フォーカスが移っても、指定したウィンドウの状態は変化しません。たとえば、最小化されているウィンドウにフォーカスを移しても、そのウィンドウは最小化されたままです。ユーザーがフォーカスを変更するか、またはウィンドウを閉じると、他のウィンドウへフォーカスが移ります。アプリケーションを起動するには、Shell 関数を使用します。また、ウィンドウ スタイルの設定をする場合にも Shell 関数を使用します。

Title パラメータを使用した場合、AppActivate は大文字小文字を区別せずに比較しますが、使用しない場合はタイトル バーの文字とまったく同じであることが必要です。最初にトップ レベル ウィンドウが検索され、次に子ウィンドウが検索されます。一致するウィンドウが見つからない場合は、ArgumentException がスローされます。

AppActivate は、ウィンドウを持つプロセスに対してだけ使用できます。ほとんどのコンソール アプリケーションはウィンドウを持っていません。つまり、そのようなアプリケーションは AppActivate が検索するプロセスの一覧には含まれません。コンソール アプリケーションから実行する場合、システムはアプリケーションを実行するために別のプロセスを作成し、コンソール プロセスに出力を返します。したがって、現在のプロセス ID を要求すると、コンソール アプリケーションのプロセス ID ではなく、この別のプロセスの ID が返されます。

実行時に、AppActivate 関数は、タイトルが Title に一致する、またはプロセス ID が ProcessId に一致する実行中のアプリケーションをすべてアクティブにします。完全に一致するものが見つからないときは、アプリケーション ウィンドウのタイトル バーの文字列が Title で終わるアプリケーションをアクティブにします。Title に一致するアプリケーション ウィンドウが複数ある場合、AppActivate 関数はその中の 1 つを任意に選択してアクティブにします。

dyz95fhy.alert_note(ja-jp,VS.90).gifメモ :

AppActivate 関数には SafeTopLevelWindows レベルの UIPermission が必要です。ただし、部分的に信頼されている状況でこの許可を使用すると、プログラムの実行に影響を及ぼす場合があります。詳細については、「アクセス許可の要求」および「UIPermission Class」を参照してください。

使用例

AppActivate 関数を使って、アプリケーション ウィンドウをアクティブにする例を次に示します。メモ帳のプロセスが実行中でない場合、この例は ArgumentException をスローします。アプリケーションの実行に Shell プロシージャを使用していますが、指定されたパスにアプリケーションの実行プログラムが保存されていない場合は、アプリケーションを実行することはできません。

Dim notepadID As Integer
' Activate a running Notepad process.
AppActivate("Untitled - Notepad") 
' AppActivate can also use the return value of the Shell function.
' Shell runs a new instance of Notepad.
notepadID = Shell("C:\WINNT\NOTEPAD.EXE", AppWinStyle.NormalFocus)
' Activate the new instance of Notepad.  
AppActivate(notepadID)

スマート デバイス開発者のためのメモ

この関数はサポートされていません。

必要条件

名前空間 : Microsoft.VisualBasic

モジュール : Interaction

アセンブリ : Visual Basic ランタイム ライブラリ (Microsoft.VisualBasic.dll)

参照

参照

Shell 関数

Focus

ArgumentException