using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Da
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace WindowsApplication2
{
public partial class Form2 : Form
{
[DllImp
public static extern int GetClassName(IntPtr hWnd, out STRINGBUFFER ClassName, int nMaxCount);
[DllImp
public static extern bool IsWindowVisible(IntPtr hWnd);
[DllImp
public static extern int EnumChildWindows(IntPtr hWndParent, EnumWindowsProc ewp, int lParam);
[DllImp
public static extern int SendMessage(IntPtr hwnd, int wMsg, int wParam, StringBuilder lParam);
[DllImp
public static extern int EnumWindows(EnumWindowsProc ewp, int lParam);
public delegate bool EnumWindowsProc(IntPtr p_Handle, int p_Param);
private List<string> m_ViewDirectoryPath = new List<string>();
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
public struct STRINGBUFFER
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
public string szText;
}
private bool NetEnumWindows(IntPtr p_Handle, int p_Param)
{
if (!IsWindowVisible(p_Handle)) return true;
STRINGBUFFER _ClassName = new STRINGBUFFER();
GetClassName(p_Handle, out _ClassName, 256);
if (_ClassName.szText.Trim() == "CabinetWClass")
{
EnumWindowsProc _EunmControl = new EnumWindowsProc(NetEnumControl);
EnumChildWindows(p_Handle, _EunmControl, 0);
}
return true;
}
private bool NetEnumControl(IntPtr p_Handle, int p_Param)
{
STRINGBUFFER _ClassName = new STRINGBUFFER();
GetClassName(p_Handle, out _ClassName, 256);
if (_ClassName.szText == "Edit")
{
StringBuilder _TextStringA = new StringBuilder(1024);
SendMessage(p_Handle, 0x000D, 1024, _TextStringA);
m_ViewDirectoryPath.Add(_TextStringA.ToString());
}
return true;
}
public Form2()
{
InitializeComponent();
}
private void Form2_Load(object sender, EventArgs e)
{
EnumWindowsProc _EunmWindows = new EnumWindowsProc(NetEnumWindows);
EnumWindows(_EunmWindows, 0);
for (int i = 0; i != m_ViewDirectoryPath.Count; i++)
{
MessageBox.Show(m_ViewDirectoryPath[i]);
}
}
private void button1_Click(object sender, EventArgs e)
{
// string path = @"c:\Program Files";
// System.Diagnostics.Process.Start("explorer.exe", path);
}
}
}