Articles of .net

检测外部进程是否交互式,并有任何可见的用户界面

我似乎无法find一种方法来确定一个Process是否有一个用户界面,例如一个窗口,这是用户可见的? Environment.UserInteractive对外部进程没有用处 process.MainWindowHandle != IntPtr.Zero似乎总是在我的testing中返回false? 我想区分说Notepad和conhost

如何从我的安装程序中设置此registry值

在我的.msi安装程序包中,我有一个C#自定义操作,将registry值写入: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run 自定义操作是推迟的,因为我需要提升一些我试图安装的密钥的权限。 但是,因为它被延迟,所以此操作将写入系统帐户的当前用户,因为它是以提升的权限启动的,所以我的registry值实际上被写入: HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Run 如何让安装程序将此registry值写入启动安装软件包的用户的registry中而不是系统帐户的registry中?

如何在通知区域创build丰富的工具提示和丰富的气球

我一直在想,每当你调用NotifyIcon类的ShowBalloonTip方法时,你会得到如下的气球工具提示: 图1:标准气球工具提示 某些应用程序和Microsoft产品能够显示比“简单”气球提示更多的内容。 这里有一些样品: 图2:Windows更新气球工具提示 驱动程序安装提示http://i.msdn.microsoft.com/dynimg/IC295019.png 图3:硬件驱动程序安装气球工具提示 图4:硬件删除工具提示(程序:USB安全删除) 仔细看图2,图3和图4,发现它们不是标准的气球工具提示! 图2具有不同的形状,可能来自设置Region属性。 它也有一个比标准ToolTipIcon大得多的自定义图标。 图3使用标准的形状(我认为),但它有一个自定义的图标,不用说是大于默认的ToolTipIcon大小。 图4使用了一个标准的ToolTipIcon,但它具有不同的形状。 我的问题是如何创build在.NET中的通知区域中看到的任何“富”气球工具提示? 我可以处理WinAPI以及它可以产生必要的输出。

如何从另一个应用程序的窗口中的控件读取数据?

我必须编写一个应用程序来观察另一个应用程序,并从窗口中提取信息。 从其他应用程序访问窗口并从其控件获取数据的最佳方式是什么?

如何拦截Windows中的物理电源button?

是否有任何方法来拦截物理电源button的事件,以便对此事件作出反应? 即: Push button -> My program catches the event -> My program performs action. 我的目标是编写一个C#程序/服务来监听电源button事件,然后打开“问我该怎么做”的closures对话框(就像在Windows XP的时代那样)。

我可以在Windows XP或7上使用最新的.NET框架吗?

我正在开发一个必须在Windows XP,7,8(桌面模式)上运行的应用程序。 我可以使用哪个版本的.net? 如果这个版本不是XP或Windows 7的默认版本,将它包含在我的应用程序安装程序中是一个好主意吗?

在Windows中比在Linux中慢的端口监听?

我写了一个简单的程序,通过侦听指定的端口来打开端口范围。 我注意到,这个程序需要不同的时间在Windows和Linux上打开从端口1到端口65535的所有端口。 在Linux上,大约需要2秒钟打开所有的端口。 在Windows上,它接近半小时(我没有测量确切的分钟数,因为我从来没有等待完成)。 在这方面,Windows客观上是比较慢的,如果是的话,为什么我可以做任何事情来让它运行得更快? 请注意,虽然testing运行在非常不同的硬件上,但考虑到时序在数量级上有所不同,可能并不重要。 // This is a very basic TCP port listener that allows you to listen on a port range // If you run this program outside of firewall and run a port scanner inside a firewall // pointing to the ip address where this program runs, the port scanner will […]

使用Gmail发送邮件

public static bool SendMail(string toList, string from, string ccList, string subject, string body) { MailMessage message = new MailMessage(); SmtpClient smtpClient = new SmtpClient(); try { MailAddress fromAddress = new MailAddress(from); message.From = fromAddress; message.To.Add(toList); if (ccList != null && ccList != string.Empty) message.CC.Add(ccList); message.Subject = subject; message.IsBodyHtml = true; message.Body = body; smtpClient.DeliveryMethod = […]

性能监视器.NET CLR Networking 4.0.0.0实例命名

我试图使用性能计数器确定多less字节我的应用程序已发送或接收。 我按照这里提供的build议解决scheme: 计算带宽 ,但我的应用程序的实例不显示在“.NET CLRnetworking”类别。 exception消息: “实例”ApplicationName [8824]“在指定的类别中不存在” (我已经在我的App.config中添加了<performanceCounters enabled="true"/> ,并且在一些networking活动之后仍然无法find它) 所以我开始使用性能监视器,亲眼看到错误。 正如所料,我的应用程序不会出现在.NET CLR Networking类别中,但可以在.NET CLR Networking 4.0.0.0类别中find。 但是,我的问题是,我不知道如何生成实例名称。 以下是我在性能监视器中看到的实例的名称: ApplicationName.exe_p4952_r15_ad1 。 到目前为止,我已经知道第一部分必须由ProcessName和PID组成 ,但是我不知道最后两个部分( “r15”和“ad1” )是从哪里来的。 有人知道最后两件是什么吗? 一种解决scheme是枚举在“.NET CLR Networking 4.0.0.0”类别中find的所有实例,并searchApplicationName.exe_PID *,但希望直接查找正确的名称(如果可能)。

WM_GETFONT与标准的flatstyle问题

我正在尝试获取其他应用程序中的button的字体。 当我尝试WM_GETFONT ,它返回0.这个我的代码: [DllImport("User32.DLL")] public static extern IntPtr SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam); IntPtr fx = SendMessage(button1.Handle, 0x31, 0, 0); 我已经知道问题的原因,它由于FlatStyle属性 看到这个链接 http://www.siao2.com/2008/09/26/8965526.aspx 我怎么解决这个问题? 我在Windows 7下使用C#。