HWND pSetDialog;
HWND pContextDialog;
HWND pContextDialog2;
HWND pComboBox;
pSetDialog = ::FindWindow(NULL, "QQ2007 设置");
pContextDialog = ::FindWindowEx(pSetDialog, NULL, "#32770", NULL);
pContextDialog2 = ::FindWindowEx(pContextDialog, NULL, "#32770", NULL);
pComboBox = ::FindWindowEx(pContextDialog2, NULL, "ComboBox", NULL);
if (!pComboBox|| !pContextDialog|| !pContextDialog2|| !pComboBox)
{
MessageBox("不是QQ2007或者没有打开QQ资料修改窗口!", "出错");
return;
}
::SendMessage((HWND)pComboBox,CB_DELETESTRING,0,(LPARAM)"男");
::SendMessage((HWND)pComboBox,CB_DELETESTRING,0,(LPARAM)"女");
::SendMessage((HWND)pComboBox,CB_ADDSTRING,0,(LPARAM)"无");
只要QQ是2007版,并且运行了QQ打开了QQ资料修改窗口,再运行上面代码. 就会把性别里增加一个"无",你选择再确定后,你QQ资料别人看到性别处就是空白的了.
本来有点想实现将性别改成任何文字的.
但QQ做了处理,在ComboBox为DropDownlist风格时, 只能为男或女.如果选择的item文字与'男'或'女'不对应,则资料里显示为空. 所以处理的方法就是将DropDownList改为DropDown风格,那样就可以随便改文字了. 但问题出现了,就是运行的ComboBox风格是修改不了的,就像CEdit控件,多行与单行,在运行时是切换不了的.
::SetWindowLong(pComboBox, GWL_STYLE, ::GetWindowLong(pComboBox, GWL_STYLE)&~CBS_DROPDOWNLIST);
::SetWindowLong(pComboBox, GWL_STYLE, ::GetWindowLong(pComboBox, GWL_STYLE)|CBS_DROPDOWN);
这是我用的代码. 我也在网上查过了, 的确ComboBox控件是不能动态修改显示样式的.
大家有什么方法拿了来分享一下. (除了去找QQReg.dll文件中offset address外)大家什么方法?
[此贴子已经被作者于2007-10-28 13:30:30编辑过]