tagCANDY CGI VBレスキュー(花ちゃん) - 自フォームをアクティブ(ForegroundWindow)にする(VB.NET) - Visual Basic 6.0 VB2005 VB2010
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ
自フォームをアクティブ(ForegroundWindow)にする(VB.NET)
元に戻る スレッド一覧へ 記事閲覧
このページ内の検索ができます。(AND 検索や OR 検索のような複数のキーワードによる検索はできません。)

自フォームをアクティブ(ForegroundWindow)にする(VB.NET) [No.285の個別表示]
     サンプル投稿用掲示板  VB2005 〜 用トップページ  VB6.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
メンテ

Page: 1 |

 投稿フォーム               スレッド一覧へ
題  名 スレッドをトップへソート
名  前
パスワード (記事メンテ時に使用)
投稿キー (投稿時 投稿キー を入力してください)
コメント

   クッキー保存   
スレッド一覧へ