草庐IT

c# - 如何以编程方式确定 Windows 任务栏是否隐藏?

我需要知道Windows任务栏是否隐藏。我相信没有.NET方法可以做到这一点,而且我也遇到过很多“如何隐藏和显示任务栏”示例,但我没有看到任何基于我正在寻找的东西。我不熟悉WindowsAPI,所以很难看懂传统的Windows代码。有人可以告诉我一篇文章或类型代码告诉我任务栏的当前状态是否隐藏吗?我正在用C#编写代码。谢谢。 最佳答案 winSharp93提供了一个似乎有效的辅助类(“FindoutSize(andposition)ofthetaskbar”)。它使用Win32的SHAppBarMessagefunction.以下是

c# - 如何全局检测点击(触摸输入)而不是鼠标点击?

我想制作一个应用程序,当用户触摸他的屏幕时会显示自己。它不应该用于点击。我查找了Windows7/8中的触摸handle。但是我看到每一个触摸窗口都要用RegisterTouchWindow注册长话短说有没有办法让触摸点位置在我的窗外(全局)? 最佳答案 RegisterTouchWindow不再是Win8应用程序所必需的。据我所知,有几种方法可以在有一定限制的情况下实现您的目的。Thisarticlehere适用于Win7和8。但需要供应商ID和触摸屏的产品ID。您的应用程序可能无法在某些触摸设备上正常工作。使用RegisterP

c# - 什么是 C# 线程类型?

在三种线程类型(内核级、用户级和混合)之间,C#(或更普遍的.NET)使用哪种类型? 最佳答案 内核线程(1:1)术语“内核线程”可用于指代完全在内核空间中运行的实际线程,也可指代由内核调度的用户空间线程。术语“内核支持”线程指的是后者,即在用户空间中运行但由内核促进的线程,这通常意味着内核调度它们。内核线程享有特权,可以访问用户模式线程禁止访问的内容。看看维基百科上的“Ring(ComputerSecurity)”。在Windows上,用户模式对应于Ring3,而内核模式对应于Ring0。用户级线程(N:1)“用户级线程”通常是指

c# - 来自 user32.dll 的 FindWindowEx 使用 dllimport 返回零句柄和 127 错误代码

我需要以编程方式处理另一个Windows应用程序,搜索谷歌我找到了一个示例,它使用DLLImport属性处理Windows计算器并将user32.dll函数导入C#中的托管函数。应用程序正在运行,我正在获取主窗口的句柄,即计算器本身,但之后的代码无法正常工作。FindWindowEx方法不返回计算器子项的句柄,例如按钮和文本框。我尝试在DLLImport上使用SetLastError=True并发现我收到错误代码127,即“未找到过程”。这是我从中获得示例应用程序的链接:http://www.codeproject.com/script/Articles/ArticleVersion.

c# - 如果我只有一个窗口句柄 (hWnd),我该如何 GetModuleFileName()?

我正在尝试获取位于我的C#2.0应用程序之外的窗口的可执行文件的名称。我的应用程序当前使用来自“user32.dll”的GetForegroundWindow()调用获取窗口句柄(hWnd)。根据我能够进行的挖掘,我想我想使用GetModuleFileNameEx()函数(来自PSAPI)来获取名称,但是GetModuleFileNameEx()需要一个进程的句柄,而不是一个窗口。是否可以从窗口句柄获取进程句柄?(需要先获取窗口的线程句柄吗?)编辑了第一句话,使我想做的事情更清楚。更新!这是我发现对我有用的C#代码。唯一需要注意的是,偶尔它会返回驱动器号为“?”的文件/路径。而不是实际

c# - 使用 hWnd 设置 Window.Owner

在我的WPF/C#应用程序中,我使用如下代码创建了一个对话窗口:Windowdialog=newMyDialog()asWindow;dialog.Owner=Window.GetWindow(this);dialog.ShowDialog();如何将对话框所有者设置为另一个应用程序窗口的hWnd?我需要的功能只是在对话框可见时阻止“所有者窗口”。 最佳答案 使用WindowInteropHelper:Windowdialog=newMyDialog();WindowInteropHelperwih=newWindowInterop

c# - 如何从虚拟键代码转换为 System.Windows.Forms.Keys

如果我使用win32调用拦截按键,我现在就有了一个键码。有没有办法将其转换为System.Windows.Forms.Keys值? 最佳答案 使用KeyInterop.KeyFromVirtualKey(). 关于c#-如何从虚拟键代码转换为System.Windows.Forms.Keys,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/554015/

C# 相当于 C (WinAPI) 中的 DllMain

我有一个较旧的应用程序(大约2005年),它接受dll插件。该应用程序最初是为Win32C插件设计的,但我有一个可用的C#dll模板。我的问题:我需要做一些一次性初始化,这在Win32Cdll中将在DllMain中完成:BOOLAPIENTRYDllMain(HANDLEhModule,DWORDul_reason_for_call,LPVOIDlpReserved){[one-timestuffhere...]}是否有与此等效的C#?我的C#模板中没有“DllMain”。我尝试了文字C#解释,但没有成功:dll可以工作,但不会触发DllMain函数。publicstaticboolD

c# - 为什么使用 IntPtr 作为句柄?

在使用PInvoke时,我注意到我们需要使用IntPtr来引用Windows句柄。我想知道为什么不直接使用int作为句柄?我对句柄的理解是它只是一个整数值。 最佳答案 Windows句柄被定义为本地机器指针大小的整数。这样一来,如果需要,他们就可以secret地成为指导者。(句柄可能不是指针,但如果操作系统实现者认为有必要,它是允许的。出于安全原因,它们通常不是指针;它如果他们实际上是指针,那么人们很容易滥用该系统。)C#中定义为32位整数的int,在64位机器上太小了。IntPtr被定义为一个整数,可以容纳机器大小的指针。这就是为

c# - 如何在 C# 中记录低级操作系统文件事务?

由于文件/进程监视器在过滤和unnecessaryduplicationwhenlogging方面存在不足,我想重新创建该程序的功能并实时记录所有Windows文件操作。我想记录时间、进程名、源路径、目的路径、操作、结果、详情等各种属性,如ProcessMonitordoes.我怎样才能让C#从操作系统中提取这些信息?编辑:正如zett42所指出的,FileSystemWatcher将无法正常工作,例如,从进程本身创建的文件事件将不会被拦截。例如,thesetransactions都没有出现,即使我添加了事件:Changed、Created、Renamed和Deleted到FileSy