tagCANDY CGI VBレスキュー(花ちゃん) - VBレスキュー(花ちゃん)の投稿サンプル用掲示板 - Visual Basic 6.0 VB2005 VB2010
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ
VBレスキュー(花ちゃん)の投稿サンプル用掲示板
     サンプル投稿用掲示板  VB2005 〜 用トップページ  VB6.0 用 トップページ
自フォームをアクティブ(ForegroundWindow)にする(VB.NET) ( No.0 )  [親スレッドへ]
日時: 2011/03/22 14:29
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[自アプリ関係][フォーム][]                                          *
* キーワード:前面,アクティブ,フォーカス,隠れる,                                  *
***********************************************************************************
タイトル : スプラッシュスクリーンで最前面にならない
記 事 No : 10171
投 稿 日 : 2010/06/30(Wed) 11:50
元質問者 : ひろこ  

スプラッシュスクリーンを使用するとメインフォームが最前面に表示されません。
エクスプローラーで出来上がったexeを起動するとエクスプローラーの後ろに
画面が表示されてしまいます。Me.Activateにしてもダメでした。

VB2005の開発環境をを開いたままエクスプローラでダブルクリックでexeを起動すると
最前面に表示してうまくいくのですが
VB2005の開発環境を閉じてエクスプローラでダブルクリックでexeを起動すると
エクスプローラの後ろに表示されてしまいます。

-----------------------------------------------------------------------------------
記事No : 10174
投稿日 : 2010/07/01(Thu) 22:25
回答者 : YAS  
-----------------------------------------------------------------------------------
下のようにして,Me.Activate2()としたらどうでしょう?

Imports System.Runtime.InteropServices

Public Class Form1

<DllImport("user32.dll")> Public Shared Function AttachThreadInput( _
   ByVal idAttach As Integer, _
   ByVal idAttachTo As Integer, _
   ByVal fAttach As Boolean) As Boolean
End Function
<DllImport("user32.dll")> Public Shared Function GetForegroundWindow() As IntPtr
End Function
<DllImport("user32.dll")> Public Shared Function GetWindowThreadProcessId( _
   ByVal hwnd As IntPtr, _
   ByRef lpdwProcessId As Integer) As Integer
End Function

Private Sub Activate2()
   Dim targetThreadProcessId As Integer = GetWindowThreadProcessId( _
                                    GetForegroundWindow(), IntPtr.Zero.ToInt32)
   Dim ThreadProcessId As Integer = GetWindowThreadProcessId(Me.Handle, 0&)
   AttachThreadInput(ThreadProcessId, targetThreadProcessId, True)
   Me.Activate()
   AttachThreadInput(ThreadProcessId, targetThreadProcessId, False)
End Sub

Private Sub Form1_Load( ByVal sender As System.Object,  _
            ByVal e As System.EventArgs) Handles MyBase.Load
   Me.Activate2
End Sub

End Class


------------------------------------------------------------------------------------
場合によっては、下記の方法も試してみてください。 ---- by 花ちゃん -----

http://hanatyan.sakura.ne.jp/vbnetbbs/wforum.cgi?mode=allread&no=10196&page=30



 [スレッド一覧へ] [親スレッドへ]