问题描述
我做了一个发短信的软件A,功能已经实现,里面有一个SentMessage函数来完成发送操作,只需要输入短信内容和号码两个参数就完成动作:SentMessage(短信内容,号码)。现在我想做另外一个程序B,想调用程序A的SentMessage函数来发短信,请问该如何做呢?请大家指教!不胜感激!
解决方案
本帖最后由 lgk99 于 2015-08-15 16:19:22 编辑
解决方案二:
在vs上,在你的第二个解决方案中,“添加->现有项目”,然后选择第一个解决方案中的工程。然后再在第一个工程中“添加->引用->项目”,选择刚引入的工程,这就可以在新的工程中访问钱一个工程的public的对象和方法了。
解决方案三:
引用1楼sp1234的回复:
在vs上,在你的第二个解决方案中,“添加->现有项目”,然后选择第一个解决方案中的工程。然后再在第一个工程中“添加->引用->项目”,选择刚引入的工程,这就可以在新的工程中访问钱一个工程的public的对象和方法了。
请问这是一种怎么的调用方法呢?是把软件A整个工程作为一个DLL调用?这种调用是不是需要在软件A正常运行的情况下才有效??
解决方案四:
引用2楼lgk99的回复:
Quote: 引用1楼sp1234的回复:
在vs上,在你的第二个解决方案中,“添加->现有项目”,然后选择第一个解决方案中的工程。然后再在第一个工程中“添加->引用->项目”,选择刚引入的工程,这就可以在新的工程中访问钱一个工程的public的对象和方法了。请问这是一种怎么的调用方法呢?是把软件A整个工程作为一个DLL调用?这种调用是不是需要在软件A正常运行的情况下才有效??
exe这里就是作为一种dll来引用的。你的A中的窗体当然还是可以B的代码来实例化、使用,只不过是A中的Program类(里边也不过就有5、6行代码而已)也许不被B去调用它而已。一个exe引用其他的exe,这是很正常的。不要以为exe只能引用dll。
解决方案五:
这个要看B是让A去送,还是B使用A的方法(逻辑)由B自己去发送,这是两码事,你没有说清楚
解决方案六:
引用4楼dongxinxi的回复:
这个要看B是让A去送,还是B使用A的方法(逻辑)由B自己去发送,这是两码事,你没有说清楚
我是想让B程序传信息给A程序,然后由A程序去发送短信,请问用什么方法呢?如果是B程序使用A程序的方法(逻辑),再由B自己去发送又用什么办法呢?请高手指教,我想选一种简洁高效的方式!
解决方案七:
B代码中引用A,跟所谓的“B程序让A程序去发”是两回事。当你的B代码中引用A的工程(哪怕没有源代码而只有exe也是一样),那么B程序在运行时,A就等于被B“拥有”了。因为B程序中可以实例化并使用你在A程序中写的所有public的对象,例如所有的窗口,所有的方法库中的方法,等等。这本来就是n个工程独立开发、然后发布给同事的其它工程相互引用的机制所支持的。这是开发的一个基础知识,不可不熟悉。至于说“两个程序”跨进程通讯,那是另一回事,是需要程序双方分别设计一堆通讯机制、一堆协同功能。你现在最好也先不要纠结这个。
解决方案八:
引用5楼lgk99的回复:
如果是B程序使用A程序的方法(逻辑),再由B自己去发送又用什么办法呢?
比如说人家.netframework给你封装了一个MessageBox类,放在System.Windows.Forms.dll文件中,被你的程序引用了,于是你就可以使用MessageBox.Show方法来显示对话框了。这就是调用其它工程的方法。你的A相当于就是System.Windows.Forms提供了public的MessageBox类一样,提供它自己的对象和方法可以被其它工程访问,就行了。
解决方案九:
像你上面说的,对面桌面应用,一般先想到的是用户自定义消息,WM_USER,如果你了解window消息循环,就比较简单了B调用win32APIPostMessage(A的窗口句柄,自定义消息代码,消息参数,自定义参数)A程序overrideForm的WndProc(Msg)来处理这个消息不过,如果B引用A也可以发送,那还是直接引用再调用,避免两个程序之间协同工作
解决方案十:
既然两个程序都是你做的,那为什么不把A的发信息功能做成DLL,供两个程序调用?如果A不是你做的,B要调用A的功能,我一般的做法是使用API啦,找到A的文本框的句柄、A的“发送”按钮的句柄,再由B把信息发过去A的文本框,自动点击按钮。当然,A是你自己做的也能用API,不过就显得麻烦点了。