文書番号: 811469 - 最終更新日: 2004年9月7日 - リビジョン: 1.1

Windows XP で 実行時エラー '5' が発生する

すべて展開する | すべて折りたたむ

現象

Windows XP 上で VisualBasic で作成された SetFocus 関数を使用しているアプリケーションを実行した際に、以下のエラーが発生することがあります。
実行時エラー '5'
プロシージャの呼び出し、または引数が不正です。

原因

SetFocus 関数における実行時エラー '5' は、対象となるコントロールが非表示である場合に発生し、Windows XP でウィンドウ マネージャの仕様変更により発生いたします。

詳細

Windows XP のウィンドウ マネージャは、表示状態のウィンドウが一定時間ビジー状態にある場合、自動的にウィンドウを非表示に切り替え、同じ属性を持つ "Ghost Window" を作成します。イベント ハンドラ内においてスリープ状態を長い時間継続した場合や、内部で DoEvents 関数を用いず、オペレーティング システムへ一定時間制御を返さないループを使用した際に、SetFocus 関数でフォーム上にあるコントロールにフォーカスを移した場合は、実際のウィンドウが非表示であるために、エラーとなる場合があります。SetFocus 関数は非表示のコントロール上では成功しないため、このエラー メッセージが通知される原因となります。

回避策

  1. Do Events 関数などを用いて、アプリケーションがビジー状態ではないことをオペレーティング システムに通知することでこの現象を回避できます。
  2. この現象は Windows XP の仕様変更に起因するため、アプリケーション互換モードを使用することにより回避できます。

    実行手順
    1. 互換モードを適用したいアプリケーションを右クリックして、プロパティを選択します。
    2. 互換性タブを選択し、互換モードの "互換モードでこのプログラムを実行する"のチェックボックスにチェックを入れ、Windows 2000 を選択します。
    3. OK ボタンをクリックします。

関連情報

Windows XP のウインドウマネージャに関する仕様に関しては、以下の弊社 Web ページをご参照ください。

About Messages and Message Queues (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/WinUI/WindowsUserInterface/Windowing/MessagesandMessageQueues/AboutMessagesandMessageQueues.asp?frame=true)

この資料は以下の製品について記述したものです。
  • Microsoft Windows XP Professional
  • Microsoft Windows XP Home Edition
  • Microsoft Visual Basic for Applications 5.0
  • Microsoft Visual Basic for Applications 6.0
キーワード:?
kbtshoot KB811469
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"