tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトル二重起動の処理
記事No1439
投稿日: 2005/03/04(Fri) 14:54
投稿者aki
[OSのVer]:Windows    [VBのVer]:VB.NET  

いつもお世話になっております。
早速ですが質問させてください。

二重起動をしたときに、すでに立ち上がってるアプリケーションを
アクティブにすることは出来ますか?

Dim pn As String = Process.GetCurrentProcess.ProcessName
Dim myProc As New Process

If Process.GetProcessesByName(pn).GetUpperBound(0) > 0 Then
   myProc = Process.GetProcessesByName(pn).GetValue(1)

   ''指定のウインドウをアクティブにする
   SetForegroundWindow(hWnd)  

   Me.Close()
   Exit Sub
End If

上記の処理をフォームのロードイベントに記述しているのですが、
すでに立ち上がってるプログラムがアクティブになりません。

ご教授のほどよろしくお願いいたします。

[ツリー表示へ]
タイトルRe: 二重起動の処理
記事No1440
投稿日: 2005/03/04(Fri) 14:56
投稿者じゃんぬねっと
参照先http://jeanne.wankuma.com/
こんにちは、じゃんぬねっと です。

C# だけど、VB.NET に変換してみてくださーい。
hhttp://jeanne.wankuma.com/tips/process/03-activewindow.html

[ツリー表示へ]
タイトル解決
記事No1441
投稿日: 2005/03/04(Fri) 15:20
投稿者aki
[OSのVer]:Windows    [VBのVer]:VB.NET  
> こんにちは、じゃんぬねっと です。
>
> C# だけど、VB.NET に変換してみてくださーい。
> hhttp://jeanne.wankuma.com/tips/process/03-activewindow.html

ありがとうございます!

Dim hThisProcess As Process = System.Diagnostics.Process.GetCurrentProcess()
Dim hProcesses As Process() = System.Diagnostics.Process.GetProcessesByName
(hThisProcess.ProcessName)
Dim iThisProcessId As Integer = hThisProcess.Id

Dim hProcess As Process
For Each hProcess In hProcesses
     If hProcess.Id <> iThisProcessId Then
        ShowWindow(hProcess.MainWindowHandle.ToInt32, 1)
        SetForegroundWindow(hProcess.MainWindowHandle.ToInt32)
        Return True
     End If
Next

で出来ました。
私のコードはいい加減なプロセスをアクティブにしてたんですね。

早々に応えていただきありがとうございました。
またよろしくお願いいたします。

[ツリー表示へ]