Articles of Windows

COM服务器作为Windows服务,不能传递数组作为函数参数

我正在实施COM服务器(使用ATL)作为Windows服务。 我在服务头中定义了以下方法: STDMETHOD(SetBytes)(long lenSource, const BYTE* pSource, VARIANT_BOOL *pResult); 这个方法在IDL文件中声明: [ object, uuid(351C5A5F-3EB8-4CC5-AB79-6DCD27C2F7E0), dual, pointer_default(unique) ] interface ISampleInterface: IUnknown { HRESULT SetBytes([in] long lenSource, [in,ref,size_is(lenSource)] const BYTE* pSource, [out,retval] VARIANT_BOOL *pResult); }; 我从我的testing应用程序调用它像这样: CoInitialize(NULL); IUnknownPtr unknown_ptr; HRESULT hr = unknown_ptr.CreateInstance(__uuidof(MyLib::SampleManager)); if (FAILED(hr)) { … }; MyLib::ISampleInterfacePtr sample_ptr; sample_ptr = unknown_ptr; // no check here, assume […]

Windows CE或Windows Embedded Standard?

即时build立一个交互式的便携式广告活动设备(x86平台)与触摸屏和东西。 这对于设备来说是更好的操作系统,Win CE或Winembedded式标准(XPE)。 我需要提供对Flash等多媒体平台的支持,方便广告开发。 谢谢。

了解MsgWaitForMultipleObjects

我有一个主要的gui线程,我想保持响应用户的行动,如移动对话框,resize等,而我有一个后台线程做一些任务。 在过去,我使用WaitForSingleObject超时,以便在完成后台线程等待时处理GUI事件。 我最近阅读了关于MsgWaitForMultipleObjects的文章,这个文章看起来解决了我有点干净的问题。 有人能告诉我在下面的代码中的错误和我要去哪里错了吗? 当我点击button启动线程时,gui没有反应。 我做了一个对话框的应用程序,正在播放主要的UI线程。 我有一个button来启动一个线程,并使用MsgWaitForMultipleObjects等待线程句柄,但是当线程完成/发送信号时,允许所有的消息最终被处理。 谢谢。 UINT MyThreadProc( LPVOID pParam ) { ThreadData* pObject = (ThreadData*)pParam; if (pObject == NULL || !pObject->IsKindOf(RUNTIME_CLASS(ThreadData))) return 1; // Do some processing. int x = 0; while (x++ < 5000) { for (int i=0; i<50000; i++) double sum = sqrt((double)i+1) * sqrt((double)i+2); } return 0; } button处理程序 […]

在Windows中用冒号(“:”)作为文件名

我创build的文件名称是“asdf:qwer”。 'asdf'文件被创build,并且我input了一些单词。 “asdf”的容量是0,Hex没有内容。 但我可以得到的话。 他们从哪里来? 什么是冒号(:)在Windowsshell的function?

从Windowsbatch file检测ANSI兼容的控制台?

Windows 10控制台主机conhost.exe 对ANSI转义序列具有本机支持 ,而旧版本则不支持。 如何检测batch file是否支持控制台ANSI支持? 是否可以直接从batch file调用GetConsoleMode或其他Windows API调用?

在一个Windows cmd行运行两个命令,一个命令是SET命令

[目的] 这个简单的命令序列在Windows的CMD shell中运行: dir & echo hello 将列出文件和目录并回显string。 但是,以下命令序列不能按预期运行(至less由我): C:\Users\Administrator>set name=value & echo %name% %name% C:\Users\Administrator>echo %name% value C:\Users\Administrator> 我们可以看到,第一个回声无法获得环境。 你能帮忙评论吗? 任何评论将不胜感激! PS:操作系统:Windows 7 X64家庭前

windows批处理命令来确定进程的工作目录

为什么我要问的是,我的程序使用第三方软件,有时会留下孤立进程没有链接回到我的程序或第三方进程。 这些孤立的进程开始累积起来,随着时间的推移消耗大量的资源。 我想定期杀掉它们,但为了让我这样做,我必须确定它们是由我的程序创build的,而不是其他程序。 我查看了Process Explorer中的孤立进程,并在查看进程属性时看到一个名为“Current Directory”的字段。 孤立进程的当前目录是我的程序的安装目录。 这会让我放心,我正在杀死我的程序创build的过程。 由于这些进程是由第三方创build的,我只需要通过在其上运行taskkill创build它们就可以杀死它们。 有没有办法在batch file中使用开箱即用的Windows命令找出进程的当前工作目录? 如果这可以通过wmic查询,这将是可取的,但我似乎无法find当前工作目录,当使用wmic。 我假设如果Process Explorer能够获得这个信息,我应该能够通过一些批处理命令得到它。

使用IE9embeddedWebBrowser控件时覆盖IE设置

我有一个应用程序(使用MFC编写的C ++,但我不认为这是特别相关的)embeddedInternet Explorer ActiveX WebBrowser控件的目的是显示一些HTML页面。 一个要求一直是使用应用程序的字体名称和大小设置作为HTML的默认设置,而不是Internet Exporer的默认设置。 为此,应用程序实现IDocHostUIHandler2 COM接口,将其传递给WebBrowser控件。 这会导致控件调用应用程序的GetOptionKeyPath实现,该应用程序允许应用程序设置WebBrowser控件从中获取其设置的registry位置。 用Sysinternals的工具武装,看看IE使用哪些键来查找字体名称和大小,这已经足以做我所需要的。 但是,Internet Explorer 9的出现却是一个令人不快的惊喜:在我testing过的所有机器上安装了IE9,WebBrowser控件使用自己的设置,忽略了应用程序的registry位置。 使用debugging器进行testing表明WebBrowser控件从不调用提供的GetOptionKeyPath。 多一点实验表明,IE9 WebBrowser控件正在调用类似(但不完全相同)的GetOverrideKeyPath方法:据称这提供了一种方法来覆盖IE设置,同时回落到IE的实际设置,如果没有在registry的相关部分find。 不幸的是,这有两个问题:1)它不是我想要的,2)在进入IE默认registry设置之前,IE9并不总是在GetOverrideKeyPathregistry位置下进行检查。 查看GetOptionKeyPath MSDN页面,有类似的一些抱怨,但没有解决scheme。 有没有人find一个干净的方式来说服WebBrowser控制恢复到实际调用GetOptionKeyPath的前IE9行为logging?

Windows上命名pipe道与IPC的UDP

为什么命名pipe道在本地Windows机器上通过UDP更适合IPC(进程间通信)? 或UDP有时可能会更好?

在PC上Xbox上的Letterboxing和缩放

有没有一种方法可以基本上以1080p(或720p)为基础开发我的XNA游戏作为我的默认分辨率,然后根据设置的分辨率将游戏中的所有内容缩放到合适的大小,而不必在每个Sprite中设置缩放因子Draw()方法? 我的想法是,我可以根据1080p的分辨率开发所有graphics,configuration坐标等,但是对于XBOX,只需将res设置为720p并缩小(以便XBOX将所有内容都视为720,从而处理开发人员文档中提到的所有分辨率)和PC上的分辨率或宽高比,自动对非16:9分辨率的视图进行分组。 我已经有了我的游戏设置,所以spritebatch.begin()和end()在所有其他Draw调用的最高级别被调用,所以我可以在技术上传递缩放matrix,但是每当我这样做会做一些奇怪的事情,比如让视图偏离中心,或者只占用屏幕的四分之一。 有没有实现这一目标的最佳实践方法?