Articles of 窗口

Windows控制台程序stdout在使用pipe道redirect时被缓冲

我有一个长期运行的服务器程序(比如程序A),它是用QT / c ++编写的。 该程序是不是很稳定,所以我决定写一个python脚本来重新启动它,如果它崩溃。 问题是程序可能开始失败(如果我给它一个使用中的端口),打印错误,然后挂在那里没有退出,所以我必须监视程序的标准输出,并在失败的启动时杀死它。 这是我的最终代码(呃,其实这是好的,你可以忽略它): self.subp = subprocess.Popen( r'.\A.exe -server %d' % portnum, stdout=subprocess.PIPE, bufsize=1) for line in iter(self.subp.stdout.readline, ''): print(line, end='') 但我发现我不能从subprocess的标准输出读取任何东西,readline方法只是阻止那里,如果我杀了一个进程,python脚本只是退出没有任何输出。 在一开始,我认为这是一个subprocess模块的问题,但经过一些testing,我发现它不是。 如果我用一些其他的Windows控制台程序replaceA.exe命令行,ping -t例如,一切工作正常。 所以我认为这可能是A程序的问题。 幸运的是,我有A的源代码,这里是一个输出处理: printf("Server is starting on port %u\n", Config.ServerPort); if(server->listen()) printf("Starting successfully\n"); else printf("Starting failed!\n"); 经过一些search,我添加fflush(stdout); 到这段代码的末尾,重build程序,现在它工作 所以我的问题是,我还是不明白,原来的A程序代码有什么问题? 不用强制刷新,它可以在程序启动后立即在Windows控制台中正确打印这些string。 为什么在输出上使用pipe道时输出缓冲? 我在标准c实现读取,输出将自动刷新换行,但为什么不在我的情况? 这是一个Windows的问题,或编译器的问题? A程序是用QT / C ++编译的,QT版本是4.7.4(x32),C ++编译器是用QT(GCC […]

在Windows WPF中垂直最大化

我正在WPF应用程序上工作,并在窗口周围添加了一个清晰的边框,以便可以从主窗口外部resize。 我已经覆盖了MINMAXINFO ,如下所示。 用下面的代码,当我做一个规则最大化你不能看到不可见的边框。 但是,当我尝试垂直最大化时(通过将窗口的顶部拖到屏幕的顶部),会显示不可见的边框。 我试图捕捉所有的消息,我找不到一个单独的消息垂直最大化。 如何删除这种情况下的不可见边框? private static void WmGetMinMaxInfo(System.IntPtr hwnd, System.IntPtr lParam) { MINMAXINFO mmi = (MINMAXINFO)Marshal.PtrToStructure(lParam, typeof(MINMAXINFO)); // Adjust the maximized size and position to fit the work area of the correct monitor int MONITOR_DEFAULTTONEAREST = 0x00000002; System.IntPtr monitor = MonitorFromWindow(hwnd, MONITOR_DEFAULTTONEAREST); if (monitor != System.IntPtr.Zero) { MONITORINFO monitorInfo = new MONITORINFO(); […]

使用Python进行Windows进程pipe理

我需要一个脚本来检查一个特定的进程是否正在运行,如果找不到,就返回一些东西。 我知道这可以使用subprocess完成,但有一个更简单的方法来做到这一点?

我想在特定的航空窗口上禁用阴影效果

我想在特定的航空窗口上禁用阴影效果。 我所拥有的就是这个窗口的HWND,这可能吗?

searchWindows 7中的PHP文件的内容

我花了很长时间寻找一种方法来search在Windows 7中的一些我的PHP文件的短语。 我所做的事情包括: 在Windows资源pipe理器中启用“总是search文件名和内容” 在索引选项中的“索引属性和文件内容以启用内容search”列表中添加php; 确保目录被索引; 确保我拥有该目录的权限(C:\ Program Files(x86)\ Apache Software Foundation \ Apache2.2 \ htdocs)。 还有什么我应该尝试? 这甚至有可能在Windows 7中做到这一点? 如果没有,我将不得不安装Cygwin,我现在不愿意这样做。

使用纯c ++或java设置文件夹权限

我正在维护一个使用J2SE开发的软件,(但是我是c#开发人员,实际上没有Java的丰富经验)。 该软件使用访问作为数据存储,这个访问数据库存储在数据库文件夹。 当用户从“标准用户”而不是pipe理员安装此应用程序时,在Windows 7或Vista中,他无法获得数据库文件夹的权限。 为了使软件运行,我们需要为当前用户(标准用户)添加“修改”权限。 其实我search了如何使用Java,但没有发现什么,但我find了一点资源,但还不够。 问题是“我怎样才能授予'修改'权限到当前logging的用户,在c + +(旧c + +不是.net)或使用Java)?

Windows的页面故障监视器

有没有在运行时显示的工具,每个线程的页面错误增量? 基本上我有一个应用程序,导致大量的页面错误,我想确定导致最大的线程。

Rails – 5集合中的ExecJS :: ProgramErrortesting

我创build了一个控制器集合的名称的新项目(安装rails 2.3,然后更新到5.1版本,gem install bundler,捆绑安装,ruby 2.33)..我试图运行collections夹/索引我得到这个错误的Windows 。 我做了一些关于这个错误的研究,遵循了所有的指示 将gem'coffee-script-source','1.8.0'放到我的gem文件中,然后绑定更新coffee-script-source。 我也将应用程序更改为默认值(位于application.html.erb),但是当我将其更改为默认值时,它给了我另一个错误“集合中的Sprockets :: Rails :: Helper :: AssetNotFound#testing资产”default.css“不在资产pipe道中“。 问题:我该如何解决这个错误?

沉迷于win32api + COM和SO的答案

从我这里的另一个问题,我问如何从Windows媒体播放器和Zune检索当前正在播放的歌曲,我从一个C ++开发人员的答案谁给了我一个解释我将如何做这个WMP。 但是,我不是C ++开发人员,也不是很熟悉pywin32库。 最重要的是,所有这些文件(特别是关于WMP)是非常可怕的 。 因此,我需要你的帮助,了解我将如何在Python中完成以下任务。 资源 我用C ++编写代码来打印当前在WMP中播放的媒体名称。 这是一个简单的控制台应用程序(78行代码)。 脚步: 1)实现了一个基本的COM对象实现IUnknown,IOleClientSite,IServiceProvider和IWMPRemoteMediaServices。 使用ATL模板CComObjectRootEx这很简单(你的里程可能会有所不同)。 需要(简单)代码的唯一方法是IServiceProvider :: QueryService和IWMPRemoteMediaServices :: GetServiceType。 所有其他方法可能会返回E_NOTIMPL 2)实例化“WMPlayer.OCX”COM对象(在我的情况下,通过CoCreateInstance) 3)通过QueryInterface从对象中检索一个IOleObject接口指针 4) Instanciate在1)中看到的类(我使用CComObject <> :: CreateInstance模板) 5)使用从3)得到的接口的SetClientSite方法,将一个指针传递给你的OleClientSite实现。 6)在SetClientSite调用期间,WMP会callback你:fisrt询问一个IServiceProvider接口指针,然后调用QueryService方法,询问一个IWMPRemoteMediaServices接口指针。 返回你的IWMPRemoteMediaServices的实现,第三,你将通过GetServiceType再次被调用。 您必须然后返回“远程”。 您现在连接到WMP运行实例 7)查询COM对象的IWMPMedia接口指针 8)如果7)没有给NULL,请阅读IWMPMedia :: name属性。 9)完成 以上所有内容都是使用VS2010 / Windows Seven进行testing,并且运行WMP(如果没有运行媒体播放器进程,则什么也不做)。 我不知道是否可以/想要在Python中实现COM接口和对象。 如果您对我的C ++代码感兴趣,请告诉我。 您可以在C ++ DLL中使用该代码,然后从Python中调用它。 我知道一点关于win32api。 在第一步,我真的不知道该怎么做,使用IOleClientSite在msdn文档中search结果,这是一个接口。 但是,这就是我已经陷入困境的地方。 我无法find任何东西(可能只是我可怕的search技巧)在Python中使用这些东西。 第二步: WMP = win32com.client.Dispatch("WMPlayer.OCX") […]

如何使用Windows + m键盘快捷键最小化我的应用程序?

我在VB.NET 2008中有一个简单的winforms应用程序。我使用完全自定义外观的表单,所以没有标题栏,因此没有最小化,最大化和closuresbutton。 我已经创build了自定义控件来replace这些。 如果我的应用程序正在运行,并且点击“显示桌面”快捷方式,所有程序都会正确地最小化,包括我的。 但是,如果我使用Windows + M快捷方式,除了我最小化以外的所有程序。 看起来,缺less内置的最小化button在窗体上导致我的应用程序忽略Windows + M。 如何检测Windows + M ,特别是如果我的应用程序不活动,或者如何复制内置最小化button的function? 编辑: 我试着实现下面的代码,没有成功。 Const WM_SIZE As Integer = &H5 Const SIZE_MINIMIZED As Integer = &H1 Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message) MyBase.WndProc(m) If m.Msg = WM_SIZE Then If m.WParam = SIZE_MINIMIZED Then //Minimize the form. Me.WindowState = FormWindowState.Minimized End If End […]