No.1ベストアンサー
- 回答日時:
どうやって起動しているのか分からないのですが、とりあえずShellでEXEを直接実行してみました。
(たぶん違うと思うんですけど、サンプルコードに都合がいい方法がShellだったので・・。)
起動したIEのプロセスIDが分かってる場合のサンプルです。
フォームにボタンを1つ貼り付けて、下のコードをコピペしてして下さい。
-----------------------------------
Private Sub Command1_Click()
Static pID As Long
If Not ChkIEStart(pID) Then
pID = Shell("C:\Program Files\Internet Explorer\IEXPLORE.EXE")
End If
End Sub
Public Function ChkIEStart(chkProcessID As Long) As Boolean
Dim strSQL As String
Dim objWk As Object
Dim objXlsProc As Object
strSQL = "SELECT Handle FROM Win32_Process WHERE Name = 'IEXPLORE.EXE' AND ProcessID = " & chkProcessID
Set objWk = GetObject("winmgmts:").ExecQuery(strSQL)
ChkIEStart = (objWk.Count > 0)
End Function
No.2
- 回答日時:
こんばんは。
ちょっと試してみました。最初、単なる二重起動だと思っていたら、ボタンの起動に対しての二重起動抑止だと分かって、ちょっとまごついてしまいました。
>それ以外の場所から起動されたIEが上がっていてた場合はボタンを押せばIEが起動するといった方法
この意味が、既に、ボタンから、IEが起動されていたら、他の場所で上がっていても、同じくボタンからの起動は抑止されることになります。他の場所から、IE起動しても、ボタンから一度も起動されていないのなら、起動できることになります。
Private Declare Function OpenProcess Lib "kernel32.dll" ( _
ByVal dwDesiredAccess As Long, _
ByVal bInheritHandle As Long, _
ByVal dwProcessId As Long) As Long
Private Const PROCESS_QUERY_INFORMATION As Long = (&H400)
Private Declare Function GetExitCodeProcess Lib "kernel32.dll" ( _
ByVal hProcess As Long, _
ByRef lpExitCode As Long) As Long
Private Const STATUS_PENDING As Long = &H103
Private Const STILL_ACTIVE As Long = STATUS_PENDING
Private Sub Command1_Click()
Dim Id As Long
Static lngProcess As Long
Dim lngExitCode As Long
Dim rc As Long
rc = GetExitCodeProcess(lngProcess, lngExitCode)
If lngExitCode = STILL_ACTIVE Then
MsgBox "こちらからは、二重起動になります。"
Exit Sub
End If
Id = Shell("C:\Program Files\Internet Explorer\IEXPLORE.EXE", vbNormalFocus)
lngProcess = OpenProcess(PROCESS_QUERY_INFORMATION, 1, Id)
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript [Java] Edgeでのアドレスバー非表示について 3 2022/04/20 17:51
- Chrome(クローム) グーグルクロムをマイクロソフト・エッジに切り替える方法 2 2022/06/20 10:08
- InternetExplorer(IE) Microsoft edgeのIEモードを解除したいのですが。 3 2023/04/09 13:51
- Excel(エクセル) 【エクセルマクロ】既に開いているIEの、サイズや表示位置を変更するには 4 2022/12/01 22:57
- 株式市場・株価 HyperSBI 余力確認 ブラウザ 2 2022/06/19 09:17
- フリーソフト TARGET frontier JVから起動するブラウザを変えたい 1 2022/10/09 12:08
- Windows 10 Windows10環境にてWindowsUpdate後の再起動を完全に抑止する方法はございますか? 10 2023/06/16 09:57
- ドライブ・ストレージ HDDとSSDどちらがいいか 7 2023/07/27 19:58
- Windows 10 Windows10デスクトップパソコン再起動するといくら待ってもがならず起動の黒い画面で止まってしま 5 2023/04/06 10:23
- Windows 10 Windows10の再起動について 3 2022/09/21 21:30
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
タスクスケジューラでPerlが動...
-
フォームの最前面が効かない
-
アウトルックが起動しているか...
-
VBAでOutlookを終了させたい Ex...
-
EXCEL VBAから他アプリケーショ...
-
Windows上のプログラム。「予め...
-
VBSから別のVBS起動するとき変...
-
MSペイントを画像ファイル名を...
-
コマンドボタンをクリックする...
-
Process.Startで起動したアプリ...
-
C++Builderで、他のソフトとの連携
-
Javaアプレットを起動するJREの...
-
IEの2重起動抑止
-
vba 時間の引き算 例えば 15:00...
-
Visual Studio 「AnyCpu」について
-
Designer.vbは直接コードをいじ...
-
C++初心者です。 debug asserti...
-
VB.Net リビルド 意味不明なメ...
-
Visual Basicでの平方関数について
-
「読み込み違反」が起きたとき...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
アウトルックが起動しているか...
-
VBAでOutlookを終了させたい Ex...
-
VBで実行中のEXEファイルの情報...
-
Process.Startで起動したアプリ...
-
Windows上のプログラム。「予め...
-
VBSから別のVBS起動するとき変...
-
EXCEL VBAから他アプリケーショ...
-
VBSで起動したアプリが前面表示...
-
分かる人は簡単なのだろうが、v...
-
別アプリの起動、終了について
-
VBAでSeleniumからChromeを起動...
-
VB6で呼び出し元の情報を取得す...
-
ACCESS VBAで別のACCESS(mdb)を...
-
フォームの最前面が効かない
-
exeファイルを実行するとすぐに...
-
実行ファイルへのドラッグ&ド...
-
「FindWindow」、ウィンドウハ...
-
MSDOS(バッチファイル)でプロセ...
-
C# 他のアプリケーションを優先...
-
QueryPerformanceCounter の使...
おすすめ情報