我想获取查询按钮然后单击它一下,可是只能获取到父窗口,“查询条件”这个窗口也获取不到。用类名的话,直接点击的是第一个:“照片上传中心”这个按钮~!因为本人是新手,在校的学生而已,没啥技术含量,求高手帮我一把。。不胜感激哇~!
代码上传一下,别喷我,骚年经不起打击啊!
1 private void button2_Click(object sender, EventArgs e) 2 { 3 IntPtr hwnd = FindWindow("TGroupBox", "查询条件"); 4 if (hwnd != IntPtr.Zero) 5 { 6 MessageBox.Show("找到窗口"); 7 } 8 else 9 { 10 MessageBox.Show("没有找到窗口"); 11 } 12 hwnd = FindWindow("Notepad", null); 13 if (hwnd != IntPtr.Zero) 14 { 15 MessageBox.Show("找到记事本窗口"); 16 } 17 else 18 { 19 MessageBox.Show("没有找到记事本窗口"); 20 } 21 } 22 const int BM_CLICK = 0xF5; 23 const int WM_GETTEXT = 0x000D; 24 const int WM_SETTEXT = 0x000C; 25 const int WM_CLICK = 0x00F5; 26 private void button3_Click(object sender, EventArgs e) 27 { 28 IntPtr maindHwnd = FindWindow(null, "照相馆上传照片"); //获得照相馆上传照片的句柄 29 //SetForegroundWindow(maindHwnd); 30 if (maindHwnd != IntPtr.Zero) 31 { 32 IntPtr hWnd3 = FindWindowEx(maindHwnd, IntPtr.Zero, "TButton", null); 33 IntPtr hWnd2 = FindWindowEx(maindHwnd, IntPtr.Zero, "TButton", null); 34 IntPtr childHwnd = FindWindowEx(maindHwnd, IntPtr.Zero, "TButton", "查询"); //获得查询按钮的句柄 35 if (childHwnd != IntPtr.Zero) 36 { 37 SendMessage(childHwnd, BM_CLICK, 0, 0);//发送点击按钮的消息 38 //SendMessage(childHwnd, WM_SETTEXT, 0, 123); 39 } 40 else 41 { 42 MessageBox.Show("没有找到子窗口"); 43 } 44 } 45 else 46 { 47 MessageBox.Show("没有找到窗口"); 48 } 49 }
觉得你应该先找到查询条件的TGroupBox,再找它下级的TButton应该就能找到了
你说找不到查询条件TGroupBox的句柄,那你应该继续用FindWindowEx往下找,第一个查找到的TGroupBox应该是个人信息,再用
FindWindowEx(maindHwnd, IntPtr.Zero, "TButton", null)
这里应该把IntPtr.Zero换成个人信息TGroupBox的句柄,重复查询几次就可以找到查询条件的句柄了
@Rainier-Soft.Com: 谢谢~!我试试~!
是利用这个程序,去控制另一个程序么.?
如果是这样的话.感觉C#的实现可能会很吃力~~
private void button3_Click(object sender, EventArgs e) 27 { 28 IntPtr maindHwnd = FindWindow(null, "照相馆上传照片"); //获得照相馆上传照片的句柄 29 //SetForegroundWindow(maindHwnd); 30 if (maindHwnd != IntPtr.Zero) 31 { 32 IntPtr hWnd3 = FindWindowEx(maindHwnd, IntPtr.Zero, null,"查询条件" ); 33 IntPtr hWnd2 = FindWindowEx(maindHwnd, IntPtr.Zero, null, “查询”); 34 //IntPtr childHwnd = FindWindowEx(maindHwnd, IntPtr.Zero, "TButton", "查询"); //获得查询按钮的句柄 35 if (childHwnd != IntPtr.Zero) 36 { 37 SendMessage(childHwnd, BM_CLICK, 0, 0);//发送点击按钮的消息 38 //SendMessage(childHwnd, WM_SETTEXT, 0, 123); 39 } 40 else 41 { 42 MessageBox.Show("没有找到子窗口"); 43 } 44 } 45 else 46 { 47 MessageBox.Show("没有找到窗口"); 48 } 49 }