下記のアプリで表示されているウィンドウのハンドルを列挙したのですが、win32APIのGetWindow関数のGW_HWNDNEXTで取得したハンドルがその中に存在しません(GetWindow関数のGW_HWNDNEXTで取得したハンドル名は328796でした)。
これはなぜでしょうか?解決する方法はありますか?
C#
1//ウィンドウのハンドル名とプロセス名を列挙するプログラム 2foreach (System.Diagnostics.Process p in System.Diagnostics.Process.GetProcesses()) 3{ 4 if (p.MainWindowTitle.Length != 0) 5 { 6 Console.WriteLine("ハンドル名:" + p.MainWindowHandle+" プロセス名:" + p.ProcessName); 7 } 8} 9/* 10ハンドル名:16058892 プロセス名:Video.UI 11ハンドル名:788730 プロセス名:WinStore.App 12ハンドル名:このアプリの名前のウィンドウハンドル プロセス名:※このアプリの名前 13ハンドル名:66872 プロセス名:chrome 14ハンドル名:1704738 プロセス名:WWAHost 15ハンドル名:3410750 プロセス名:SystemSettings 16ハンドル名:10619546 プロセス名:devenv 17ハンドル名:197122 プロセス名:Evernote 18*/
C#
1//アプリ自身のウィンドウハンドル=myHandleの一個手前のウィンドウのハンドルを取得 2 IntPtr myHandle = ((HwndSource)HwndSource.FromVisual(this)).Handle; 3 IntPtr nextHandle = GetWindow(myHandle, 2);//GW_HWNDNEXT 4 Console.WriteLine("handle="+ nextHandle); 5/* 6328796 7*/
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。