功能描述如下:
已有独立的EXE程序A(窗体名为Test),界面包括两个EDIT Contorl和一个Button,现在想写一个程序B实现对EDIT Control的自动输入和Button的自动点击。 我现在的方案是通过SendMessage实现对外部程序的控制,但是遇到了一些麻烦。
B程序的代码为
HWND hWnd = ::FindWindow(NULL,"Test");
::SetForegroundWindow(hWnd);
HWND eWnd = ::GetFocus();//Test程序中的默认的Focus在第一个EDIT Control上
::SetWindowText(eWnd,"19");
::PostMessage(hWnd,WM_KEYDOWN,VK_TAB,0);//通过Tab将较低移动到第二个EDIT Control上
eWnd = ::GetFocus();
::SetWindowText(eWnd,"20");
不知如何,执行程序B可以获得Test的句柄和活激活Test的窗口,但是对EDIT Contorl的操作失败。
另外,是否有更好的方法,直接获得外部程序任意EDIT Control的句柄 谢谢!!!
已有独立的EXE程序A(窗体名为Test),界面包括两个EDIT Contorl和一个Button,现在想写一个程序B实现对EDIT Control的自动输入和Button的自动点击。 我现在的方案是通过SendMessage实现对外部程序的控制,但是遇到了一些麻烦。
B程序的代码为
HWND hWnd = ::FindWindow(NULL,"Test");
::SetForegroundWindow(hWnd);
HWND eWnd = ::GetFocus();//Test程序中的默认的Focus在第一个EDIT Control上
::SetWindowText(eWnd,"19");
::PostMessage(hWnd,WM_KEYDOWN,VK_TAB,0);//通过Tab将较低移动到第二个EDIT Control上
eWnd = ::GetFocus();
::SetWindowText(eWnd,"20");
不知如何,执行程序B可以获得Test的句柄和活激活Test的窗口,但是对EDIT Contorl的操作失败。
另外,是否有更好的方法,直接获得外部程序任意EDIT Control的句柄 谢谢!!!
http://blog.csdn.net/jinhaijian/archive/2008/04/19/2305989.aspx
用这个函数不对吧?
模拟键盘事件不知道可不可以keybd_event
mouse_event或kyboard_even模拟鼠标和键盘事件。
关键是要取得EDIT的正确位置。
SendInput可以模拟鼠标,键盘等操作来点击
::SetForegroundWindow(hwnd);
HWND hedit=::FindWindowEx(hwnd,NULL,"EDIT",NULL);
char a[10],b[10];
strcpy(a,_T( "19 "));
strcpy(b,_T( "20 "));
::SendMessage(hedit, WM_SETTEXT, 0, (LPARAM)a);
//::PostMessage(hEditBox, WM_SETTEXT, 0, (LPARAM)a);
HWND hedit2=::FindWindowEx(hwnd,hedit,"EDIT",NULL);
::SendMessage(hedit2, WM_SETTEXT, 0, (LPARAM)b);
HWND hedit3=::FindWindowEx(hwnd,hedit2,"BUTTON","btn");
::SendMessage(hedit3,WM_LBUTTONDOWN,0,0);
::SendMessage(hedit3,WM_LBUTTONUP,0,0);
测试了一下 可行
还是对FindWindowEx函数的理解不够哦~~
::SendMessage(hedit2, WM_SETTEXT, 0, (LPARAM)b);
HWND hDlg = ::FindWindowEx(hwnd,hedit3,NULL,"TEST_NOTIFY");
HWND hBtn = ::FindWindowEx(hDlg ,NULL,,"BUTTON","确定");
::SendMessage(hBtn ,WM_LBUTTONDOWN,0,0);
::SendMessage(hBtn ,WM_LBUTTONUP,0,0); 单步调试发现执行
::SendMessage(hedit3,WM_LBUTTONDOWN,0,0);
::SendMessage(hedit3,WM_LBUTTONUP,0,0);
后窗体名为"TEST_NOTIFY"的对话框并未弹出,导致 hDlg 句柄未能正确捕获。请指教~谢谢