PostMessage和sendmessage其实主要的用途还不在于传输信息,以sendmessage为例(PostMessage差不多的用途,只是有点细微的不同,有兴趣了解的话百度即可),两个可以作为信息的参数WPARAM和LPARAM其实分别是int和long,所以(LPARAM)(ch)没有任何意义。
有两个方法可行,一是用socket,但是有点太大动干戈了
另一种很简单的方法是剪贴板,迅雷有个功能是监视剪贴板,就是比如我写下一个链接,然后选中,复制的话迅雷就会d出下载。其实实现起来很简单,在mfc中有个OnTimer,在这里加入监控剪贴板代码的话就会一直监控。具体代码如下
新建一个工程,在默认对话框类中加入一个editbox,添加control变量c_show,然后在OnInitDialog中加入SetTimer(1,1,NULL);开始计时器
添加OnTimer消息,代码
void
CMy1Dlg::OnTimer(UINT_PTR
nIDEvent)
{
//
TODO:
在此添加消息处理程序代码和/或调用默认值
CString
s;
HANDLE
hClip;
if(OpenClipboard())
//打开剪贴板
{
hClip=GetClipboardData(CF_TEXT);//取出内存句柄
char
buff;
buff=(char
)GlobalLock(hClip);//锁定内存,取出数据
s=buff;//转换成CString
GlobalUnlock(hClip);//解锁
CloseClipboard();//关闭剪贴板
//这里要加入一定的判断条件了,迅雷只有监控到是链接才有反应,这里我们也可以加自己的条件,你的情况有两个,比如可以这样发现包含mystr:时就是第一种情况,第二种情况就是myip:
if(sFind(_T("myip:"))>=0)
c_showSetWindowTextW(s);//做出各种反应
}
CDialog::OnTimer(nIDEvent);
}
这就是接收程序了,发送程序比如作为按钮消息,按钮代码如下
CString
s;
s=_T("myip:19216811");//要发送的消息,记得加上面说的特定的标志,两者要一致
HGLOBAL
hClip;
if(OpenClipboard())
{
EmptyClipboard();
hClip=GlobalAlloc(GMEM_MOVEABLE,sGetLength()+1);
char
buff;
buff=(char)GlobalLock(hClip);
strcpy(buff,s);//如果你用了Unicode这里会报错,改成strcpy(buff,cs2ca(s));
cs2ca函数见最后
GlobalUnlock(hClip);
SetClipboardData(CF_TEXT,hClip);
CloseClipboard();
}
char
cs2ca(CString
str)
{
char
ptr;
#ifdef
_UNICODE
LONG
len;
len
=
WideCharToMultiByte(CP_ACP,
0,
str,
-1,
NULL,
0,
NULL,
NULL);
ptr
=
new
char
[len+1];
memset(ptr,0,len
+
1);
WideCharToMultiByte(CP_ACP,
0,
str,
-1,
ptr,
len
+
1,
NULL,
NULL);
#else
ptr
=
new
char
[strGetAllocLength()+1];
sprintf(ptr,_T("%s"),str);
#endif
return
ptr;
}
使用
ShellExecute
函数调用
B,然后用关闭自己(对话框编程可用OnOK函数关闭)。
ShellExecute(NULL,
_T("open"),
link,
NULL,
NULL,
SW_SHOWNORMAL);
link是个表示调用程序路径和名称的字符串。
1、打开软件。
2、新建工程,名字“canshuchuandi”。制作界面如图。编辑框变量设置为“m_a1”。
3、在资源视图,右键插入类“Cshow”制作界面,变量设置为“m_a2”。
4、双击原界面的“打开并传输”按钮,编辑事件处理程序如图。
5、双击新建的界面的“返回第一个对话框+6”按钮,编辑事件处理程序如图。
6、退出就完成了,点击按钮就可以d出新窗口了。
以上就是关于MFC中,如何控制另一个程序全部的内容,包括:MFC中,如何控制另一个程序、MFC编程的时候怎么打开一个程序的同时关闭当前程序、如何在MFC中让一个按钮实现打开文件(d出选择文件窗口)的功能等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)