使用编程如何知道WINDOWS发向某一应用程序的所有消息,我又如何发消息给该应用程序?分不够可加到500

时间:2022-09-17 20:59:56
使用编程如何知道WINDOWS发向某一应用程序的所有消息,我又如何发消息给该应用程序?分不够可加到500

36 个解决方案

#1


1.用钩子来捕获消息
2.用SendMessage或者PostMessage发送消息

#2


来晚一步

#3


up

#4


同意kugou123(酷狗)

设置钩子函数用SetWindowHookEx

#5


同意kugou123(酷狗),too

#6


我也来晚了,楼主结帖吧。

#7


各位,能否详细一点,如果有这样的软件就最好了。
我的具体情况是这样的:

我有一个电视卡,安装了他的软件后能够看电视,并且能够通过遥控器来远程遥控,可是我想编写一个软件来设置电视节目单,我想知道我发什么消息能使那个软件转换到我需要的频道到。

各位大侠,谢谢了

#8


揭帖是小事,可我还不懂啊,安装钩子都也知道,可不会有这么容易吧。

#9


这未必和消息有关,而是它底层通信数据格式的问题!
 不是所有的,都可以通过消息来完成所有操作的!

#10


那可能和消息关系不大了。

#11


你这个问题和windows消息没有任何联系.windows是通过消息驱动的,而电视卡明显不会用windows消息来驱动硬件操作.你需要得到电视卡商的开发包

#12


需要电视卡的接口,有相应的开发包就最好了.

#13


你的问题不是你想象的那样,可能你的想法也行,你可以用vc的工具,看看那些是什么消息就可以了,spy好像就可以看到。

通用方法有两种
1、使用电视卡的开发包
2、使用DirectShow方式,不明白自己买书看,推荐 陆其明 的两本书
http://blog.csdn.net/happydeer
你也可以去请教他本人,ID:happydeer ,专题开发——〉多媒体

#14


应该有一个厂商的SDK。

#15


统一前面几位的观点,顺便帮你up一下

#16


关于添加钩子的方法可以参照《windows核心编程》中的方法,不过要达到搂主的目的,那必须拥有厂商的sdk,或者搂主自己研究电视卡驱动软件的通讯方法(这个有点晕)。

#17


很感谢以上大家对我的帮助,针对这个问题我是这样想的,
首先,我没有厂商的SDK,其次我们假设显示播放电视的应
用程序为A.EXE,有一个接收遥控器的程序我们假设为B.exe,
B..EXE在收到遥控器的按键后会将数据以消息的形式发给
A.exe,而我现在想做个钩子来截获B.EXE发给A.EXE的消息,
然后运用到自己的程序中,实现电视节目的智能播放.

以下还希望各位大侠再给与帮助,非常之感激.谢谢!

#18


A,B两个程序的假设我认为不一定成立。
我想遥控控制应该是这样实现的,只有一个应用程序,它有一个线程1专门监听遥控通讯接口(如同网络通讯一样),一旦它接收到信号,便将信号转给信号处理线程2,线程2对信号进行解析,然后控制电视卡驱动程序控制电视机输出。(这种是多线程方式,单线程的话线程1接收到信号后会自己做处理)

如果以上的假设成立,那么整个控制消息的接收和处理过程都在一个程序中实现,搂主应该对该程序进行反汇编,从而找出其内部通讯方法(程序内部通讯方法有多种可能)。

以上是我对这个问题的一些想法,因此我认为只有使用厂商sdk才是比较现实的做法,其它方法太难了,期待强人的解决方法。。。。

#19


参照《windows核心编程》中的方法拦截GetMessage消息试试.

#20


楼主还是拘泥于“消息”的误区里面!
  我想“ galaxy_fxstar(阿星)”说的更有道理,也更符合实际一点!
这个东西,不太可能通过windows的消息机制,完成所有操作的,它应该依赖于底层驱动——即使你拦截了一部分消息。但你不知道它内部如何处理,又有什么用处呢!
  
    “B..EXE在收到遥控器的按键后会将数据以消息的形式发给
A.exe”——楼主是如何得知,数据是以消息的形式发给a.exe? 

不过我倒有个折中的方案——电视卡的播放窗口,会有一些按钮,代替遥控器的功能,楼主可以尝试用程序模拟按那些键,达到你的目的!

#21


我也有电视卡,楼主什么时候把这个问题解决了,把思路或原码发一份给我,weichaohan@163.com.
先谢谢了!

#22


对于串口控制,你可以直接用一些软件截获串口的数据,分析其格式,就可以自己写程序了,但是程序运行的时候需要占用另一个串口,两个串口需要连接起来。

#23


此处无高人啊。悲哀阿,努力中。。。

#24


这个感觉和做游戏外挂差不多,需要解决的主要是输入和输出的技术问题
不知道遥控器是对着哪里按,是不是电视卡上就能接收遥控信息?

#25


学学怎么开发驱动吧,到时候你就知道驱动怎么和程序通讯了,然后呢,当然是要有电视卡的厂商的SDK,要不然的话想做出来,难呀,

不是不有高人,而是这不是高人不高人问题!

如果不给你WINDOWS的SDK的话,让你调用WINDOWS API 我相信现在WINDOWS程序员绝不会像现在这么多!!!

#26


这个东西的确是和开发外挂有相似之处,必须自己分析其通讯协议。
楼上说的好, 没有SDK的话,大家估计都傻了。。呵呵

#27


我想遥控应该是直接驱动板卡而不是应用程序呀.
想模拟,没有接口恐难实现.

#28


A.EXE和B.EXE的假设错误的.
遥控器的操作会促使电视卡产生某些硬件信号,
这些信号可以通过电视卡的驱动程序获得和设置,因此通过调用相应驱动程序接口函数
可以达到遥控器操作相同的效果.电视卡的软件就是直接通过调用驱动程序的这些接口函数(这些函数集合也就是所谓的SDK)操纵电视卡的.如果没有厂商sdk,你没法了解底层驱动的细节,没法直接操纵电视卡。-----------------------
电视卡的播放窗口,会有一些按钮,代替遥控器的功能,楼主可以尝试用程序模拟按那些键,达到你的目的!也就是搂住需要写一个电视卡软件的外挂程序。

#29


很高兴这么多朋友关注这个问题,在此我表示无比的感谢!

可能怪我没有讲清楚,以下我对这个问题进行详细的说明:

1、首先,我使用的是一个WinFast的DV2000电视卡,该卡附送有一个红外线遥控器和一个接收头,该接收头通过连线接在电视卡上;

2、电视卡是PCI接口的,使用时直接插在电脑主机的PCI插槽中即可,接上有线电视,装好驱动即可观看电视;

3、观看电视的软件叫WinFast PVR,实际运行的文件为WFTV.exe,可以通过按该软件窗体上的按钮上下换频道,不可直接选台;

4、如果需要使用遥控器,则必须启动执行文件WFWIZ.exe,我个人认为应该是这个软件在获得遥控器按键后发消息给WFTV.exe的,所以一直想截获它发的所有消息。在遥控器上可以直接选台(遥控器和电视机的遥控器一样,这里不多说明)

5、我现在想做的软件功能主要是想替换遥控器,想截获WFTV.exe的所有消息,还望各位路过、看过的大侠不吝指教,谢谢!

#30


高手很多啊 楼主还是需要自己学习以下hook的相关知识

#31


楼住现在说得比较详细了。
4、如果需要使用遥控器,则必须启动执行文件WFWIZ.exe,我个人认为应该是这个软件在获得遥控器按键后发消息给WFTV.exe的,所以一直想截获它发的所有消息。在遥控器上可以直接选台。
这种可能性是有的。但整个软件WinFast PVR由我来实现的话。我决不会多此一举从WFWIZ.exe向WFTV.exe发送消息。在WFWIZ.exe中我可以直接通过底层驱动接口实现遥控其中的操作,包括选台。
而WFTV.exe也是如此,WFTV.exe要播放视频,那可以直接从底层的缓存中读取视频进行播放。因此遥控器的操作结果可以在WFTV.exe播放的视频窗口中看到。两者之间不需要进行直接的互相通信。
以上仅为个人观点

#32


支持楼上的!
 
电视卡应该不会那样设计的!
而且即使如楼主所想的,它也未必就都是通过消息控制的,因为WFTV.exe本身也没所有的功能!——比如不可以直接选台!

  如果我是厂商,我会觉得用消息来控制这一切,一点都不高明和方便!

如果你真的要截获消息,你用spy看看它传递的消息啊——当然很多消息,你用spy也还是看不到的!

#33


嗯,现在有点眉目了。谢谢大家,思路还是和我原来的一样,没办法我就这样执着。谢谢各位。

#34


up

#35


楼主的想法太简单.
既然有接受头,就一定是硬件层面上的东西.
遥控器是不会发送消息的,它只会发射电波只类的东西,接受器上有一个接受设备和a/d转换设备,把模拟信号转换数字信号然后解释成命令,这些命令再被监视程序识别并执行.

没有开发包,楼主的想法实现不了的.当然,可以捕获按遥控器后WFTV.exe接受到的所有消息,使用spy++就可以.但是两个应用程序之间打交道的方式不止发送消息(假如WFTV.exe和监听遥控器的exe完全是用消息交互的,那你的问题就可以解决了)

#36


楼主好执着阿,你把你的EMAIL发消息给我,我给你一段我以前写的关于西安交大作的视频卡的控制程序。

#1


1.用钩子来捕获消息
2.用SendMessage或者PostMessage发送消息

#2


来晚一步

#3


up

#4


同意kugou123(酷狗)

设置钩子函数用SetWindowHookEx

#5


同意kugou123(酷狗),too

#6


我也来晚了,楼主结帖吧。

#7


各位,能否详细一点,如果有这样的软件就最好了。
我的具体情况是这样的:

我有一个电视卡,安装了他的软件后能够看电视,并且能够通过遥控器来远程遥控,可是我想编写一个软件来设置电视节目单,我想知道我发什么消息能使那个软件转换到我需要的频道到。

各位大侠,谢谢了

#8


揭帖是小事,可我还不懂啊,安装钩子都也知道,可不会有这么容易吧。

#9


这未必和消息有关,而是它底层通信数据格式的问题!
 不是所有的,都可以通过消息来完成所有操作的!

#10


那可能和消息关系不大了。

#11


你这个问题和windows消息没有任何联系.windows是通过消息驱动的,而电视卡明显不会用windows消息来驱动硬件操作.你需要得到电视卡商的开发包

#12


需要电视卡的接口,有相应的开发包就最好了.

#13


你的问题不是你想象的那样,可能你的想法也行,你可以用vc的工具,看看那些是什么消息就可以了,spy好像就可以看到。

通用方法有两种
1、使用电视卡的开发包
2、使用DirectShow方式,不明白自己买书看,推荐 陆其明 的两本书
http://blog.csdn.net/happydeer
你也可以去请教他本人,ID:happydeer ,专题开发——〉多媒体

#14


应该有一个厂商的SDK。

#15


统一前面几位的观点,顺便帮你up一下

#16


关于添加钩子的方法可以参照《windows核心编程》中的方法,不过要达到搂主的目的,那必须拥有厂商的sdk,或者搂主自己研究电视卡驱动软件的通讯方法(这个有点晕)。

#17


很感谢以上大家对我的帮助,针对这个问题我是这样想的,
首先,我没有厂商的SDK,其次我们假设显示播放电视的应
用程序为A.EXE,有一个接收遥控器的程序我们假设为B.exe,
B..EXE在收到遥控器的按键后会将数据以消息的形式发给
A.exe,而我现在想做个钩子来截获B.EXE发给A.EXE的消息,
然后运用到自己的程序中,实现电视节目的智能播放.

以下还希望各位大侠再给与帮助,非常之感激.谢谢!

#18


A,B两个程序的假设我认为不一定成立。
我想遥控控制应该是这样实现的,只有一个应用程序,它有一个线程1专门监听遥控通讯接口(如同网络通讯一样),一旦它接收到信号,便将信号转给信号处理线程2,线程2对信号进行解析,然后控制电视卡驱动程序控制电视机输出。(这种是多线程方式,单线程的话线程1接收到信号后会自己做处理)

如果以上的假设成立,那么整个控制消息的接收和处理过程都在一个程序中实现,搂主应该对该程序进行反汇编,从而找出其内部通讯方法(程序内部通讯方法有多种可能)。

以上是我对这个问题的一些想法,因此我认为只有使用厂商sdk才是比较现实的做法,其它方法太难了,期待强人的解决方法。。。。

#19


参照《windows核心编程》中的方法拦截GetMessage消息试试.

#20


楼主还是拘泥于“消息”的误区里面!
  我想“ galaxy_fxstar(阿星)”说的更有道理,也更符合实际一点!
这个东西,不太可能通过windows的消息机制,完成所有操作的,它应该依赖于底层驱动——即使你拦截了一部分消息。但你不知道它内部如何处理,又有什么用处呢!
  
    “B..EXE在收到遥控器的按键后会将数据以消息的形式发给
A.exe”——楼主是如何得知,数据是以消息的形式发给a.exe? 

不过我倒有个折中的方案——电视卡的播放窗口,会有一些按钮,代替遥控器的功能,楼主可以尝试用程序模拟按那些键,达到你的目的!

#21


我也有电视卡,楼主什么时候把这个问题解决了,把思路或原码发一份给我,weichaohan@163.com.
先谢谢了!

#22


对于串口控制,你可以直接用一些软件截获串口的数据,分析其格式,就可以自己写程序了,但是程序运行的时候需要占用另一个串口,两个串口需要连接起来。

#23


此处无高人啊。悲哀阿,努力中。。。

#24


这个感觉和做游戏外挂差不多,需要解决的主要是输入和输出的技术问题
不知道遥控器是对着哪里按,是不是电视卡上就能接收遥控信息?

#25


学学怎么开发驱动吧,到时候你就知道驱动怎么和程序通讯了,然后呢,当然是要有电视卡的厂商的SDK,要不然的话想做出来,难呀,

不是不有高人,而是这不是高人不高人问题!

如果不给你WINDOWS的SDK的话,让你调用WINDOWS API 我相信现在WINDOWS程序员绝不会像现在这么多!!!

#26


这个东西的确是和开发外挂有相似之处,必须自己分析其通讯协议。
楼上说的好, 没有SDK的话,大家估计都傻了。。呵呵

#27


我想遥控应该是直接驱动板卡而不是应用程序呀.
想模拟,没有接口恐难实现.

#28


A.EXE和B.EXE的假设错误的.
遥控器的操作会促使电视卡产生某些硬件信号,
这些信号可以通过电视卡的驱动程序获得和设置,因此通过调用相应驱动程序接口函数
可以达到遥控器操作相同的效果.电视卡的软件就是直接通过调用驱动程序的这些接口函数(这些函数集合也就是所谓的SDK)操纵电视卡的.如果没有厂商sdk,你没法了解底层驱动的细节,没法直接操纵电视卡。-----------------------
电视卡的播放窗口,会有一些按钮,代替遥控器的功能,楼主可以尝试用程序模拟按那些键,达到你的目的!也就是搂住需要写一个电视卡软件的外挂程序。

#29


很高兴这么多朋友关注这个问题,在此我表示无比的感谢!

可能怪我没有讲清楚,以下我对这个问题进行详细的说明:

1、首先,我使用的是一个WinFast的DV2000电视卡,该卡附送有一个红外线遥控器和一个接收头,该接收头通过连线接在电视卡上;

2、电视卡是PCI接口的,使用时直接插在电脑主机的PCI插槽中即可,接上有线电视,装好驱动即可观看电视;

3、观看电视的软件叫WinFast PVR,实际运行的文件为WFTV.exe,可以通过按该软件窗体上的按钮上下换频道,不可直接选台;

4、如果需要使用遥控器,则必须启动执行文件WFWIZ.exe,我个人认为应该是这个软件在获得遥控器按键后发消息给WFTV.exe的,所以一直想截获它发的所有消息。在遥控器上可以直接选台(遥控器和电视机的遥控器一样,这里不多说明)

5、我现在想做的软件功能主要是想替换遥控器,想截获WFTV.exe的所有消息,还望各位路过、看过的大侠不吝指教,谢谢!

#30


高手很多啊 楼主还是需要自己学习以下hook的相关知识

#31


楼住现在说得比较详细了。
4、如果需要使用遥控器,则必须启动执行文件WFWIZ.exe,我个人认为应该是这个软件在获得遥控器按键后发消息给WFTV.exe的,所以一直想截获它发的所有消息。在遥控器上可以直接选台。
这种可能性是有的。但整个软件WinFast PVR由我来实现的话。我决不会多此一举从WFWIZ.exe向WFTV.exe发送消息。在WFWIZ.exe中我可以直接通过底层驱动接口实现遥控其中的操作,包括选台。
而WFTV.exe也是如此,WFTV.exe要播放视频,那可以直接从底层的缓存中读取视频进行播放。因此遥控器的操作结果可以在WFTV.exe播放的视频窗口中看到。两者之间不需要进行直接的互相通信。
以上仅为个人观点

#32


支持楼上的!
 
电视卡应该不会那样设计的!
而且即使如楼主所想的,它也未必就都是通过消息控制的,因为WFTV.exe本身也没所有的功能!——比如不可以直接选台!

  如果我是厂商,我会觉得用消息来控制这一切,一点都不高明和方便!

如果你真的要截获消息,你用spy看看它传递的消息啊——当然很多消息,你用spy也还是看不到的!

#33


嗯,现在有点眉目了。谢谢大家,思路还是和我原来的一样,没办法我就这样执着。谢谢各位。

#34


up

#35


楼主的想法太简单.
既然有接受头,就一定是硬件层面上的东西.
遥控器是不会发送消息的,它只会发射电波只类的东西,接受器上有一个接受设备和a/d转换设备,把模拟信号转换数字信号然后解释成命令,这些命令再被监视程序识别并执行.

没有开发包,楼主的想法实现不了的.当然,可以捕获按遥控器后WFTV.exe接受到的所有消息,使用spy++就可以.但是两个应用程序之间打交道的方式不止发送消息(假如WFTV.exe和监听遥控器的exe完全是用消息交互的,那你的问题就可以解决了)

#36


楼主好执着阿,你把你的EMAIL发消息给我,我给你一段我以前写的关于西安交大作的视频卡的控制程序。