1。用向导新建了一个简单的对话框。
2。加入一个button1,两个Eedit,响应代码如下:
void CShelltrayDlg::OnButton1()
{
CPoint pt;
HWND h;
char str[]="hello!!!"; SetDlgItemText(IDC_EDIT2,"start...");
::Sleep(1000);
::GetCursorPos(&pt);
h=::WindowFromPoint(pt);
if (h==0) exit;
else
::GetWindowText(h,str,255);
if (str[0]==NULL) ::SendMessage(h,WM_GETTEXT,255,(long)str);
if (str[0]!=NULL)
SetDlgItemText(IDC_EDIT1,str);
else
SetDlgItemText(IDC_EDIT1,"失败了");
SetDlgItemText(IDC_EDIT2,"Over!");
}//////////得到WindowText的代码/////////////编译,连接都没问题。执行时用鼠标指向一些窗口没问题,可指向某些窗口(如任务栏)时就会“执行了非法操作”!!!这是怎么回事啊??真的很搞不懂啦望指点一二
2。加入一个button1,两个Eedit,响应代码如下:
void CShelltrayDlg::OnButton1()
{
CPoint pt;
HWND h;
char str[]="hello!!!"; SetDlgItemText(IDC_EDIT2,"start...");
::Sleep(1000);
::GetCursorPos(&pt);
h=::WindowFromPoint(pt);
if (h==0) exit;
else
::GetWindowText(h,str,255);
if (str[0]==NULL) ::SendMessage(h,WM_GETTEXT,255,(long)str);
if (str[0]!=NULL)
SetDlgItemText(IDC_EDIT1,str);
else
SetDlgItemText(IDC_EDIT1,"失败了");
SetDlgItemText(IDC_EDIT2,"Over!");
}//////////得到WindowText的代码/////////////编译,连接都没问题。执行时用鼠标指向一些窗口没问题,可指向某些窗口(如任务栏)时就会“执行了非法操作”!!!这是怎么回事啊??真的很搞不懂啦望指点一二
解决方案 »
- CAsyncocket的error C2146: syntax error : missing ';' before identifier '
- 如何在对话框中播放.flv格式文件
- 用GetVolumeInformation 获取卷标 的疑惑
- CSocket receive如何判断来自哪个SOCKET对象的消息
- 在使用CString的fromat时如何设置%s空出10个空间?
- 如果做错了………………
- 请大侠帮忙!!!
- 如何将平面上的坐标(x,y),变成极坐标的形式(r,a),??
- C++基础问题!对指针理解比较深的高手和精通COM的专家请进!(菜鸟勿进)嫌分不够的话可以重开帖子另给!
- 谁能给我推荐几本关于TCP/IP兼数据库方面编程方面的书!
- 救命!如何按照windows设置的格式输出日期
- 免费试用
strlen( str ) 大概 strlen( "hello!!!" )解决方法
char str[ 300 ] = "hello!!!";
估计是这个问题,有时编译后会出现这样的问题
换成CString类型的
但为什么对任务栏也不行呢? 在delphi里是很容易得到任务栏的windowtext的啊!!??
换成CString类型的
///////////////////
这样我试过,或许太弱智,总是说类型不对头!
我还是认为是缓冲区太小的原因
char str[]="hello!!!";
str[0]-str[8]
一共9个字节,而下面::GetWindowText(h,str,255); 指定长度255别的不说,这里首先就是个bug.
::GetWindowText(h,str,strlen(str)); 对于比较长的字符串,又怎么处理呢?