Articles of .net

如何在.NET中确定我的Monitor的真实像素大小?

我想在我的应用程序中以“真实大小”显示图像。 为此,我需要知道显示器的像素大小。 我知道窗口显示分辨率名义上是96dpi,但为了我的目的,我想要一个更好的猜测。 我知道这些信息可能并不总是可用或准确的(例如较旧的CRT显示器),但是我想用液晶显示器的前景来想象这应该是可能的! 有没有办法获得我的显示器的像素大小? 有没有办法确定像素大小是否准确? .NET API的首选(我找不到它们),但Win32也可以,我很乐意P / Invoke。

如何释放占用的内存

我的项目中有一个主窗口,主窗口中还有许多其他的子窗口。 我注意到。 当我打开主窗口占用内存1500K时,打开一个子窗口时就增加了占用内存6000K。 当我打开第二个窗口做同样的事情。 当我closures两个子窗口时,占用的内存不会被释放。 所以我想要的是当我closures子窗口时释放占用的内存。 我怎么能做到这一点? 如果可能的话,请在vb.net中给我一些代码示例。 这个问题经常在Local NET上的计算机上而不是在我的计算机上(开发人员计算机上有SQL服务器)。

指定的模块无法find0x8007007E

在表单的构造函数中,当我逐步执行代码时,会调用以相同forms声明的方法。 在我可以进入方法之前,我得到一个System.IO.FileNotFoundException消息“指定的模块找不到。(从HRESULTexception:0x8007007E)”。 我尝试input的成员方法被声明为不安全的,因为它处理非托pipe的C ++代码,但正如我所说,我永远不能步入方法。 因为它听起来像一个DLL依赖问题,所以我运行了Dependency Walker。 依赖walker只显示SHLWAPI.DLL下的MPR.DLL的问题。 问题的方法是我从来没有打电话的WNetRestoreConnectionA。 依赖walker FAQ表明,这不是一个问题http://dependencywalker.com/faq.html 。 此外,这不是一个Web应用程序或任何东西。 我不幸被VS2005困住了。 造成这个问题的原因有哪些? 任何想法,我可能会丢失或如何我可以debugging这个问题?

缺less对System.Diagnostics.Process的引用

我有一个应用程序,我正在build立closures计算机 我尝试使用System.Management; 但它告诉我添加一个引用,没有这样的事情在添加引用列表中我尝试使用此代码,但进程有一个红色的波浪状 System.Diagnostics.Process.Start("Shutdown", "-s -t 10"); 关于如何closures任何想法?

如何检测SD卡何时插入?

我正在用C ++编写一个PC应用程序,需要检测用户何时将SD卡连接到他/她的计算机上。 我知道如何检测何时连接读卡器,但是我不知道如何检测各个卡连接/移除的时间。 Windows有一个IO接口来检测SD卡的到达/移除吗? [更新]build议的WM_DEVICECHANGE技术仅适用于检测SD卡读卡器何时插入。它不会检测单个卡插入读卡器的时间。

是否有可能build立一个控制台应用程序,双击时不显示控制台窗口?

有关: 我应该在我的应用程序中包含命令行模式吗? 如何抓取父进程的标准输出? 控制台应用程序可以检测到它是否已经从资源pipe理器运行? 我想构build一个控制台应用程序,通常从命令行运行。 但是,当它从资源pipe理器中双击(而不是从cmd.exe提示符运行),那么我想程序不显示控制台窗口。 我想避免这个: 替代文字http://img.zgserver.com/windows/1088p5s.png 可能吗? 编辑我猜想另一种方法来问它是否有可能让程序知道它是如何被调用的 – 无论是通过双击或通过命令行 ? 我在.NET上工作,在Windows上。 编辑2:从这个旧的新事博客文章,我学到了一些好东西。 这是我现在知道的… 在Windows中,EXE文件被标记为GUI或非GUI。 使用csc.exe,通过/target:winexe或/target:exe 。 在执行过程中的第一条指令之前,Windows内核将设置执行环境。 此时,如果EXE被标记为GUI,则内核将进程的stdin / stdout设置为NULL,如果非GUI(命令行)内核创build控制台并将进程的stdin / stdout设置为安慰。 启动进程时,如果没有标准input/标准输出(== /target:winexe ),则立即返callback用。 所以,从cmd.exe启动一个GUI应用程序,你会立即得到你的cmd提示符。 如果存在stdin / stdout,并且从cmd.exe运行,则父级cmd.exe将等待进程退出。 “立即返回”是非常重要的,因为如果你编写一个GUI应用程序来连接到它的父级控制台,你将能够执行console.writeline等,但是cmd.exe提示符是活动的。 用户可以键入新的命令,开始一个新的过程,等等。 换句话说,从winexe中,只需使用AttachConsole(-1)连接到父控制台就不会将其“变成”控制台应用程序。 此时我认为允许应用程序使用控制台(如果从cmd.exe调用的话),而不是在双击时使用它的唯一方法是将exe定义为常规控制台exe( /target:exe ),并在适当的时候启动窗口 。 您仍然可以看到简要的控制台窗口。 我还没有想到如何知道它是从资源pipe理器或cmd.exe启动,但我越来越接近.. 解答 无法构build不显示控制台窗口的控制台应用程序。 有可能构build一个控制台应用程序,很快就隐藏窗口,但不能太快,以至于窗口永远不会出现。 现在,要确定一个控制台应用程序是否从资源pipe理器启动,有人build议查看它正在运行的控制台 (从mgb的答案 , 知识库文章99115 ): int left = Console.CursorLeft; int top […]

硬盘卷path为完整文件path

我有一个MSVC ++应用程序,吐出其他应用程序打开的文件句柄的硬盘卷path,格式如下: \Device\HarddiskVolume4\Users\User\Documents\Visual Studio 2013\Projects\FileLocker\FileLocker\bin\Debug\Test.txt 我想将这些path转换为Windows中的这些文件的完整path。 例如,我想将上面的硬盘卷path转换为完整的Windows文件path及其相应的驱动器号: C:\Users\User\Documents\Visual Studio 2013\Projects\FileLocker\FileLocker\bin\Debug\Test.txt 我看了网上,但我还没有find任何明确的资源做这个以编程方式。 如何做呢?

将窗口焦点恢复到之前的所有者

我有一个应用程序,位于系统托盘,当双击打开一个窗口,相当标准; 然而,当你关上窗户时,我希望窗户在我被打开之前被重点聚焦。 如果通过键盘快捷键popup我的窗口,我可以在窗口显示前使用GetForegroundWindow API调用,然后在窗口closures后使用SetForegroundWindow方法(使用第一个调用的值)恢复重点。 当您通过系统托盘打开窗口时,这不起作用,因为用户本质上已经使系统托盘成为焦点。 我已经尝试使用GetForegroundWindow , GetWindow和GetTopMostWindow的组合来尝试导航z顺序来查找系统托盘之后的第二个窗口(假设系统托盘已经跳到顶部,因此在逻辑上下一个将是原来的前面)。 虽然我没有取得任何成就,但是这些function的结果是无用的,因为它们似乎没有给我任何逻辑结构。 有没有人有任何想法,我怎么能做到这一点? 我曾经想过某种背景监视器,它只是坐在监视器前面的窗口并存储一个指针,但最好是片状的。 这是在Windows(我个人在x64 Server 2008)和.Net 3.5。

如何获取mscorlib.ni.lib(.Net Framework 3.5)的PDB文件

做了很多search之后,我仍然无法得到问题的解决scheme。 我有一个mdmp文件。 调用堆栈显示它正在使用mscorlib.ni.dll。 所以要获取函数信息,我需要得到它的pdb文件。 mscorlib.ni.dll的版本是2.0.50727.3655。 我相信它来自.Net Framework 3.5。 由于mscorlib.ni.dll是由ngen.exe生成的本机优化的dll,所以我需要使用ngen.exe createpdb生成此dll的pdf。 ngen.exe createpdb "C:\Windows\assembly\…\mscorlib.ni.dll" "C:\SymbolCache" 结果如下: 在“C:\ Windows \ Microsoft.NET \ Framework64 \ v3.5”文件夹中找不到ngen.exe 我可以在文件夹“C:\ Windows \ Microsoft.NET \ Framework64 \ v2”中findngen.exe,但没有createpdb选项。 我可以在文件夹“C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319”中findngen.exe,它确实支持createpdb选项,但报告错误。 Microsoft(R)CLR本机映像生成器 – 版本4.0.30319.18408版权所有(c)Microsoft Corporation。 版权所有。 在本机映像“C:\ Windows \ assembly \ NativeImages_v2.0.507 7_64 \ mscorlib \ 5cd1c2848ff40eb0a8c149706ee394fa […]

计划的控制台应用程序与Windows服务? 什么时候适用每个?

我刚刚读到: 作为Windows服务开发应用程序有什么好处? 但我仍然不确定何时使用Windows服务。 我有几个任务需要间隔运行(即每隔5分钟)。 我应该使用哪种types的项目? 是否有任何应该是Windows服务的应用程序的例子? 谢谢, 凯尔