vc++ 向另一程序窗口的编辑框写入内容 vc++ 向另一程序窗口的编辑框写入内容vc++ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你直接向编辑框所在的主窗口发送自定义消息,消息的LPARAM传(LPARAM)pStr,在消息的处理函数当中::SetWindowText 对于其他进程内的子窗口的edit,SetWindowText是无效的,因为新标题在本进程内,无法跨进程传输。方案有三:1、注入法,在远程进程开辟一块内存VirtualAllocEx,写入新标题WriteProcessMemory,发消息WM_SETTEXT即可2、模拟输入法,将新标题拆成char,用WM_CHAR消息一个一个的发送过去3、剪贴板法,将新标题复制到剪贴板,然后发送WM_PASTE消息 "SetWindowText(Get)" 系统经过特殊处理 可以 跨进程。 要是能通过SetWindowText,getWindowText,那真是见鬼了,终于有一个同说法的。 postmessage就可以吧 发不同进程吧 是sendmessage可以发不同进程吧 使用 :::SendMessage(hWnd, WM_SETTEXT, NULL, (LPARAM)文本内容);可以 跨进程的 同意楼上的,sendmessage是可以跨进程的。 获取编辑框句柄的代码:HWND CMainDlg::MouseGetWindow(){ POINT pnt; RECT rc; HWND DeskHwnd = ::GetDesktopWindow(); //取得桌面句柄 HDC DeskDC = ::GetWindowDC(DeskHwnd); //取得桌面设备场景 int oldRop2 = SetROP2(DeskDC, R2_NOTXORPEN); ::GetCursorPos(&pnt); //取得鼠标坐标 HWND UnHwnd = ::WindowFromPoint(pnt) ; //取得鼠标指针处窗口句柄 HWND hwndResuult = UnHwnd; HWND grayHwnd = ::GetWindow(hwndResuult, GW_CHILD); //获得g_hWnd的第一个子窗口句柄 RECT tempRc; BOOL bFind=FALSE; while (grayHwnd) { ::GetWindowRect(grayHwnd, &tempRc); if(::PtInRect(&tempRc,pnt)) { bFind = TRUE; break; } else grayHwnd = ::GetWindow(grayHwnd, GW_HWNDNEXT); }//while end if(bFind == TRUE) { bFind= FALSE; hwndResuult = grayHwnd; } else ;//Wnd=UnHwnd ::GetWindowRect(hwndResuult, &rc); //'获得窗口矩形 if( rc.left < 0 ) rc.left = 0; if (rc.top < 0 ) rc.top = 0; HPEN newPen = ::CreatePen(0, 3, RGB(125,0,125)); //建立新画笔,载入DeskDC HGDIOBJ oldPen = ::SelectObject(DeskDC, newPen); ::Rectangle(DeskDC, rc.left, rc.top, rc.right, rc.bottom); //在指示窗口周围显示闪烁矩形 Sleep(400); //设置闪烁时间间隔 ::Rectangle( DeskDC, rc.left, rc.top, rc.right, rc.bottom); ::SetROP2(DeskDC, oldRop2); ::SelectObject( DeskDC, oldPen); ::DeleteObject(newPen); ::ReleaseDC( DeskHwnd, DeskDC); DeskDC = NULL; return hwndResuult;} 以下的操作 不在 一个 进程 无效: ::GetWindowRect(hwndResuult, &rc); //'获得窗口矩形 if( rc.left < 0 ) rc.left = 0; if (rc.top < 0 ) rc.top = 0; HPEN newPen = ::CreatePen(0, 3, RGB(125,0,125)); //建立新画笔,载入DeskDC HGDIOBJ oldPen = ::SelectObject(DeskDC, newPen); ::Rectangle(DeskDC, rc.left, rc.top, rc.right, rc.bottom); //在指示窗口周围显示闪烁矩形 Sleep(400); //设置闪烁时间间隔 ::Rectangle( DeskDC, rc.left, rc.top, rc.right, rc.bottom); ::SetROP2(DeskDC, oldRop2); ::SelectObject( DeskDC, oldPen); ::DeleteObject(newPen); ::ReleaseDC( DeskHwnd, DeskDC); DeskDC = NULL; 回复楼上: 这段代码对获取窗口句柄没有作用,只是为了让抓取的窗口边框闪烁显示,就像spy++那样。 vc控制Stereoscopic Player播放器问题 求MFC入门教程 散分啦, TRACE短码 遇到的Assert错误!winfrm.cpp 1177行 【高分求解一个问题】不管是高手低手,能解决了问题的就是好手,本人就把分奉上。 请问:在MFC编程中,有个函数提示框,在没有打右反括号前,都会有提示,如果没有提示有,有没有其他方法调用出来 请问这个文件如何读取? 做界面是不是基本都用MFC? vector与变长二维数组问题 这样的if语句该怎么改? 在MFC项目中做一个监控视频的播放器,传上来的是H264格式的视频流,想知道怎么对其解码和播放 MFC图像在内存的操作
:::SendMessage(hWnd, WM_SETTEXT, NULL, (LPARAM)文本内容);
可以 跨进程的
获取编辑框句柄的代码:
HWND CMainDlg::MouseGetWindow()
{
POINT pnt;
RECT rc; HWND DeskHwnd = ::GetDesktopWindow(); //取得桌面句柄
HDC DeskDC = ::GetWindowDC(DeskHwnd); //取得桌面设备场景
int oldRop2 = SetROP2(DeskDC, R2_NOTXORPEN);
::GetCursorPos(&pnt); //取得鼠标坐标
HWND UnHwnd = ::WindowFromPoint(pnt) ; //取得鼠标指针处窗口句柄
HWND hwndResuult = UnHwnd;
HWND grayHwnd = ::GetWindow(hwndResuult, GW_CHILD); //获得g_hWnd的第一个子窗口句柄
RECT tempRc;
BOOL bFind=FALSE;
while (grayHwnd)
{
::GetWindowRect(grayHwnd, &tempRc); if(::PtInRect(&tempRc,pnt))
{
bFind = TRUE;
break;
}
else
grayHwnd = ::GetWindow(grayHwnd, GW_HWNDNEXT);
}//while end if(bFind == TRUE)
{
bFind= FALSE;
hwndResuult = grayHwnd;
}
else
;//Wnd=UnHwnd
::GetWindowRect(hwndResuult, &rc); //'获得窗口矩形
if( rc.left < 0 ) rc.left = 0;
if (rc.top < 0 ) rc.top = 0; HPEN newPen = ::CreatePen(0, 3, RGB(125,0,125)); //建立新画笔,载入DeskDC
HGDIOBJ oldPen = ::SelectObject(DeskDC, newPen);
::Rectangle(DeskDC, rc.left, rc.top, rc.right, rc.bottom); //在指示窗口周围显示闪烁矩形
Sleep(400); //设置闪烁时间间隔
::Rectangle( DeskDC, rc.left, rc.top, rc.right, rc.bottom);
::SetROP2(DeskDC, oldRop2);
::SelectObject( DeskDC, oldPen);
::DeleteObject(newPen);
::ReleaseDC( DeskHwnd, DeskDC);
DeskDC = NULL; return hwndResuult;
}
::GetWindowRect(hwndResuult, &rc); //'获得窗口矩形
if( rc.left < 0 ) rc.left = 0;
if (rc.top < 0 ) rc.top = 0;
HPEN newPen = ::CreatePen(0, 3, RGB(125,0,125)); //建立新画笔,载入DeskDC
HGDIOBJ oldPen = ::SelectObject(DeskDC, newPen);
::Rectangle(DeskDC, rc.left, rc.top, rc.right, rc.bottom); //在指示窗口周围显示闪烁矩形
Sleep(400); //设置闪烁时间间隔
::Rectangle( DeskDC, rc.left, rc.top, rc.right, rc.bottom);
::SetROP2(DeskDC, oldRop2);
::SelectObject( DeskDC, oldPen);
::DeleteObject(newPen);
::ReleaseDC( DeskHwnd, DeskDC);
DeskDC = NULL;
这段代码对获取窗口句柄没有作用,只是为了让抓取的窗口边框闪烁显示,就像spy++那样。