OSDN Git Service

add
authorunknown <kawauchik@users.sourceforge.jp>
Tue, 17 Jan 2012 04:11:24 +0000 (13:11 +0900)
committerunknown <kawauchik@users.sourceforge.jp>
Tue, 17 Jan 2012 04:11:24 +0000 (13:11 +0900)
fusen/MainForm.cs

index bca20a5..78a10fa 100644 (file)
@@ -6,6 +6,8 @@ using System.Drawing;
 using System.Text;
 using System.Windows.Forms;
 using System.IO;
+using System.Linq;
+using System.Runtime.InteropServices;  // for DllImport
 
 namespace fusen
 {
@@ -48,10 +50,27 @@ namespace fusen
             Close();
         }
 
+        [DllImport("user32.dll")]
+        extern static IntPtr GetWindow(IntPtr hWnd, uint uCmd);
+
+        [DllImport("user32.dll")]
+        extern static IntPtr GetForegroundWindow();
+
         private void writeFusen()
         {
+            List<FusenForm> fusenFormList = new List<FusenForm>();
+            const int GW_HWNDNEXT = 2;
+            IntPtr hwnd = GetForegroundWindow();
+            while (hwnd != IntPtr.Zero) {
+                FusenForm f = (FusenForm)this.OwnedForms.FirstOrDefault(e => e.Handle == hwnd);
+                if (f != null)
+                    fusenFormList.Add(f);
+                hwnd = GetWindow(hwnd, GW_HWNDNEXT);
+            }
+
+            fusenFormList.Reverse();
             List<Fusen> fusenList = new List<Fusen>();
-            foreach (FusenForm fusenForm in this.OwnedForms) {
+            foreach (FusenForm fusenForm in fusenFormList) {
                 Fusen fusen = new Fusen();
                 fusen.Text = fusenForm.getMemo();
                 fusen.Left = fusenForm.Left;