这两天尝试VC控制外部程序呢,慢慢完善...
在参考了网络学习以后,简单做了以下工作:
期间用了spy++
器件
void CVCControlDlg::OnStartreader() //启动朗读女
{
// TODO: Add your control notification handler code here
//int lngtemp;
HWND wnd;
wnd=::FindWindow(NULL,_T("朗读女 5.9"));
if(wnd)
{
// AfxMessageBox(_T("已经在运行"));
::SendMessage(wnd,WM_CLOSE,0,0);
}
if(WinExec("D:\\Program Files\\langdunv\\朗读女\\朗读女.exe", SW_MAXIMIZE )>31)
{
MessageBox("打开OK!");
}
}
void CVCControlDlg::OnSendtext() //发送文本到朗读女的文本框
{
// TODO: Add your control notification handler code here SendMessage
//"Afx:400000:b:10011:1900015:0"
// CString str;
// m_txtSend.GetWindowText(str);
char ch1[1000];
char ch2[1000]={0};
SendDlgItemMessage(IDC_EDIT1,WM_GETTEXT,1000,(LPARAM)ch1);
for(int i=0;ch1[i]!='\0';i++)
{
ch2[i]=ch1[i];
}
SendDlgItemMessage(IDC_EDIT2,WM_SETTEXT,0,(LPARAM)ch2);
HWND wnd;
wnd=::FindWindow(NULL,_T("朗读女 5.9"));//FindWindow(NULL,"朗读女 5.9");
HWND wndtxt;
wndtxt=::FindWindowEx(wnd,0,"RichEdit20A",NULL);
::SendMessage(wndtxt,WM_SETTEXT,0,(LPARAM)ch2);
}
void CVCControlDlg::OnSpeak() //发送命令到朗读女的播放按钮
{
// TODO: Add your control notification handler code here
HWND wnd;
wnd=::FindWindow(NULL,_T("朗读女 5.9"));
HWND wndbtn1;
HWND wndbtn2;
wndbtn1=::FindWindowEx(wnd,0,"Button",NULL);
wndbtn2=::FindWindowEx(wndbtn1,0,"Button",NULL);
//::SendMessage(wndbtn2,WM_CLICK,0,0);
//::PostMessage(wndbtn2,BN_CLICKED,0,0);
::SendMessage(wndbtn2,BN_CLICKED,0,0);
}
结果是,启动了朗读女,可是后面的发送文本和朗读命令都没有反应啊???
哪位路过的大神看了,帮小弟指点迷津,多谢!!!
参考链接有:http://zgmgypb.blog.163.com/blog/static/962028192012312281197/
http://blog.csdn.net/sundy_2004/article/details/7765016