Articles of .net

用graphics自定义字体样式

我有以下字体列表: 我没有通过使用它们的问题 new Font("XXXX Sans", 21, FontStyle.Bold, GraphicsUnit.Pixel) 但是,当我需要使用非标准的字体样式时,我该怎么做? 所有提供的是枚举,并不适合。

如何自杀一个控制台的应用程序?

我有一个控制台应用程序创build/启动其他subprocess。 我需要检查一下,如果它本身或他的ProcessChilds死锁,并杀死关联进程树的最年轻。 有了这个目标,他的进程孩子可能有相同的“recursion”algorithm。 这个想法并不是要杀死最年轻的过程,而是要通过命令让自己最年轻的自杀(某种说法)。 有没有一种方法可以在stream程内部调用一个asynchronous方法(也许和他的孩子应该存在相同的方法)来做到这一点? 当然,我可以使用该文件的一个持久性文件和一个“WatchDog / KeepAliveLook”,当它不存在的时候,它会自动执行(自杀),但我相信有一个更清晰的方法可以做到这一点。

Windows:列出并启动与扩展名关联的应用程序

如何确定与特定扩展相关联的应用程序(例如.JPG),然后确定该应用程序的可执行文件位于何处,以便可以通过调用System.Diagnostics.Process.Start(…)来启动该应用程序。 我已经知道如何读写registry。 这是registry的布局,使得以标准方式难以确定哪些应用程序与扩展相关联,有什么显示名称以及可执行文件的位置。

无法强制WebBrowser控件使用当前版本的IE呈现

我需要Windows窗体应用程序中的WebBrowser控件使用最新版本的Internet Explorer呈现页面,或至less安装在我的机器上的最新版本 – 即IE 11。 几个星期前,在我开始这个项目的工作之前,我遇到了一个名为DevDocs.io的网站,并在IE 11中运行。 但是,即使在应用registry黑客之后,我无法在WebBrowser控件中查看DevDocs.io,因为显然我正在使用“不支持”的浏览器。 然后接着说我需要使用Firefox,Chrome或IE 10+。 我以为我使用IE 10 +,因为我已经将DWORD添加到registry中。 我遇到了很多网站,只是不显示或行为正常,因为WebBrowser控件仍然不是呈现在IE11,或10,或9 … 有两件事我想知道: 是否有一个方法或类暴露WebBrowser控件使用的渲染引擎? DWORDregistry为什么不能正常工作,我怎样才能使它工作? 要清楚的是,我已经到了registry,并抬起头: HKEY LOCAL MACHINE > SOFTWARE > MICROSOFT > INTERNET EXPLORER > MAIN > FEATURE CONTROL > FEATURE_BROWSER_EMULATION并添加了一个DWORD值myApp.exe和11000 。 11000是得到它使用IE11呈现,按照http://msdn.microsoft.com/en-us/library/ee330730%28VS.85%29.aspx#browser_emulation 。

在Win7中刷新Windows资源pipe理器

我的程序设置"HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"值"Hidden" 。 Hovewer我无法刷新资源pipe理器来考虑这个变化。 我试过了: 1) SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, IntPtr.Zero, IntPtr.Zero);` 2) SHELLSTATE state = new SHELLSTATE(); state.fShowAllObjects = (uint)1; SHGetSetSettings(ref state, SSF.SSF_SHOWALLOBJECTS, true); 3) SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, SPI_SETNONCLIENTMETRICS, 0, SMTO_ABORTIFHUNG, 5000, ref dwResult); 4) SendMessage(HWND_BROADCAST, WM_COMMAND, 28931 /* Refresh */, 0); 没有任何工作 所以我该怎么做? 如果我用F5自己刷新资源pipe理器,那么它工作。 Hovewer我想要一个优雅的解决scheme,所以它会刷新显示在任何地方,即使在OpenFile / SaveFile对话框,这是当前打开。 我正在使用C#.NET,Win7。 状态更新#1 正如Anders指出的那样,使用COM刷新资源pipe理器窗口有一个简单的方法: Guid CLSID_ShellApplication = new Guid("13709620-C279-11CE-A49E-444553540000"); Type shellApplicationType […]

创build线程,就像它是在C#中的分离的应用程序

尝试在multithreading应用程序上使用WebBrowser时,我遇到了一些exception。 COM组件,受保护的内存和其他exception,我用WebBrowser做东西。 我只是放弃了,回到我的单线程版本,工作正常。 我会张贴代码,但是当我在这么多的地方得到例外时,很难本地化问题的原因。 因此,如果作为一个单线程应用程序运行良好,并且如果当我运行同一个应用程序的多个实例,它也可以正常工作,应该有一种方法来模拟从单个应用程序运行的几个应用程序,而不必实际做一个分离的应用程序我会从主应用程序运行。 我的问题是,我怎样才能让Windows把我的线程看作是不同的实例呢? 这应该消除这个问题,因为,正如我所说,当他们是不同的实例,我没有得到任何exception。 希望我已经清楚了。

如何以编程方式检测是否在Windows桌面应用程序中启用/禁用了JavaScript? (WebBrowser控件)

我有一个应用程序将HTML写入.NET WinForms应用程序中的WebBrowser控件。 我想以某种方式编程检测,如果Internet设置有JavaScript(或活动脚本相反)禁用。 我猜你需要使用像WMI这样的东西来查询IE安全设置。 编辑#1:这是很重要的,我知道如果在显示HTML之前启用JavaScript,所以解决方法修改DOM显示警告或使用标记不适用于我的具体情况。 在我的情况下,如果javascript不可用,我会在本地RichTextBox中显示内容,而我也想报告JS是否启用回服务器应用程序,所以我可以告诉pipe理员谁发送警报5%或75%的用户有JS启用与否。

运行WPF程序时防止Windows工作站(桌面)locking

问题: 我有一个WPF 全屏应用程序,它充当仪表板。 计算机处于域和域策略,强制计算机在最后一次用户活动后10分钟内被locking。 我想防止工作站(或桌面)自动locking。 这种行为的例子:Windows Media Player,在电影运行时阻止这种行为。 已知的解决scheme(有点解决方法): 有可能发送一个Win32鼠标移动事件每隔一段时间(例如,每分钟) 每隔一定的时间间隔(例如,每分钟)可以向程序发送一个键(例如“左移”键) 题: 如何防止Windows工作站locking而不使用这些解决方法? 免责声明: 我很确定,应该有一个类似的问题在StackOverflow的某个地方回答,但我没有find任何。 如果你能把我指向正确的方向,我将不胜感激。

文件被另一个进程使用。 如何知道哪个进程?

我一直在我的程序中得到这个exception。 我怎么知道哪个进程locking它,无论是由程序代码或通过做一些与Windows的东西? System.IO.IOException : The process cannot access the file 'file.ext' because it is being used by another process.

如何获得一个Windows服务的命令行参数?

我正在寻找一种方法来找出任何 Windows服务的命令行参数。 对于非服务进程,可以在Windows任务pipe理器中find命令行参数,也可以通过使用WMI以编程方式find这个post 。 不幸的是,这两个解决scheme不适用于由ServiceController.Start(String [] args)方法启动的Windows服务。 即使传入了一些参数,它们也只能显示命令行中的可执行文件path。 有人可以解释两种情况(服务与非服务stream程)之间的区别吗? 有没有办法找出Windows服务的参数? 更新: 我也尝试创build一个简单的服务,只logging任何命令行参数到事件日志。 我用"sc.exe start <my service> <arg1>"启动它,并确认<arg1>已写入事件日志。 但是,没有任何解决scheme为我工作。 我所看到的仍然只是可执行文件的path。 我的操作系统版本是Windows Server 2008 R2 SP1 x64企业版。