如何给一个外部程序添加一个自己的菜单并响应事件

如何给一个外部程序添加一个自己的菜单并响应事件,第1张

跨进程子类化,这个课题老外研究得比咱们早多了,而且已经都告数是不玩的了.....<br /><br />看看这个:<br /><br />袜轿首<br /><br />vbexample=ADDMENU&category=MISC<br /><br />这个就是与楼主的需求一模一样,添加菜单到其它进程,然后可以响应帆告菜单事件,当时的一些流氓软件就是这样干的,中招后记事本啊资源管理器啊,都有一个新添加的菜单...<br /><br />我04还是05年也有类似的需求,一番搜索才得出的.<br /><br />记得这套DLL是那老外01年还是02年就已经完成的,咱们国内在这些方面确实还差一些,比不过啊.....

一般应用程序当中的鼠标事件只能争对应用程序窗口内部有效,如果点击应用程序以外的窗口,例如点击其它应用程序窗口等,这个时候,鼠标消息是不会发送给我们的应哗搭用程序窗口,更不会激发事件。我们可以利用mfc窗口中的windows消息处理函数,来处理我们的唤芦宏鼠标或键盘事件 *** 作如下:

首先在我们需要开启捕获的事件中加入鼠标捕获

SetCapture()

然后在WindowProc中加入如下代码:

LRESULT CMyxgsdlgmainbg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)

{

// TODO: 在此添加专用代码和/或调用基类

POINT point

CRect rect

switch (message)

{

case WM_LBUTTONDOWN:

case WM_LBUTTONDBLCLK:

case WM_RBUTTONDOWN:

case WM_RBUTTONDBLCLK:

case WM_MBUTTONDOWN:

case WM_MBUTTONDBLCLK:

GetCursorPos(&point)

ScreenToClient(&point)

CRect rect

AfxGetMainWnd()->GetWindowRect(&rect)

ScreenToClient(&rect)

if(!rect.PtInRect(point)) //判断是否在本应用程序窗口内

{

isshowmain=false

}

KillTimer(8)

issettimer8=false

ReleaseCapture()

break

}

return CDialog::WindowProc(message, wParam, lParam)

}

ReleaseCapture()//该函数从当前线程中的窗口释放鼠标捕获,并恢复通常的鼠标输入处和册理。捕获鼠标的窗口接收所有的鼠标输入(无论光标的位置在哪里),除非点击鼠标键时,光标热点在另一个线程的窗口中

楼主说的调用外部程序,指的是引用外部控件吗。 如果镇戚这样的话。先添加皮旅冲引用外部控件,在可视化界面燃歼中选中控件,右键属性。右侧窗口有属性栏选择闪电图标,在找到onclick 单击事件双击写入代码即可。 希望对楼主有用!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12474908.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存