Articles of Windows

了解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,但是每当我这样做会做一些奇怪的事情,比如让视图偏离中心,或者只占用屏幕的四分之一。 有没有实现这一目标的最佳实践方法?

WOW64困境(.lnk快捷键)

我使用的是Windows 7(x64)和Delphi 2010。 我在写一个模拟开始菜单的组件。 但是,我遇到了以下问题: 如果我尝试用ShellExecute打开一个快捷方式(.lnk文件),只要%ProgramFiles%是快捷方式的目标path的一部分,就会失败(它将查看C:\ Program Files(x86)文件夹而不是C :\ Program Files ); 如果%ProgramFiles%是图标文件path的一部分(与上面相同的问题),则ShGetFileInfo无法提取系统图像列表中图标的正确索引。 有没有解决上述问题,或者我必须等待本地64位delphi可用于此工作?

与Python的Windows上的os.path.islink

在使用Python 2.7的Windows 7上,如何检测path是否是符号链接? 这不工作os.path.islink() ,它说,如果返回false或不支持和我提供的path肯定是一个符号链接,所以我假设它不支持在Windows上? 我能做什么?