Form を「必ず」最前面に移動し、その Form にフォーカスを移動する
// this.Activate() だけでは、うまく Form が前面に移動しない場合がある。
// これは既に前面にある「アプリ」が、これを拒否するからである(windows の仕様)。
// 必ず前面に移動させるには、下記のようにスレッドのアタッチが必要である。
using System.Runtime.InteropServices ; // for DllImport
[DllImport("user32.dll")]
extern static int GetWindowThreadProcessId(IntPtr hWnd, IntPtr ProcessId) ;
[DllImport("user32.dll")]
extern static IntPtr GetForegroundWindow() ;
[DllImport("user32.dll")]
extern static bool AttachThreadInput(int idAttach, int idAttachTo, bool fAttach) ;
void this_activate()
{
// Thread のアタッチ
int fore_thread = GetWindowThreadProcessId(GetForegroundWindow(), IntPtr.Zero) ;
int this_thread = AppDomain.GetCurrentThreadId() ;
AttachThreadInput(this_thread, fore_thread, true) ;
// this をアクティブ
this.Activate() ;
// Thread のデタッチ
AttachThreadInput(this_thread, fore_thread, false) ;
}
トップページ
> 特殊文字とは
> 起動時のパラメータ取得方法
> C#プログラミング文字列を連結する方法
> C#でのファイルの書き込み
> 文字列の分割の方法
> C#のファイルパス名文字列から、ファイル名や拡張子を抜きだす方法
> C#文字列扱いの方法etc
> ダイアログで複数ファイル名を読む方法
> 動的配列の取り方
> チェックリストボックスでチェックされたものを調べる方法
> C#ファイルからの入力
> 文字列の検索方法
> 四捨五入する方法
> 小数点操作のいろいろ
> 型変換による精度保持の方法
> 内部変換誤差のお話
> C#で数値を文字列に変換する方法
> 算術演算 (関数) の記述
> C#ファイルの移動
> C#フォームをアクティブにする方法
> Formを必ず最前面に移動しその Form にフォーカスを移動する
> C#で時間差表示する方法
> Form の多重起動を防ぐ
> Form を最前面に\配置
> Formを自動で閉じる
> VisualStudioでセットアップモジュールを作る方法
> *
> *
> *
> (以下は用語説明文)
> .NET Framework