Articles of winapi

在multithreading应用程序中等待variables的最佳方法是什么?

我想为multithreading程序做如下的事情: // wait for variable to become true but don't hog resources // then re-sync queues 这是一个很好的解决scheme吗? while (!ready) { Thread.Sleep(250); // pause for 1/4 second; };

为什么我在StartService上得到错误代码6?

为了我的目的,我需要为Windows编写一个内核模式驱动程序。 目前我正在尝试使其在Windows 7 x64下工作。 我在Visual Studio 2012中使用KMDF驱动程序的默认代码创build了一个简单的项目。 我编写了testing签名的代码。 司机被编辑和签字。 我也启用了testing签名function,清晰地显示在桌面的左下angular。 在试图启动驱动程序作为服务时,我总是得到一个错误代码6:无效的句柄错误(我已经简化了代码,只是尝试启动它,但仍然没有工作;默认代码也不工作) 基本上,我和这里提出的问题有同样的问题 https://stackoverflow.com/questions/12080157/startservice-error-6 不幸的是他从来没有回答。 我尝试了提供的解决scheme,但它也没有帮助。 我的代码,试图启动驱动程序是 int _cdecl main(void) { HANDLE hSCManager; HANDLE hService; SERVICE_STATUS ss; hSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_CREATE_SERVICE); printf("Load Driver\n"); if(hSCManager) { printf("Create Service\n"); hService = CreateService(hSCManager, "Example", "Example Driver", SERVICE_ALL_ACCESS | SERVICE_START | DELETE | SERVICE_STOP , SERVICE_KERNEL_DRIVER, SERVICE_DEMAND_START, SERVICE_ERROR_IGNORE, "\\path\\to\\driver\\KMDFDriver1.sys", […]

检测Windows进程使用C#而不使用WMI启动和退出事件

使用WMI的ManagementEventWatcher / EventArrivedEventHandler将导致创build另一个线程,我试图避免。 WMI也知道它的延迟。 所以我的问题是:如何检测Windows进程创build/终止与C#没有WMI? 有没有办法从非托pipe代码做到这一点?

Win8是否也为传统应用程序添加了内置的拼写检查器?

根据MSDN : 在Windows 8中,拼写检查是内置的编辑控件。 那么,我有我的设置(高亮和自动更正)启用选项,我没有在Notepad.exe或我自己的传统Win32应用程序中看到这一点。 我需要做什么来启用(希望就是这么简单),这对我的应用程序? 我确实试图按照文章中的信息阅读大量的参考资料,但实际上并不清楚,似乎是为了创build自定义的提供者/解决scheme,但我会对任何“内置”行为感到满意。

用python更改windows用户密码

我正在寻找一种方法来改变一个python脚本的Windows密码。 像一个win32api可以帮助我吗? 谢谢!

在Windows上检索graphics/声卡信息

我正在为我的应用程序开发一个错误报告工具,并且希望将硬件信息附加到错误报告中,以便更轻松地查明某些问题。 有谁知道任何Win32 API函数查询操作系统的graphics和声卡信息? 谢谢,罗布

从Windows锁屏钩键盘快捷键

我有一个arduino键盘模拟模式,发送键盘击键到它连接到的计算机,后者在接收每个击键时在本地网页上追加一个日志行。 日志程序使用Win32 API以C编码。 现在,因为它应该在工作中工作(想法是让我的桌子上的button被激活时在线日志文件),我会locking我的电脑… 我怎样才能保持从窗口locking屏幕处理CTRL + ALT +键击? 谢谢,Mystère先生

从WSH或其他本地Windows程序访问Win32的CreateEvent / SetEvent

我需要与使用named的程序套件进行交互。 Win32事件(例如, CreateEvent() API)在正在运行的进程之间进行通信。 我可以用一些非常简单的C代码来做到这一点 h = CreateEvent(NULL, FALSE, FALSE, argv[1]); if (h != INVALID_HANDLE_VALUE) SetEvent(h); 但是,由于政策问题,我无法在生产机器上安装自定义二进制文件! 有没有办法与Windows脚本主机做到这一点? 我可能会将签名的二进制文件添加到生产环境中 – 所以其他脚本语言可能是可行的。 build议是受欢迎的。

有什么办法来检测Windows中的监视器状态(开或关)?

有没有人知道是否有一个API来获取Windows(XP / Vista / 2000/2003)当前的监视器状态(打开或closures)? 我所有的search似乎都表明,没有真正的做法。 此线程尝试使用根据Microsoft的文档GetDevicePowerState不适用于显示设备。 在Vista中,我可以收听GUID_MONITOR_POWER_ON,但是当手动closures显示器时,我似乎没有收到任何事件。 在XP中,我可以挂钩到WM_SYSCOMMAND SC_MONITORPOWER ,寻找状态2.这只适用于系统触发电源closures的情况。 WMI Win32_DesktopMonitor类似乎也没有帮助。 编辑 :这是一个关于comp.os.ms-windows.programmer.win32 的讨论 ,指出没有可靠的方法来做到这一点。 任何人有任何其他的想法?

存储这个指针在WndProc中使用的最佳方法

我有兴趣知道存储this指针在WndProc使用的最佳/常用的方法。 我知道几种方法,但据我了解,每种方法都有自己的缺点。 我的问题是: 生成这种代码有什么不同的方法: CWindow::WndProc(UINT msg, WPARAM wParam, LPARAM) { this->DoSomething(); } 我可以想到Thunks,HashMaps,线程本地存储和窗口用户数据结构。 每种方法有哪些优点/缺点? 为代码示例和build议授予的积分。 这纯粹是出于好奇的缘故。 使用MFC后,我只是想知道如何工作,然后想到ATL等。 编辑:我可以有效地使用窗口过程中的HWND最早的地方是什么? 它被logging为WM_NCCREATE – 但如果你真的试验,这不是第一个消息发送到窗口。 编辑: ATL使用thunk来访问这个指针。 MFC使用HWND的散列表查找。