Tag: winapi

Win32 API函数以编程方式启用/禁用设备

我正在编写一个小型的C#应用​​程序,以便在检测到另一个鼠标设备时禁用设备(我的笔记本电脑触摸板),并在未检测到鼠标时再次启用触摸板。 我甚至无法禁用设备pipe理器中的触摸板(它运行在默认的鼠标类驱动程序上)。 我正在进入设备驱动程序开发,所以我想也许我可以写一个filter驱动程序,只接受IOCTLs启用和禁用在设备堆栈上传递鼠标事件消息,并通过原始PDO从用户模式获取消息。 但是, 我问这个问题 ,有人build议我可以通过SetupDi ..函数在用户模式下执行此操作。 这将是非常好的,因为这个原始的PDO通信方法是一个PITA的工作。 我以前只使用过SetupDiGetClassDevs ,而且有很多这样的人,对于这部分Win32 API有更多经验的人可以快速告诉我应该调用什么来停止/禁用鼠标设备或其接口,或者如果有在框架的黑暗angular落里会有这样的事情发生(也许在WMI中)。 更新(2009年9月24日)我想出了如何使用filter驱动程序来做这件事,并发布了我的原始问题 。 我仍然想知道是否有可能直接从Win32启用或禁用设备,如果是这样的话,那么我将把这个问题留给开放。

如何从进程ID获取主窗口句柄?

如何从进程ID获取主窗口句柄? 我想把这个窗口放在前面。 它在“Process Explorer”中运行良好。

什么是消息泵?

在这个线程 (大约一年前发布)中,讨论了在非交互式会话中运行Word的问题。 这个(相当强)的build议是不这样做的。 在其中的一篇文章中提到:“Office API都假设你在桌面上的交互式会话中运行Office,具有显示器,键盘和鼠标,最重要的是一个消息泵。 我不确定那是什么 (我已经用C#编写了大约一年;我的其他编程经验主要用于ColdFusion。) 更新: 我的程序通过大量的RTF文件运行,以提取用于构build医疗报告编号的两条信息。 我没有试图弄清楚RTF中的格式化指令是如何工作的,而是决定在Word中打开它们,并从那里拉出文本(而不是真的启动GUI)。 偶尔,程序在处理一个文件的过程中被打断,并且留下了一个附加在该文件上的Word线程(我仍然需要弄清楚如何closures这个文件)。 当我重新运行程序时,当然我得到了一个使用该文件的线程的通知,并且我想打开一个只读副本? 当我说“是”时,Word GUI突然从无处popup,开始处理文件。 我想知道为什么发生这种情况。 但它看起来像也许一旦对话框popup消息泵开始推动主要的graphics用户界面到Windows?

如何configurationOpenFileDialog来select文件夹?

在VS .NET中,当你为一个项目select一个文件夹时,会显示一个看起来像OpenFileDialog或SaveFileDialog的对话框,但是被设置为只接受文件夹。 自从我看到这个以后,我就想知道它是如何完成的。 我知道FolderBrowserDialog,但我从来没有真正喜欢这个对话框。 它开始太小,不让我利用能够键入path的优势。 现在我几乎可以肯定,.NET没有办法做到这一点,但是我也很好奇你是如何从非托pipe代码中做到这一点的。 在从零开始完全重新实现对话框之后,如何修改对话框来实现这种行为? 我也想重申,我知道FolderBrowserDialog,但有时我不喜欢使用它,除了真正好奇如何configuration对话框以这种方式。 告诉我只使用FolderBrowserDialog可以帮助我保持一致的UI体验,但是不能满足我的好奇心,所以它不会成为答案。 这也不是一个Vista的具体事情; 自VS .NET 2003以来,我一直在看这个对话框,所以在Win2k和WinXP中是可行的。 这不是一个“我想知道正确的方法来做这个”的问题,而更多的是“我从VS 2003开始想要做这件事以来一直对此感到好奇”的问题。 我明白,Vista的文件对话框有一个选项可以做到这一点,但它一直在XP工作,所以我知道他们做了一些工作。 Vista的具体答案不是答案,因为Vista不存在于问题的上下文中。 更新:我接受Scott Wisniewski的答案,因为它带有一个工作示例,但是我认为Serge指向对话定制(从.NET中可以确定是讨厌的,但确实有效),Mark Ransom找出MS可能为此任务推出了一个自定义对话框。

Win32进程如何获得其父进程的PID?

我目前正在将命令行上的PID传递给孩子,但有没有办法在Win32 API中做到这一点? 或者,如果父母已经死亡,那么有人可以减轻我的恐惧,即我经过的PID可能会在一段时间后属于另一个过程?

如何在Windows下编译hello world?

我想在Windows下编写一些基本的东西,我正在使用NASM,但是我什么都不能工作。 如何在没有Windows上的C函数的帮助下编写和编译hello world?

如何使用DoEvents()而不是“邪恶”?

一个简单的searchDoEvents带来了很多的结果,基本上,导致: DoEvents是邪恶的。 不要使用它。 使用线程代替。 一般引用的原因是: 重入问题 performance不佳 可用性问题(例如,在禁用的窗口上拖放) 但是一些值得注意的Win32函数(如TrackPopupMenu和DoDragDrop 执行自己的消息处理以保持UI的响应,就像DoEvents一样。 但是,这些问题似乎都没有遇到这些问题(performance,重新入侵等)。 他们是如何做到的呢? 他们如何避免DoEvents引用的问题? (或者他们?)

获取特定应用程序的屏幕截图

我知道我可以使用Graphics.CopyFromScreen()获取整个屏幕的屏幕截图。 但是,如果我只想要特定应用程序的屏幕截图呢?

如何更改菜单hover颜色

如何更改Windows应用程序菜单的hover(鼠标hover)颜色? 在C#中的任何方法? 要么 通过使用Windows API(DllImport)的任何方式? 见图:

Windows服务如何执行GUI应用程序?

我写了一个Windows服务,允许我远程运行和停止应用程序。 这些应用程序使用CreateProcess运行,这对我来说很有用,因为它们大多数只执行后端处理。 最近,我需要运行向当前login用户呈现GUI的应用程序。 如何在C ++中编写代码以允许我的服务find当前活动的桌面并在其上运行GUI?