首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

窗体加载DLL,怎么截获输出

2014-05-26 
窗体加载DLL,如何截获输出有一个DLL,内部会使用printf输出信息。想写一个窗口程序调用DLL,将其输出信息显示

窗体加载DLL,如何截获输出
有一个DLL,内部会使用printf输出信息。

想写一个窗口程序调用DLL,将其输出信息显示到edit内,要如何实现?

多谢! DLL加载?截获输出 DLL 加载 截获 输出
[解决办法]
简单点可以将控件的句柄传入,然后dll直接对句柄setwindowtext即可。

[解决办法]

引用:
有一个DLL,内部会使用printf输出信息。

想写一个窗口程序调用DLL,将其输出信息显示到edit内,要如何实现?

多谢!

dll内部使用printf或者其它相关界面操作,我感觉不是很好,dll要做的主要是提供功能服务,你要的信息通过CString或者char*传回,至于要怎么处理这个数据,由界面去决定
[解决办法]
引用:
Quote: 引用:

简单点可以将控件的句柄传入,然后dll直接对句柄setwindowtext即可。


问题在于dll内部暂时无法修改...

使用console程序可以在cmd窗口看到输出,结合网上查到一些资料,写了一个窗体通过pipe调用console程序,结果只截获到console程序的输出。

有什么建议吗?谢谢!

那就重定向输出呗,然后showwindow隐藏掉控制台
[解决办法]
引用:
Quote: 引用:

有一个DLL,内部会使用printf输出信息。

想写一个窗口程序调用DLL,将其输出信息显示到edit内,要如何实现?

多谢!

dll内部使用printf或者其它相关界面操作,我感觉不是很好,dll要做的主要是提供功能服务,你要的信息通过CString或者char*传回,至于要怎么处理这个数据,由界面去决定

他估计可能调用一个人家写好的模块无法修改
[解决办法]
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

简单点可以将控件的句柄传入,然后dll直接对句柄setwindowtext即可。


问题在于dll内部暂时无法修改...

使用console程序可以在cmd窗口看到输出,结合网上查到一些资料,写了一个窗体通过pipe调用console程序,结果只截获到console程序的输出。

有什么建议吗?谢谢!

那就重定向输出呗,然后showwindow隐藏掉控制台


现在是这么做的,即 window窗体->concolse->loadlibraryA(dll),window窗体可以截获cosole的printf,得不到dll的printf信息。

就是说现在这样做了dll里面的printf无法输出到控制台?
[解决办法]
应该可以将控制台重定向到窗口,至于怎么做,你网上搜一下吧
[解决办法]
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

简单点可以将控件的句柄传入,然后dll直接对句柄setwindowtext即可。


问题在于dll内部暂时无法修改...

使用console程序可以在cmd窗口看到输出,结合网上查到一些资料,写了一个窗体通过pipe调用console程序,结果只截获到console程序的输出。

有什么建议吗?谢谢!

那就重定向输出呗,然后showwindow隐藏掉控制台


现在是这么做的,即 window窗体->concolse->loadlibraryA(dll),window窗体可以截获cosole的printf,得不到dll的printf信息。

就是说现在这样做了dll里面的printf无法输出到控制台?


单独控制台cosole程序调用dll可以从控制台看到dll的输出,但窗口调用控制台程序看不到dll的输出。

这应该是你创建控制台方式的问题。
我提供两种思路,一种思路是你另外控制台写个exe并加载dll,这种情况下你直接创建进程来肯定能重定向。另一种是hook printf自己返回即可。
[解决办法]
引用:
Quote: 引用:

应该可以将控制台重定向到窗口,至于怎么做,你网上搜一下吧


试过用cosole程序调用dll,可以在控制台看到输出,再通过窗口openpipe调用控制台,只拿到控制台的printf, dll的printf无法拿到。

这种方式肯定不行啊,dll加载在你的窗口程序的空间内,参照10L

热点排行