在python中捕获OutputDebugString信息

你好,
我正在尝试从Win32平台命令中获取输出
OutputDebugstring.我已经使用以下C ++代码作为一个
指南:http://groups.google.com/group/micro...3c957675242c7e
我已经能够将大多数东西转化为python,但是我有
一直无法使其工作.我使用pywin扩展名来打电话
创建并创建所需的事件.但是当我等待
使用Waitonsingleevent呼叫的事件,它无限期地悬挂
当我在其他过程中打电话给OutputDebugstring时(两者都
Python使用Win32API和实际C ++ Win32程序进行处理.我
还使用MMAP将文件(使用fileno -1)映射到" dbwin_buffer"
但是,无论呼叫如何,该缓冲区似乎一直都是空的
要输出Debugstring.
我在这部分窗户方面的经验有限,但是如果有人有
任何我都会非常欣赏的想法.
谢谢,
丹尼尔

# 回答1


丹布罗斯顿写道:
好吧,无礼,我也无法正常工作!我使用了下面的代码
因此,您可以与您的比较,看看我们是否在做同样的事情,
但是我看不到任何明显的问题.您可能已经看到的此页面:http://www.unixwiz.net/techtips/outputdebugstring.html
很有用,但是他们与静音的安全问题有关
当我是本地管理员和我的两个过程时,似乎不适用
在我的桌面上运行.
我确实在mmapmodule.c代码中进行了挖掘(第二次
一个月内!),从发布的代码中出现了一些差异:
- python代码使用零安全属性,这应表示:
完全访问所有人.
- python代码假定访问写的意思是:创建文件
page_readwrite的映射并映射为写的,
仅读取的代码图.
这些似乎都不重要,但是谁知道呢?这
问题当然是设计了outputdebugstring功能
默默失败,所以您不知道调试器的哪一部分
导致它失败 - 或者完全是其他东西.
我已经(很快)在Google上扫描了MS组,我看不到
任何有用的东西.希望其他人或Win32上的其他人
列表比我在这里拥有更多的经验和专业知识. (不会
要艰难!)
TJG
导入系统<br />
导入mmap<br />
导入Win32Security<br />
导入Win32Event<br />
def main(args):<br />
sd = win32security.security_descriptor()<br />
dacl = win32security.acl()<br />
SD.SetsecurityDescriptordOdacl(1,DACL,0)<br />
sa = win32security.security_attributes()<br />
sa.security_descriptor = sd<br />
buffer_ready = win32event.createevent(SA,0,0," dbwin_buffer_ready")<br />
data_ready = win32event.createevent(SA,0,0," dbwin_data_ready")<br />
buffer = mmap.mmap(0,4096," dbwin_buffer",mmap.access_read)<br />
win32event.setevent(buffer_ready)<br />
win32event.waitforsingleobject(data_ready,1000)== win32event.wait_timeout:<br />
经过<br />
如果__name__ =='__ main __':<br />
main(sys.argv [1:])
# 回答2



哇,比我预期的要多,非常感谢
研究.在 e与静音无关,问题确实存在
与权限有关.为了记录,在Windows XP上
导入系统
导入mmap
导入Win32Event
buffer_ready = win32event.createevent(无,0,0,
" dbwin_buffer_ready")
data_ready = win32event.createevent(无,0,0," dbwin_data_ready")
缓冲区= mmap.mmap(0,4096," dbwin_buffer",mmap.access_write)
win32event.setevent(buffer_ready)
win32event.waitforsingleobject(data_ready,1000)==
win32event.wait_timeout:
打印" Timeed Out"
打印"被信号"
似乎有效.缓冲区似乎需要写入访问
(我可以从以下方式阅读并获得有用的数据:
打印缓冲区.阅读(4)
打印缓冲区.阅读(4092)
也没有安全对象.我不是一个弄清楚这一点的人,所以我
真的不确定为什么它可以工作...但似乎.
# 回答3


丹布罗斯顿写道:
出色的!如果我添加基于此的解决方案,您是否介意
我如何能?到我的网站[1](当然是适当认可的)?
TJG
[1] http://timgolden.me.uk/python/win32_how_do_i.html(_@_ _)

标签: python

添加新评论