1

私は VB6 プロジェクトを持っており、自動ログアウト機能を備えたセッション タイマーを実装しています。

私の問題は、モーダル フォームが開かれている場合、このフォームは Forms Collection にないため、このフォームをアンロードするために開いているかどうかがわからないことです。非モーダルフォームでは問題ありません。

誰かアイデアがあれば?開いているすべてのフォーム (非モーダルおよびモーダル) を表示することは可能ですか?

ご回答ありがとうございます

編集:コードスニペット:

フォーム作成 :

Dim FormLoc As New F_Options
FormLoc.Show vbModal

フォーム破壊:

For Each mFrm In Forms
    unload mFrm
next    

For Each mFrm In F_MDIParent.MDIActiveX1.Forms
    unload mFrm
next 

メイン フォームは MDI フォームです。他のフォームを開いて MDI Mainform にドッキングできますが、一部のフォームは「通常」です。

編集 :

私はいくつかのテストを行い、Forms コレクションはプロジェクトに依存しています。このコレクションはアプリケーションに対してグローバルであると考えていましたが、明らかにそうではありませんでした。

メイン プロジェクトからすべてのフォームを閉じたい。別のプロジェクトでモーダル フォームを開くことができます (すべてのアプリケーションで 90 個のプロジェクト)。

4

3 に答える 3

1

閉じていることを確認したいだけの場合は、Windows API 関数を使用することもできます。

Private Declare Function CloseWindow Lib "user32" Alias "CloseWindow" (ByVal hwnd As Long) As Long Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String、ByVal lpWindowName As String) As Long

薄暗い wid as long wid=FindWindow(vbnullstring,"") if wid <> 0 then CloseWindow wid

于 2013-04-10T13:42:23.497 に答える
0

機能する可能性のある1つの代替手段。

do until Screen.ActiveForm is Nothing
    unload Screen.ActiveForm
loop
于 2013-04-05T10:27:09.877 に答える