Articles of Windows

你如何发送一个命名pipe道string从umnanaged托pipe代码空间?

我似乎有一个命名pipe道101的问题。 我有一个非常简单的设置来连接从C ++非托pipe应用程序发送到C#托pipe应用程序的单工命名pipe道。 pipe道连接,但我不能通过pipe道发送“消息”,除非我closures似乎冲洗缓冲区并传递消息的句柄。 这就像消息被阻止。 我已经尝试颠倒客户机/服务器的angular色,并调用它们与不同的国旗组合,没有任何运气。 我可以很容易地从C#托pipe到C ++非托pipe的另一个方向发送消息。 有没有人有任何见解。 任何人都可以成功地发送消息从C托pipe非C托pipe? 我可以find大量的内部amanged或非pipe理的pipe道的例子,但不能相互pipe理/从unamanged – 只是声称能够做到这一点。 在清单中,为了清楚起见,我省略了许多包装材料。 我认为相关的关键是pipe道连接/创build/读取和写入方法。 不要担心在这里阻塞/线程太多。 C#服务器端 // This runs in its own thread and so it is OK to block private void ConnectToClient() { // This server will listen to the sending client if (m_InPipeStream == null) { m_InPipeStream = new NamedPipeServerStream("TestPipe", PipeDirection.In, 1); […]

PythonMagick无法find我的PDF文件

我已经从非官方Windows二进制文件下载并安装PythonMagick for python 2.7,64位Windows 7 。 我试图运行这个代码(Processor.py) import PythonMagick pdf = 'test.pdf' p = PythonMagick.Image() p.density('600') p.read(pdf) p.write('doc.jpg') 在这个文件夹内(D:\ Python Projects \ Sheet Music Reader) 但是,使用相对的pdfpath或pdf = "D:\\Python Projects\\Sheet Music Reader"导致此错误; Traceback (most recent call last): File "D:/Python Projects/Sheet Music Reader/Processor.py", line 6, in <module> p.read(pdf) RuntimeError: Magick: PostscriptDelegateFailed `D:\Python Projects\Sheet Music Reader\test.pdf': No such […]

当调用进程外时,MiniDumpWriteDump中的访问冲突

MiniDumpWriteDump函数的文档声明 应尽可能从单独的进程中调用MiniDumpWriteDump ,而不是从被转储的目标进程中调用。 所以我写了一个小的MFC崩溃处理程序,就是这么做的。 我遵循Hans Passant的这个SO回答中的build议,也就是说,即使exception指针在崩溃处理程序的上下文中无效,我也会将崩溃程序中的exception指针的值传递给崩溃处理程序。 当我在一个debugging版本中运行testing的时候,这个效果很好,但是当我切换到一个版本的时候,崩溃处理器程序崩溃了,在MiniDumpWriteDump函数中发生访问冲突。 我很难过 为什么这应该在debugging版本中工作,而不是在发布版本中? 这是疯狂的,因为访问违规往往是访问无效指针的指标,而我在崩溃处理程序中接收的exception指针确实是无效的 – 但另一方面,我被告知这应该不重要, MiniDumpWriteDump正在解释指针崩溃过程的上下文(从指针来源处)。 任何想法我可能做错了什么? 在旁注中:Hans在他的回答中提出了一个解决scheme,在该解决scheme中,看门狗进程被预先启动,然后在碰撞过程触发时进入hibernate状态并醒来。 我的解决scheme略有不同:我只是在发生崩溃时启动崩溃处理程序,然后通过命令行参数将崩溃程序中的必要信息传递给崩溃处理程序。 我仔细检查了传递的信息是否正确,特别是exception指针。

一个C#游戏来统治他们(iOS,Android,WP7,W7,Mac OS X和XBOX)

嘿,我正在学习C#,只是想到了一个很酷的想法。 考虑到一个游戏很简单。 比如,一个经典的文本input风格的游戏的重制,理论上来说,一个C#游戏可以移植到上面列出的所有平台上,原始源代码的改变很less,对吗? 很明显,用户界面将不得不进行调整,我非常怀疑这样的游戏真的会在每个平台上生存下来! 但是,尽pipeC#真的很重,通过不同的方法,这可以工作,对吗? 或者,我是否必须将C#源代码更改为Objective-C? Android甚至有他们支持的官方语言,如苹果和MS吗? 这是一个奇怪的问题,但如果这是真的,那么C#是一个很好的多用途语言,尽pipe它主要是基于MS认可的。

如何从32位进程读取64位registry项?

我一直使用来自HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography的关键MachineGuid的值来唯一标识主机,但是在64位计算机上运行的32位进程中,该值似乎丢失。 我想这是在Wow6432Node,它确实缺less的地方search。 根据这个,你应该能够通过添加一个标志来正确的键,但是下面的代码仍然不能完成这项工作。 我错过了什么? const KEY_WOW64_64KEY=$0100; var r:HKEY; s:string; i,l:integer; begin //use cryptography machineguid, keep a local copy of this in initialization? l:=40; if RegOpenKeyEx(HKEY_LOCAL_MACHINE,PChar('Software\Microsoft\Cryptography'), 0,KEY_QUERY_VALUE,r)=ERROR_SUCCESS then begin SetLength(s,l); if RegQueryValue(r,'MachineGuid',PChar(s),l)=ERROR_SUCCESS then begin SetLength(s,l); RegCloseKey(r); end else begin //try from-32-to-64 RegCloseKey(r); if RegOpenKeyEx(HKEY_LOCAL_MACHINE,PChar('Software\Microsoft\Cryptography'), 0,KEY_QUERY_VALUE or KEY_WOW64_64KEY,r)=ERROR_SUCCESS then begin l:=40; if RegQueryValue(r,'MachineGuid',PChar(s),l)=ERROR_SUCCESS then SetLength(s,l) else l:=0; […]

是否可以pipe脚本到WScript?

我想执行由我的应用程序使用Windows脚本宿主(wscript.exe或cscript.exe)生成的简单的VBScript / JScript,而不生成临时脚本文件。 我没有find一个命令行选项来读取脚本forms的标准inputstream,但我没有发现在WWW的几个地方,文件的WScript错误消息“无法从标准input读取脚本”。 MSDN Windows脚本主机参考 – 错误消息 那么是否有一个隐藏的命令行选项从标准中读取脚本? 目前我的程序生成一个小脚本,并将其写入临时文件。 然后创build一个运行cscript.exe的subprocess,等待它完成,然后再次删除临时文件。 我想摆脱临时文件,并将脚本直接传递给脚本宿主,如果可能的话。 (例如,将其pipe道传输到cscript.exe或将其作为类似于cmd.exe的/ c命令行选项的命令行参数的一部分传递)

我可以使用什么C ++库将PDF转换为Windows上的图像?

我正在研究一个需要分析图像的项目; 这些图像的主要来源是networking摄像机,但最近我们被要求添加对上传的文件和扫描仪的支持。 这很好,大多数情况下,除了他们希望我们能够使用PDF格式的文档。 我需要一个原始像素位图进行处理; 在Mac上,我可以使用CoreGraphics将PDF加载到图像缓冲区中,但是我不确定如何在Windows上实现此function。 总结一下:我需要一个C ++库(最好带BSD这样的许可证,因为它是封闭的,但可能LGPL可以工作),我可以用它来打开一个PDF文件,并将每个页面导出为一个渲染的图像缓冲区位图。

运行时提升Java应用程序

我的软件出现了一个令人讨厌的问题。 我正在制作与其他现有软件(游戏)交互的程序。 用户报告说他以pipe理员权限运行游戏,在这种情况下,我的程序停止工作。 简短的调查显示,有些人确实需要在pipe理员帐户下运行游戏,有些则不需要。 如果我的程序能够检测到这一点,并且如果游戏以pipe理员帐户运行,则警告用户: 如果用户点击“Elevate”,我想问Windows提升运行我的jar文件的java.exe并调用典型的UAC对话框。 很明显,这次的问题不是关于Java更新,而是JRE 我的问题是:这可能吗? Windows可以提升我的java.exe实例的权限? java有办法做到这一点? 或者我可以使用命令行命令? 我想避免重新启动程序(尽pipe这可能不是那么重要)。 编辑:如果你看看评论,你会看到没有避免重新启动一个应用程序 – 进程只能开始提升,而不是boost 。 这不幸的是,这个问题转移了问题。 基本上,现在听起来更像是:“ 如何用pipe理员权限重新启动我的应用程序? ”。 当然,除非有两个java.exe共享一个jar的窍门…

使用wget调用URL并根据URL的内容返回ERRORLEVEL

客户端具有基于Windows的内部服务器,在其上编辑CMS的内容。 数据在夜间与现场networking服务器同步。 这是缓慢的Internet连接的解决方法。 有两件事情要同步:新文件(已sorting)和一个MySQL数据库。 为此,我正在编写一个脚本,使用mysqldump将数据库导出到转储文件中,并上载转储。 上传过程使用名为ScriptFTP的第三方工具(一种FTP自动化工具)完成。 然后我需要在目标服务器上运行一个基于PHP的导入脚本。 根据此脚本的返回值,ScriptFTP操作继续,并且一些目录被重命名。 我需要一个外部工具,因为scriptFTP只支持FTP调用。 我在想wget的Windows版本。 在scriptFTP中,我可以执行任何批处理或exe文件,但是我只能parsing调用导致的错误级别而不是stdout输出。 这意味着我需要返回错误errorlevel 1如果PHP导入操作出错,错误errorlevel 0如果它顺利。 另外,显然,如果根本无法连接到导入脚本,我需要返回一个肯定的错误级别。 我可以完全控制导入PHP脚本,并可以决定错误:输出错误消息,返回一个头,不pipe。 你将如何去运行wget(或任何其他工具来启动服务器端导入),并返回一个错误级别取决于PHP脚本返回什么? 我现在最好的方法是构build一个执行wget命令的batch file,将结果存储在一个文件中,batch file根据文件的内容返回错误级别0或1。 但我真的不知道如何使用批量编程来匹配文件的内容。

在互联网连接或断开连接时收到通知

我有一个在WPF和C#下开发的桌面应用程序。NET 4.0客户端框架,必须显示或隐藏一些数据根据互联网是否可用在PC上。 这意味着如果互联网断开或连接以便作出反应,我必须尽快检测。 (示例可能与无线networking断开连接或拔下网线) 正如我研究了一下,我发现NetworkChange类中存在一个名为NetworkAvailabilityChanged的事件,每当连接发生变化时都会触发事件( 链接到文档 )。 我正在开发一个Windows 8的机器,当我尝试它的事件没有被解雇,但当我在Windows 7上运行应用程序的事件被解雇。 正如在文档中说,与框架4.0的兼容性,该事件是直到Windows 7,但看在文档框架4.5兼容性说windows 8的同样的事件。 问题是,即使我将项目的目标框架切换到4.5(这不是主意),事件不会在Windows 8上触发。 有没有不兼容的问题,我没有意识到? 连接改变时有没有更好的方法来通知? 如果可能的话,我需要在Windows Vista,7和8上运行的Framework 4.0客户端解决scheme