Articles of .net

从一个Windows服务打开一个对话窗口

我已经在C#中创build了一个Windows服务应用程序,以特定的时间间隔popup一个对话窗口。 在Visual Studio中debugging时,它运行良好。 然后我创build了一个安装设置。 但是安装完服务之后不会popup对话窗口。 这将是什么原因,我该如何解决?

C# – 未处理的exception – path中的非法字符

我只是在testing一些代码,虽然当调用StartRemoveDuplicate(当它被编译时)抛出一个Exception时,抱怨非法字符: 我的代码如下: class Program { static void Main(string[] args) { foreach (string exename in System.IO.File.ReadAllLines("test.txt")) { Process.Start("test.exe", "\"" + exename + "\"").WaitForExit(); } StartRemoveDuplicate(); } private static void RemoveDuplicate(string sourceFilePath, string destinationFilePath) { var readLines = File.ReadAllLines(sourceFilePath, Encoding.Default); File.WriteAllLines(destinationFilePath, readLines.Distinct().ToArray(), Encoding.Default); } private static void StartRemoveDuplicate() { RemoveDuplicate("C:\test.txt", "C:\test2.txt"); } }

如何将项目添加到窗口的上下文菜单中

我创build了一个虚拟打印机的c#应用程序,但现在我正在寻找启动我的应用程序,而右键单击任何.pdf文件或任何.doc文件 总之我想在窗口的上下文菜单中添加项目,但仅限于.pdf文件和.doc文件。 请告诉我如何实现它。 提前致谢。

了解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; // […]

在C#和Perl之间进行通信

我正在寻找一种可靠的C#和Perl之间的通信方式,我已经尝试过SOAP :: Lite – 虽然我个人不喜欢,还有其他方法可以实现吗?

当应用程序是服务时,SetWinEventHookcallback不起作用

我有一个在.NET 4.0中制作的应用程序挂钩赢得事件,并使用callback来捕获窗口事件,如下所示: //import the methos from the dll [DllImport("user32.dll", SetLastError = true)] private static extern IntPtr SetWinEventHook(int eventMin, int eventMax, IntPtr hmodWinEventProc, WinEventProc lpfnWinEventProc, int idProcess, int idThread, int dwflags); //declare a callback public static WinEventProc _winEventProc = new WinEventProc(WindowEventCallback); //pass this callback to SetWinEventHook SetWinEventHook( EVENT_SYSTEM_FOREGROUND, // eventMin EVENT_SYSTEM_FOREGROUND, // eventMax IntPtr.Zero, // hmodWinEventProc […]

64位.Net应用程序中的内存限制?

在我的笔记本电脑上,运行64位Windows 7和2 GB可用内存(由任务pipe理器报告),我能够做到: var x = new Dictionary<Guid, decimal>( 30 * 1024 *1024 ); 没有更多的RAM在我手中的计算机,我想知道这是否会扩大,以便在具有4 GB可用内存的计算机上,我将能够分配60M项目而不是“只是”30M等等? 还是有其他的限制(.Net和/或Windows),我会碰到之前,我能够消耗所有可用的RAM? 更新:好的,所以我不能分配一个大于2GB的单个对象。 知道这一点很重要! 但是,我当然好奇地想知道,如果能够像这样分配2 Gb的块,我能够充分利用所有的内存: var x = new List<Dictionary<Guid, decimal>>(); for ( var i = 0 ; i < 10 ; i++ ) x.Add( new Dictionary<Guid, decimal>( 30 * 1024 *1024 ) ); 如果电脑具有> 20Gb的可用内存,这是否工作?

C#:如何得到像控制面板程序和function一样安装程序?

我读了很多获取计划的信息。 没有algorithm做我想要的。 我需要像控制面板中一样安装程序。 所以我用: WMI Win32_Product类。 它只显示msi安装的程序。 registry项。 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall 。 同样,一些程序不显示在控制面板中,一些程序显示在控制面板中而不是在这个registry节点中。 那么,这个世界上有没有人知道哪个algorithm使用控制面板来显示已安装的程序? UPD1:是的,我使用64位,我知道有64位安装程序的另一个节点“HKLM \ SOFTWARE \ Wow6432Node \微软\的Windows \ CurrentVersion \卸载”,但下面的代码枚举的HKLM \ SOFTWARE \ Wow6432Node \微软\ CurrentVersion \ Uninstall部分,奇怪… var programs = new List(); string registry_key = @“SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall”; 使用(Microsoft.Win32.RegistryKey key = Registry.LocalMachine.OpenSubKey(registry_key)) { foreach(key.GetSubKeyNames()中的stringsubkey_name) { 使用(RegistryKey subkey […]

如何创build(32位).NET应用程序以使用3 GB RAM?

我正在创build一个需要使用大量RAM的.NET应用程序(C#)。 我最近知道,在32位版本的Windows XP上,我只能使用2 GB,除非我使用/3Gb开关,并在可执行头文件中设置IMAGE_FILE_LARGE_ADDRESS_AWARE标志。 但是,因为我正在开发一个.NET应用程序,我想我不能直接修改可执行文件,可以吗? 那么,我该怎么做,让我的应用程序使用3 GB?

在安装期间检测并要求安装Windows QFE /补丁程序

我们的WiX安装程序将.NET 4.0 WinForms应用程序部署到Windows Vista和7个桌面。 该应用程序包括一个需要.NET补丁的可移植类库 (KB2468871)。 我们需要安装补丁作为先决条件。 修补程序有多种应用方式: 下载KB2468871补丁并安装它 安装便携式库工具 作为使用ClickOnce的先决条件(可能是#1的变体) 使用类似问题的build议,我创build了一个CustomAction来检查我发现的QFE(#1)是否返回true。 private static bool IsPatchAlreadyInstalled() { // If the patch is installed, we can find it using WMI var query = new SelectQuery("SELECT HotFixID FROM Win32_QuickFixEngineering WHERE HotFixID = 'Q2468871' OR HotFixID = 'KB2468871'"); var results = new ManagementObjectSearcher(query).Get(); return results.Count > 0; } […]