Articles of .net

Win32 vs .Net

.NET比Win32更好吗? 这两者的利弊,在哪些情况下会比另一方好。 微软是否发布.Net作为Win32的替代品? 我不是在问需要维护的项目的数量,而是关于正在开发的新项目,哪个会更好。 你觉得.Net从win32(缺less使用dllImport)缺乏重要的东西? 你认为Win32将被.Net所取代 我在问这个问题,因为我和我的一个朋友发生了争执,因为我们都同意这两个问题都必须深入研究。我的朋友认为.Net是不完整的,我说它几乎可以pipe理任何非驱动任务有关。 .Net在哪里失败?

在C#/ VB.NET或C ++ Win32中启用/禁用Aero

如何在C#.NET或C ++ Win32中禁用航空效果? 这是我在C / C ++中的testing代码,但只适用于我的应用程序是runnig #include <dwmapi.h> int main() { DwmEnableComposition(DWM_EC_DISABLECOMPOSITION); while(true); //… return 0; } //LINK dwmapi.lib 谢谢 编辑:我想通了 #include <Windows.h> #include <dwmapi.h> int WINAPI WinMain(HINSTANCE hI, HINSTANCE hP, PSTR str, int c) { DwmEnableComposition(DWM_EC_DISABLECOMPOSITION); MSG msg; ZeroMemory(&msg, sizeof(MSG)); while(GetMessage(&msg, 0, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return 0; } //Memory: 314KB […]

以编程方式中断活动屏幕保护程序?

原因:我正在开发一个需要在桌面上显示信息的紧急警报应用程序。 当客户端收到警报时,会popup一个窗口。 如果屏幕保护程序处于活动状态,或者显示器处于待机状态,则警报将不可见。 我想知道是否有可能通过某种程序化的鼠标移动或系统调用唤醒计算机,以便警报可见。 我认为鼠标移动或按键唤醒的原因是因为硬件中断,所以它可能是不可能的。 目前,该项目正在C#中实施。 我很想听听有关Windows,MAC和Linux的解决scheme。 这是客户的要求。 我已经考虑了以下几点: 在大多数电脑闲置后,用户必须login。 那些电脑不会得到警报 如果屏幕保护程序处于活动状态,那么很可能无论如何都没有人在电脑上。 我不是试图: 防止屏幕保护程序或节能模式一起启动。

什么时候我的进程被杀死了?

在Windows Server 2003上运行本机和托pipe代码的混合进程。 当我在进程资源pipe理器中杀死进程时,它会进入100%cpu状态,并在离开之前保持一段时间(有时甚至是10分钟)。 在这段时间里,我不能“杀”它或做任何事情。 当我通过进程pipe理器杀死进程来杀死进程时会发生什么样的情况? 我相信这不会调用任何析构函数,那么可能会导致这样的CPU使用? 谢谢,丹

如何使方法运行在“后台”(线程?)

我目前有一些代码循环通过文本文件寻找一个特定的短语。 但是,当这个方法运行时,整个应用程序将被locking。 我假设,因为它循环,这是我想要的。 我希望这发生在后台,所以正常的方法和用户与应用程序的交互仍然可以完成。 这怎么做/改进? private void CheckLog() { while (true) { // lets get a break Thread.Sleep(5000); if (!File.Exists("Command.bat")) { continue; } using (StreamReader sr = File.OpenText("Command.bat")) { string s = ""; while ((s = sr.ReadLine()) != null) { if (s.Contains("mp4:production/")) { // output it MessageBox.Show(s); } } } } }

如何从dns域名获得简短的“域名”?

原谅我,如果我对这个主题的理解有一些缺点,我只知道我所知道的关于域名和活动目录,因为我从与他们合作。 有两个不同的“版本”的域名。 首先是我称之为company.int (对于用户max@company.int)的DNS域名,其次是像prefixname (对于用户前缀名称\ max),并且它们都指的是相同的事情。 我的问题是,给“company.int”,如何将其转换为“prefixname”? 编辑:或者给定一个System.DirectoryServices.ActiveDirectory.Domain对象,如何获得前缀名? 编辑2:另外,是否有一个除此之外的“prefixname”的名称? 我永远不知道该怎么称呼它。 编辑3:我试图得到的价值是相同的值显示在“login到”(它列出的域和您的计算机)的Windowslogin屏幕上。 编辑4:我已经想通了以下几点可以得到的价值: SecurityIdentifier sid = GetCurrentUserSID(); string prefixName = sid.Translate(typeof(NTAccount)).Value.Split('\\')[0]; 有谁知道更好的方法来获得这个名字?

为性能计数器安装一个Total实例

VS 2005,C#2.0,.NET 2.0 / 3.0,Win2003 我正在尝试为MultiInstance安装一组性能计数器。 我注意到,即使没有其他实例,一些系统性能计数器类别也能保持“ 总计 ”状态。 ASP.NET应用程序2.0.50727是一个例子。 所以我一直在试图复制这个。 我在Installer类中创build了以下例程,然后将其添加到安装项目中的自定义操作中。 public override void Install(System.Collections.IDictionary stateSaver) { //Debugger.Break(); CounterCreationData data = new CounterCreationData("ZCounter", "ZCtrHelp", PerformanceCounterType.NumberOfItems32); PerformanceCounterCategory.Create("ZCategory", "ZCatHelp", PerformanceCounterCategoryType.MultiInstance, new CounterCreationDataCollection(new CounterCreationData[] { data })); PerformanceCounter counter = new PerformanceCounter(); counter.CategoryName = "ZCategory"; counter.CounterName = "ZCounter"; counter.InstanceName = "ZTotal"; counter.InstanceLifetime = PerformanceCounterInstanceLifetime.Global; counter.ReadOnly = false; […]

.Net 3.5 Windows窗体应用程序:64位Vista上的x86与x64加载时间

我们正在开发Winforms应用程序,并正在优化启动时间。 该应用程序运行在64位Vista机器上。 在我们的testing中,我们发现什么似乎是一个直观的结果。 其他所有的情况相同,只有一半的时间针对32位和64位的负载。 任何人都可以谈到为什么? 谢谢。 [编辑]我们通过ClickOnce部署应用程序,从我们的研究开始在一个独特的沙箱应用程序。 所以它总是冷冷的开始,所以看起来提高性能在这里是徒劳的。 我们的主要问题是项目中存在32位dll。 一旦我们在x86上定位项目(即使它在x64上运行),加载时间减半。 [/编辑]

添加应用程序清单以确保在Windows XP,Vista和7上提升权限的可靠程度如何?

这种方法有多稳定,以确保我的pipe理应用程序在启动时请求pipe理员权限: <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> </requestedPrivileges> 这在Windows 7上运行良好,但我没有访问XP和Vista,所以不能告诉。

填充Windows XP安全事件日志

我需要填写Windows安全事件日志到接近完整状态。 由于不能写访问这个日志,任何人都可以build议一个可以编程执行的操作,这会添加一个条目到这个日志? 只要它给出一个条目就不需要有任何意义(一个开销最小的将是需要的,因为它需要被执行几千次)。 这纯粹是为了testing平台上的testing目的而需要的,任何肮脏的解决scheme都可以做到。 唯一的要求是它是.NET 2.0(C#)。