http://dev.csdn.net/develop/article/53/53147.shtm
http://dev.csdn.net/develop/article/39/39410.shtm
http://dev.csdn.net/develop/article/26/26865.shtm
http://dev.csdn.net/develop/article/28/28554.shtm
http://dev.csdn.net/develop/article/39/39410.shtm
http://dev.csdn.net/develop/article/26/26865.shtm
http://dev.csdn.net/develop/article/28/28554.shtm
添加密码,可以先用FindWindowEx或者EnumChildWindow之类的API,找到密码框句柄,然后用SendMessage发一个WM_SETTEXT消息过去。
1.
g_hHook = SetWindowsHookEx(WH_CALLWNDPROC, CallWndProc, g_hDllIns, 0);
2.in hook callback functionLRESULT CALLBACK CallWndProc(int code, WPARAM wParam, LPARAM lParam)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
try
{
if (code >= 0)
{
CWPSTRUCT *wp= (CWPSTRUCT*) lParam;
if(wp->message == WM_SHOWWINDOW && wp->hwnd)
{
HWND hwnd = wp->hwnd;
char lpClassName[255],lpCaption[255];
memset(lpClassName,0,255);
//获取类名
GetClassName(hwnd,lpClassName,255);
GetWindowText(hwnd,lpCaption,255);
CString strClass(lpClassName);
CString strCaption(lpCaption);
if(strClass == "#32770")
{
if(strCaption == "Test")
EnumChildWindows(hwnd,(WNDENUMPROC)FillPassProc,0); //fill your password here
}
}
}
}BOOL CALLBACK FillPassProc(HWND hwnd,DWORD lParam)
{
char lpClassName[255],lpText[255];
memset(lpClassName,0,255);
memset(lpText,0,255);
GetWindowText(hwnd,lpText,255);
//获取类名
GetClassName(hwnd,lpClassName,255);
{
//判断是否是Edit控件
CString strClass(lpClassName);
if (0 == strClass.CompareNoCase("Edit"))
{
//获取窗口风格
LONG lStyle =::GetWindowLong(hwnd,GWL_STYLE);
//如果设置了ES_PASSWORD属性
if (lStyle & ES_PASSWORD)
{
SendMessage(hwnd,WM_SETTEXT,0,(LPARAM)"testpassword");
}
}
return 1;
}