Articles of c + +

c#Windows服务是(可能)使用app.config

我正在开发一个windows服务,而且我差不多完成了, 我正在使用Visual Studio 2012。 我连接到App.config文件以读取连接string,因为Windows服务处理数据库中安装的数据。 我可以在我的机器上安装这个Windows服务,但是我问,安装后这个服务是否仍然能够从App.config读取? 或者我必须硬编码的连接string? 我希望我能解释我的问题。 但是,如果你不理解我,请告诉我更多的通知。 最好的问候,

检测subprocess

有没有一种方法(在C + +和Windows XP中)来检测是否有一个进程产生任何其他进程? 例如, system32中的write.exe产生wordpad.exe然后消失,是否有一个函数告诉我,如果进程即将做到这一点? 对于那些感兴趣的我使用msdn的这一部分解决了这个问题: http://msdn.microsoft.com/en-us/library/aa390425(v=VS.85).aspx

如何find使用C语言的桌面path?

任何人都可以告诉我如何使用C语言命令获取桌面path(环境variables)。 情景是我想要在桌面上保存一个文件。我可以做的只是给一个固定的桌面path和文件名来保存文件。 但是在给出这个固定的path之后,我的代码会变得僵硬,并且不能在具有不同桌面path(环境variables)的任何其他计算机上工作。 我的问题是我可以通过捕获桌面的环境variables,使用C语言,使我的代码概括可以在任何基于Windows的机器上工作? 问候

从无应用程序的应用程序启动Windows服务(c ++)

我写了一个Windows服务(它运行良好)。 现在我有一个单独的应用程序,我想要启动这项服务,但似乎这是不可能的,没有pipe理员权限。 如何正确的解决scheme看起来像用户可以开始/停止服务(例如从托盘或应用程序) 恕我直言,它的不好,应用程序必须始终以pipe理员权限开始。

编译用于64位系统上的32位系统崩溃的C#程序和C ++ DLL

我有一个C#应用程序,使用DLL,因为我需要C ++来访问一些非托pipe的user32 APIfunction(我不能使用PInvoke)。 我编译的应用程序和DLL的x86体系结构,一切工作正常的Windows 7 32位。 现在的问题是,在Windows 7 64位,当我尝试使用依赖于DLL的function(但其余的工作正常),应用程序崩溃。 我怀疑这是一个32/64位的问题,所以我试着重新编译x64体系结构的DLL,现在我可以在运行时select在x86和x64之间加载哪个DLL。 但是,当我尝试使用依赖于DLL的function时(这是有道理的,因为我尝试将64位DLL加载到32位程序中),但它仍然崩溃。 我还没有尝试编译应用程序和x64的DLL。 我怀疑它会起作用,但要求我有两个不同的安装者,我不想去那里。 任何线索?

枚举像alt-tab这样的窗口

我正在创build一个替代Vista的替代品,但我列出了所有活动的程序的一些问题。 我使用EnumWindows来获取Windows列表,但是这个列表是巨大的。 当我只有10个窗户打开时,它包含约400个项目。 这似乎是每一个控制和许多其他的东西的好处。 所以我必须以某种方式过滤这个列表,但是我不能像alt-tab那样完全做到这一点。 这是我现在用来过滤列表的代码。 它工作得很好,但我得到了一些不需要的窗口,如Visual Studio中的分离工具窗口,我也想念iTunes和Warcraft3这样的窗口。 private bool ShouldWindowBeDisplayed(IntPtr window) { uint windowStyles = Win32.GetWindowLong(window, GWL.GWL_STYLE); if (((uint)WindowStyles.WS_VISIBLE & windowStyles) != (uint)WindowStyles.WS_VISIBLE || ((uint)WindowExStyles.WS_EX_APPWINDOW & windowStyles) != (uint)WindowExStyles.WS_EX_APPWINDOW) { return true; } return false; }

是否有可能删除由Windows下的进程打开的文件?

为了testing和模拟的目的,我想删除一个当前由我的进程打开的文件。 CreateFile文档声明可以在模式下打开文件( FILE_SHARE_DELETE ),允许打开的句柄指向的文件被另一个操作删除。 (我已经尝试并通过CreateFile(FILE_SHARE_DELETE)+ DeleteFile确认。) 然而,现在我想知道的是,是否有可能以某种方式删除没有上述标志的人打开的文件? 据我了解的DeleteFile文档这是不可能的这个function,如 如果应用程序试图删除为正常I / O打开的文件或作为内存映射文件,DeleteFile函数将失败。 有没有其他方法来删除已打开的文件,但没有设置FILE_SHARE_DELETE标志?

如何获得给定HWND窗口的子窗口?

我有给定窗口的句柄。 我怎样枚举它的子窗口?

了解Windows通用应用程序(UWP)中的扩展执行会话

我努力得到扩展的执行会话为我的Windows通用应用程序工作。 我试图达到的是以下情况。 用户希望通过蓝牙将手机与设备连接。 目前,无论何时屏幕closures或来电或用户最小化应用程序,连接失败,我们重新启动它恢复。 我想为这个正在进行的连接启用扩展执行,这样应用程序即使在最小化(挂起)时也能继续工作。 我想我需要的ExtendedExecutionReason.Unspecified ,因为它应该允许我的应用程序运行长达10分钟的暂停状态(这是绰绰有余我的目的)。 但是,连接总是似乎挂起失败(当我尝试改变我的应用程序的状态从debugging器使用VS的应用程序生命周期下拉列表中,我得到撤销ExtendedExecutionRevokedReason.SystemPolicy )。 我已经启用了我的应用程序的所有电池和后台权限,但仍然不好。 我的代码大致如下: … (on begin connection) ClearExtendedExcecution(); DisplayRequest dr = new DisplayRequest(); var newSession = new ExtendedExecutionSession { Reason = ExtendedExecutionReason.Unspecified, Description = "Pair device" }; newSession.Revoked += SessionRevoked; ExtendedExecutionResult result = await newSession.RequestExtensionAsync(); dr.RequestActive(); try { switch (result) { case ExtendedExecutionResult.Allowed: m_extendedExecutionSession = newSession; // […]

读取进程的进程内存不会返回所有内容

我正在尝试扫描第三方应用程序的内存。 我已经find了地址; 现在是0x0643FB78 。 因为LPMODULEENTRY32->modBaseAddr是0x00400000 , LPMODULEENTRY32->modBaseSize只是0x006FF000 ,所以我永远不会在那里0x006FF000 ,因此我可以扫描这个模块的最大地址是0x00AFF000 。 这是否意味着我寻找的地址是否存在于另一个进程/模块/线程/内? 我非常有信心,我所拥有的过程确实包含了地址。 那么我应该如何访问内存呢? 谢谢。