比如说有一个程序的窗口,内含一个文本框和一个确定按钮,我在自己的程序中如何能改变其该文本框内的内容并且点击确定按钮?
解决方案 »
- VC学了一个月 快学成傻子了
- 请问在eventselect模型中,主动关闭的套接字大家是如何从数组中删除的?
- 关于异步socketFD_READ的问题请大侠们指教一二(这可是我所有的分数了)
- 请教:快捷图标 和 快捷键
- 救急!附程序!我想在显示的图象中用矩形框选取一块图像,然后返回这一块图像的句柄!我的程序不知道错在哪儿?
- MFC创建的dll中,请问哪种能被显式调用并且可以用使用MFC类库
- String a,CString b,char* c, char d[]互相怎么转化
- 在哪里初始化?
- 如何使用ado实现执行具有多个参数的,并且含有返回参数的存储过程
- CtreeCtrl怎么实现只能单选
- 注册表编程的问题???请教!!
- 另一个问题:打开一个文件夹,选择*.bmp的图片,能显示并能放大缩小(急急急)
如:你的控件变量.SetWindowText("你想改变的内容");
ByVal wMsg As Integer, _
ByVal wParam As Integer, _
ByVal lParam As Integer) As Integer
外部程序窗口->GetDlgItem(文本框ID/按钮ID)->SetWindowText("你想改变的内容");
中的“文本框ID”你不是不知道吗,反正它是整数,我的做法就是从100开始一直遍历到50000(范围随你了),执行SetWindowText后再GetWindowText,如果发现更改后内容和你的预期一致,大概就找对了,把这个ID记录下来吧。文本框的ID是固定的,找到了就是你的了。你要注意遍历过程中会发生非法访问,那就分段遍历ID吧。我以前用这方法的时候,找到了好几个ID,我也分不清是哪个,但是都能达到预期目的,奶奶的给我玩真假美猴王!看你的了,搞定了回来说一声,我也想知道怎么分辨到底是哪个ID。
{
char sChildName[MAX_LINELENGTH];
::GetClassName(hwnd,sChildName,MAX_LINELENGTH-1);
file://处理编辑控件,登录窗口中一般只有两个编辑框,可用MicroSoft Spy++查看窗口的
file://各个子窗口
// 的属性。通过对比各控件的风格或名字来区别各控件。
if(strcmp(sChildName,"Edit")==0)
{
DWORD dWinSty=::GetWindowLong(hwnd,GWL_STYLE);
if((dWinSty&ES_PASSWORD)==ES_PASSWORD)//这是密码输入编辑控件
{
gEventNextPass.SetEvent();//发送“新密码”事件
WaitForSingleObject(gEventPassOk, INFINITE); file://等待“密码完成”事件
gEventPassOk.ResetEvent(); file://复位
::SetDlgItemText(::GetWindowLong(hwnd,GWL_ID),cCurrentPass);
file://把新密码填到密码输入框,也可用SetWindowText()
bPass=TRUE;//记录密码已填入
if(bUser&&(hOk!=NULL))//如果用户名已填入,“确定”按钮已找到。
{
::SendMessage(::GetParent(hOk),WM_COMMAND,
(WPARAM)::GetWindowLong(hOk,GWL_ID),(LPARAM)(hOk));
file://向“确定”按钮送消息,参照ClassWizard的消息映射
bUser=FALSE;bPass=FALSE;hOk=NULL;
file://完成一次登录,初始化
return FALSE;
}
return TRUE;
}
file://非此即彼,这是用户名输入编辑控件
if((dWinSty&ES_READONLY)!=ES_READONLY)
{
::SetDlgItemText(::GetWindowLong(hwnd,GWL_ID),cCurrentPass);
file://把新用户名填到用户名输入框,也可用SetWindowText()
bUser=TRUE;// 新用户名已填入用户名输入框
if(bPass&&(hOk!=NULL)) 如果密码已填入,“确定”按钮已找到。
{
::SendMessage(::GetParent(hOk),WM_COMMAND,
(WPARAM)::GetWindowLong(hOk,GWL_ID),(LPARAM)(hOk));
file://向“确定”按钮送消息,参照ClassWizard的消息映射
bUser=FALSE;bPass=FALSE;hOk=NULL;
file://完成一次登录,初始化
return FALSE;
}
}
return TRUE;
}
file://如果是按钮控件
if(strcmp(sChildName,"Button")==0)
{
char sChildTitle[MAX_LINELENGTH];
::GetWindowText(hwnd,sChildTitle,MAX_LINELENGTH-1);
if(strcmp(sChildTitle,sButtonOk)!=0) return TRUE;
// sButtonOk:登录窗口中“OK”按钮的标题
hOk=hwnd;//记录“OK”窗口句柄
if(bUser&&bPass)
{
::SendMessage(::GetParent(hOk),WM_COMMAND,
(WPARAM)::GetWindowLong(hOk,GWL_ID),(LPARAM)(hOk));
file://向“确定”按钮送消息,参照ClassWizard的消息映射
bUser=FALSE;bPass=FALSE;hOk=NULL;
file://完成一次登录,初始化
return FALSE;
}
return TRUE;
}
return TRUE;
}
但通过 PostMessage( hwndEdit, "new content" ) 设置其内容时没有反应
::SetDlgItemText( ::GetParent(hwndChild),::GetWindowLong(hwndChild,GWL_ID), "hello" );
和
::SetWindowText( hwndChild, "hello" );
都不行
::SendMessage( hwndChild, WM_SETTEXT, 0, (LONG)content );
hwnd = ::FindWindow(NULL,"无标题-记事本");
hEdit = ::GetDlgItem(hwnd , 0x0F);
::SendMessage( hEdit, WM_SETTEXT, 0, (LONG)"1111" );
我也遇到了同样的问题,但是如上编成在记事本的编辑框中并没有显示1111,求问答案。
hwnd = ::FindWindow(NULL,"无标题-记事本");
hEdit = ::GetDlgItem(hwnd , 0x0F);
::SendMessage( hEdit, WM_SETTEXT, 0, (LONG)"1111" );
我也遇到了同样的问题,但是如上编成在记事本的编辑框中并没有显示1111,求问答案。