• ベストアンサー

IEの2重起動抑止

VBでのシステム開発でIEを起動するのに2重起動を抑止するようにしなければなりません。また、そのボタンから起動されたIEのみ2重起動抑止の対象とし、それ以外の場所から起動されたIEが上がっていてた場合はボタンを押せばIEが起動するといった方法がどうしたらいいのかわかりません。ご存知の方がいたら教えてください。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答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

その他の回答 (1)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答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