5

Accessウィンドウを非表示にしてデスクトップにフォームを表示し、他のアプリケーションと簡単に並べて配置できるように、Microsoft AccessをメインのAccessウィンドウから「エスケープ」しようとしています。

最初に、Access 独自の Form.PopUp プロパティを使用するコード サンプルをいくつか見つけましたが、これは実行時に設定できず、デザイン ビューでのみ設定できます。これは私がやろうとしていることを達成しているように見えますが、2 つの欠点があります。

  1. デザイン ビューと通常のビューを切り替えるには、その間にウィンドウを「閉じる」必要があります。特に保存されていない新しいレコードを作成するために使用されるため、現在の状態を維持するためにウィンドウを開いたままにしておきます。

  2. メインのフォームから他のフォームを開きたいのですが、それらも「ポップアップ」として設定されていない限り、このアプローチではうまく機能しないようです。しかし、これらもデザイン ビューなどに配置する必要があるため、これは面倒です。また、2 つのポップアップ ウィンドウを簡単に切り替えることができるかどうかもわかりません。

次に、必要なことを実行しているように見える SetParent という API 関数を見つけました。次のコマンド (VBA 構文) を使用しました。

SetParent ShowForm.hWnd
ShowWindow hWndAccessApp, SW_HIDE
ShowWindow ShowForm.hWnd, SW_SHOWNORMAL

しかし、私は2つの問題に遭遇しました(おそらく関連しています:

  1. ウィンドウはかなり反応が悪いように見えました (たとえば、入力できず、ボタンをクリックしても機能しないようでした)。

  2. ALT + TAB を実行すると、BSOD が発生しました。

    BugCheck 1000008E, {c0000005, 9e3573f5, 88d9da10, 0}
    Probably caused by : win32k.sys ( win32k!xxxNextWindow+3a6 )
    at win32k!EngLineTo+1a641
    

メイン アクセス ウィンドウの外にある他のアクセス フォームを呼び出して表示できる、アクセス ウィンドウのないフォームを作成できるようにする他の方法はありますか?

SetParent API ドキュメントで、UI 状態の変更とウィンドウ スタイルの変更を行う必要がある他にいくつかの作業があることに気付きましたが、それらを行うための適切な方法が見つかりません。これを行うと、BSOD と応答しない問題は解決しますか?

アイデアをありがとう!

4

3 に答える 3