俺是初学者 请您尽量用朴实的语言哦 :)DWORD dwProcessID;//你的进程号CString g_cStrText;VOID GetWindowHandle(CMy1Dlg *pThis)
{
g_cStrText = "";
EnumWindows( EnumWindowsProc, (LPARAM)NULL);
pThis->SetDlgItemText(IDC_EDIT1, g_cStrText);
}static BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM lParam)
{
DWORD pid = 0; // 取得窗口的进程号
if (!GetWindowThreadProcessId( hwnd, &pid ))
{
return TRUE; // 继续玫举
} // 查找窗口在任务列表中的对应项
if(dwProcessID == pid)
{
CString cStrTmp;
cStrTmp.Format("HWND: %08X\r\n", hwnd);
g_cStrText += cStrTmp;
} return TRUE; //继续玫举
} void CMy1Dlg::OnButton1()
{
GetWindowHandle(this);
}
class CMy1Dlg : public CDialog
{
// ...
public:
CEdit m_Edit;
DWORD m_ProcessID;
};BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
{
CMy1Dlg* dlg = (CMy1Dlg*)lParam;
DWORD pid = 0;
GetWindowThreadProcessId(hwnd, &pid);
if (dlg->m_ProcessID != pid)
return TRUE;
CString text;
text.Format("%08X", hwnd);
dlg->m_Edit.SetWindowText(text);
return FALSE;
}void CMy1Dlg::OnButton1()
{
EnumWindows(EnumWindowsProc, (LPARAM)this);
}
{
g_cStrText = "";
EnumWindows( EnumWindowsProc, (LPARAM)NULL);
pThis->SetDlgItemText(IDC_EDIT1, g_cStrText);
}static BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM lParam)
{
DWORD pid = 0; // 取得窗口的进程号
if (!GetWindowThreadProcessId( hwnd, &pid ))
{
return TRUE; // 继续玫举
} // 查找窗口在任务列表中的对应项
if(dwProcessID == pid)
{
CString cStrTmp;
cStrTmp.Format("HWND: %08X\r\n", hwnd);
g_cStrText += cStrTmp;
} return TRUE; //继续玫举
} void CMy1Dlg::OnButton1()
{
GetWindowHandle(this);
}
class CMy1Dlg : public CDialog
{
// ...
public:
CEdit m_Edit;
DWORD m_ProcessID;
};BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
{
CMy1Dlg* dlg = (CMy1Dlg*)lParam;
DWORD pid = 0;
GetWindowThreadProcessId(hwnd, &pid);
if (dlg->m_ProcessID != pid)
return TRUE;
CString text;
text.Format("%08X", hwnd);
dlg->m_Edit.SetWindowText(text);
return FALSE;
}void CMy1Dlg::OnButton1()
{
EnumWindows(EnumWindowsProc, (LPARAM)this);
}
解决方案 »
- VC如何读取点阵数据为灰度图
- 给一个formview画了个窗口,中文显示为乱码,怎么回事?
- 通过ODBC访问ACCESS,如何实现数据库表与列表视图的数据交换???
- 登陆问题处理 !
- vc++技术内幕(第四版)问题
- 打印报表问题?
- 有人说.NET会取代COM, 对错咱们暂且不论, .NET里有什么机制是类似COM的?
- 别的控件在对话框变化的时候,也的自己动手响应WM_SIZE吗??
- 急救!98下编的socket程序95下不能用?socket函数不成功!
- 请问如何屏蔽系统的网络功能
- vc中基于对话框的应用程序,怎样点击一个按钮显示一幅位图?
- vc2005mfc程序使用附带manifest实现xp风格出现应用程序正常初始化 失败
this->手就是“我的手”
如果你说“我的手”这句话,那就是指你自己的手
如果是你朋友也说“我的手”这句话,虽然都是“我”,但这个“我”是指你的朋友
有一个类:
class A
{
int i;
virtual Add();
int Get();
};
A a;对象,假设有一个A * pA = &a;这里对象a是存储在栈上的,在地址0x12345678处,那就是说pA里面的值=0x12345678,而我们可能会对a中的变量i进行操作,比如付值pA->i = 20;其实操作就可能是根据pA指针取得值0x12345678,然后可能通过偏移量4来取得i的地址,然后付值20,这里之所以有偏移4,是由于类里面有虚函数,其头4个字节应该是个保存虚函数表的指针,如果要更好的明白,可以看看类的对象的内存布局方面的资料。当然,如果这里有另一个对象A aa;存储在0x87654321,那里pA里面的值=0x87654321,以次类推