2重起動防止ルーチン(ウィンドウ名で判定)を作ってみたよ。どうでしょ。
ちゃんとウィンドウ復帰もします。
Celeron650で0.04秒ぐらいかかる。(ソフト10個ぐらい起動)
宣言等は省略
Sub Main
 Ret = EnumWindows(AddressOf fEnumFindProc, 0)
 Load frmMain
 Call CreateWindowEx(0, "STATIC", AppDistinguishID & frmMain.hWnd, &H40000000, 0, 0, 0, 0, frmMain.hWnd, 0, App.hInstance, 0)
End Sub