- 日時: 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
|