Articles of winapi

Win32 vs .Net

.NET比Win32更好吗? 这两者的利弊,在哪些情况下会比另一方好。 微软是否发布.Net作为Win32的替代品? 我不是在问需要维护的项目的数量,而是关于正在开发的新项目,哪个会更好。 你觉得.Net从win32(缺less使用dllImport)缺乏重要的东西? 你认为Win32将被.Net所取代 我在问这个问题,因为我和我的一个朋友发生了争执,因为我们都同意这两个问题都必须深入研究。我的朋友认为.Net是不完整的,我说它几乎可以pipe理任何非驱动任务有关。 .Net在哪里失败?

如何显示“发送到”和“打开方式”上下文菜单?

前一段时间,我问了如何在Delphi中popupWindows上下文(右键单击)某个文件的菜单 。 然而,即使一切正常(几乎)好,“发送到…”和“打开…”子菜单没有任何项目,即使当我在资源pipe理器中右键单击相同的文件名时工作确定。 (例如,“发送到…”具有“桌面(创buildshotcut)”,“电子邮件收件人”等)。 我怎样才能使这些菜单出现?

在Win7login屏幕上运行应用程序

我想通过服务在Windows 7的login屏幕上运行应用程序。 我已经在这方面做了很长时间的研究,尝试了不同的方法,但不幸的是到目前为止还没有完全成功。 我设法在当前login的用户的locking屏幕上运行应用程序 – 起初我以为这是我基本上试图实现的。 但是,然后我意识到,每个用户和一个普通用户都有不同的login屏幕(独立于用户)。 我的猜测是,这个用户独立的login屏幕(当多个帐户可用时,或者当在locking屏幕上单击“切换用户”时直接出现)在会话0中运行,而用户1在会话1中运行,用户2在会话中运行2等等。 问题是,如果我运行应用程序在会话0(与“winsta0 \ winlogon”)它不可见; 在会话1中运行正常,但没有什么帮助,因为用户必须已经login。 那么如何在用户独立的login/欢迎界面上运行一个应用程序呢? 什么是这个目的的正确参数和function? 有没有人有示范工作的例子? (delphi是首选,但实际上任何其他语言也会这样做!)

Windows XP中的100 kHz定时器频率

有一个stream行的业余爱好水平的数控机床控制,在Windows XP中运行,它有一个定时器,在25 kHz至100 kHz范围内的用户可select的速率。 恰好我也是在build立数控机床控制器,但是我一直在使用我上层程序控制的一个Galil Motion Control公司的DMC1800系列DSP运动控制器板。 有潜在买家无法承受这种configuration,所以我写了另一个应用程序,我打算提供作为基于软件的控制包。 应用程序是完整的,除了我没有计时器。 (MS多媒体定时器是不够的。) 我一直在追求这两年没有结果,所以我决定要求帮助。 为了避免混淆,我指的是一个周期性的定时器,它能够以100kHz的频率工作,而不是秒表计时器。 我真的很感谢这个帮助, C4C

在不透明的父窗口顶部创build一个透明子窗口(win 32)

我有一个不是由我写的程序。 我没有它的来源,该程序的开发者正在独立开发。 他给了我该程序的HWND和HINSTANCE句柄。 我使用win32 api在他的窗口上创build了一个子窗口。 首先,我需要的是使这个子窗口在某些区域具有透明度,在其他区域(例如游戏的平视显示器(HUD))上不透明,以便用户可以在两个窗口中看到事物。 第二件事,我需要的是将所有的input指向父窗口。 我的孩子窗口不需要input。 我知道WS_EX_TRANSPARENT只是使得子画在画家algorithm的末尾。 我不能使用WS_EX_LAYERED因为它的一个子窗口。 提前致谢 :) ps我到处都找,但没有find任何解决scheme,虽然有类似的问题在互联网上。 其实这是一个HUD就像那个游戏的东西。 我不能直接在父窗口上绘制,因为multithreading复杂的任何其他许多原因。 – 编辑—————————嘿家伙,我仍然在努力。 尝试不同的方式与你所有的build议。 有没有办法将directX和SetWindowRgn()函数或directx与BitBlt()函数结合起来。 我认为这将会诀窍。 目前我正在testing所有的东西作为一个子窗口和分层窗口。

winapi的bcrypt.h实际上是否支持bcrypt哈希?

这可能听起来像一个奇怪的问题,而且我真的不得不问这个问题有点奇怪,但花了几个小时看了一下Vista中添加的bcrypt例程的MSDN文档后,我几乎得出结论没有实际的bcrypt支持! 根据维基百科: bcrypt是一个自适应密码哈希函数密码…基于Blowfish密码…除了结合盐来防止彩虹表攻击,bcrypt是一个自适应哈希:随着时间的推移,它可以变得越来越慢,所以它仍然耐药针对散列和盐的特定的powershellsearch攻击。 但是,从MSDN上的文档来看,“bcrypt”库显然实际上是用于encryption和散列的通用接口。 您必须通过BCryptOpenAlgorithmProvider函数获取“algorithm提供者”的句柄 ,该函数有几个内置algorithm可供select。 但是“河豚”一词并没有出现在列表中的任何地方。 所以我错过了什么? 我读这个错吗? 或者Windows的“bcrypt”库实际上不支持bcrypt ?

FindFirstFile / FindNextFile不返回文件夹中的所有文件

注意:build议作为重复的问题讨论CreateFile , ERROR_FILE_NOT_FOUND ,在文件上具有现有句柄,并标记稍后要删除的文件。 虽然这是一个类似的话题,但这些问题都不涉及我的案子。 我有以下方法来删除一个目录。 我一直在使用它一段时间没有问题。 但最近,我真的一直在通过它的步伐,通过一个networkingpath(只是连接到我的路由器的USB驱动器)删除目录和文件的大任务。 除了一个不删除目录中的所有文件的区域,一切似乎都很好,因此RemoveDirectory()失败。 (我已经将每个文件添加到列表中,并validation该列表不包含未被删除的文件。) 所有文件的命名非常相似,没有返回或删除的文件的名称没有任何exception。 如果我再次运行程序,它将删除剩余的文件,然后在另一个目录稍后有相同的错误。 bool CBackupWorker::DeleteDirectory(LPCTSTR lpszName) { if (!DirectoryExists(lpszName)) { ASSERT(false); // Unexpected return true; } CFileFind find; BOOL bContinue = find.FindFile(AppendPath(lpszName, _T("*"))); while (bContinue) { bContinue = find.FindNextFile(); if (find.IsDirectory()) { if (!find.IsDots()) { if (!DeleteDirectory(find.GetFilePath())) return false; } } else { if (find.IsReadOnly()) ClearReadOnlyAttribute(find); […]

奇怪的窗户冒充行为

我的Windows应用程序可能需要它的某些部分的pipe理权限。 对于这些情况,我想要求用户inputpipe理员凭据,并使用以下代码模拟pipe理员: BOOL impersonate(LPTSTR lpszUsername, LPTSTR lpszDomain, LPTSTR lpszPassword) { BOOL ret = LogonUser(lpszUsername, lpszDomain, lpszPassword, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, &hToken); if (ret != TRUE) return FALSE; OutputDebugString (L"step 1"); ret = ImpersonateLoggedOnUser(hToken); if (ret != TRUE) return FALSE; OutputDebugString(L"step 2"); return IsUserAdmin() } 其中函数IsUserAdmin() 已从MSDN取得 ,如下所示: BOOL IsUserAdmin(VOID) { BOOL b; SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY; PSID […]

如何更改taskmanager中的应用程序图标

我有一些Windows应用程序,可以更改他的图标,使用win apifunction SendMessage(hwnd, WM_SETICON, ICON_BIG, icon_handle); SendMessage(hwnd, WM_SETICON, ICON_SMALL, icon_handle); Shell_NotifyIcon(…); 它更改任务栏和托盘(任务栏通知区域)中的图标,但任务pipe理器中的图标仍未更改 。 如何更改taskmanager中的图标? 可能吗?

如何检查目录是否可写在win32 C / winapi中?

我知道两种不可靠的方法: _access() – 不适用于目录(只检查是否存在) CreateFile() – 虚拟商店(AFAIK) 最有用的将是一个代码示例,因为win32 ACL访问函数是非常复杂的。 请不要张贴链接到MSDN,我一直在那里,不能为我的生活找出我应该做的所有DACL,SACL和安全描述符 – 我工作在一个跨平台的应用程序这需要这个特定的function块,但是否则是平台不可知的。 比访问Windows ACL更简单的解决scheme比欢迎。 编辑:你可以安全地假设目录权限不会改变,而应用程序正在运行。