タイトル : Process.GetProcessesの表示順につきまして 投稿日 : 2011/04/27(Wed) 21:25 投稿者 : camputer
今晩は。2回連続で質問させていただきます。 大変恐縮でございますが、どうぞよろしくお願い致します。 プログラム歴10年程度 &VBとVBA歴3年程度、 環境:Win7+VB2008EE でございます。 複数開いているテキストファイル(全てメモ帳)のウィンドウの、 「開いた順番」を知れる方法が無いかなと色々検索いたしております。 Process.GetProcessesで羅列してみましたが、これは何の順番で Processを見つけてきれくれるのでございましょうか?? http://www.atmarkit.co.jp/fdotnet/dotnettips/233enumwin/enumwin.html を参考にさせていただきまして、次のようにコーディングいたしました。 For Each p As Process In Process.GetProcesses() If Not p.MainWindowHandle.Equals(IntPtr.Zero) Then If (p.ProcessName = "notepad") Then MsgBox(p.MainWindowTitle) End If End If Next 正常に動作いたしますが、「ウィンドウを開いた順」でも 「ウィンドウの重なり順(上下)」でもございません。 しかし毎回同じ順番でウィンドウが検出されます。 色々検証いたしましたが、どれも明確なルールに行き着かず 検索いたしましてもなかなか見つからず悩んでおります。 (検証内容は下記のような感じになります。) 何かヒントや思いつかれる事などございましたら アドバイスいただきたくどうぞお願いいたします。 ==【検証内容】============================ 例えば1.txt 2.txt 3.txtの3つのファイルがある際、 ・123の順で開いて上のコードを走らせますと 今の私の環境では、312の順でProcessが表示されました。 ・毎回同じ順で出てきます。 ・秀丸で同様な事をやってみましても、同じ結果でございました。 ・更に別フォルダの2.txt 3.txt を開きますと、 33122の順でProcessが表示されます。 ↑同じファイル名が連続して出てきているので、ファイル名に何か関係するのかな? などとも考えている次第でございますが。。。 とんちんかんな質問かもしれませんが、何か思いつかれる事がございましたら、 どうぞよろしくお願い致します。 |