以下代码将一些文本设置为打开的记事本窗口。我的问题是它如何安全工作?
int _tmain(int argc, _TCHAR* argv[])
{
HWND hwnd = FindWindow(_T("Notepad"),_T("Untitled - Notepad"));
if(hwnd!=NULL)
{
wchar_t* pString = L"hi";
HWND hwndEdit = FindWindowEx(hwnd,NULL,_T("Edit"),NULL);
SendMessage(hwndEdit,WM_SETTEXT,0,(LPARAM)pString);
}
return 0;
}
指针“pString”存在于当前进程空间的虚拟内存中,这在notepad.exe的上下文中可能不是有效的内存地址。但奇怪的是它确实正确设置了文本,这意味着不仅指针在notepad.exe 上下文,但它也指向正确的字符串。这是怎么回事?
这是否意味着我们可以有效地使用 SendMessage 作为 IPC 机制?