Articles of winapi

所有用户正在运行的应用程序的窗口标题/前景检测

假设应用程序将由Windows上的administrator用户执行; 有没有办法使用Windows API来检索窗口标题,并检测应用程序是否在所有login用户的前台? 尝试下面的代码,我们无法检索其他login用户正在运行的应用程序的标题。 // to get the processes Process[] processlist = Process.GetProcesses(); // and this to get the title: process.MainWindowTitle

Alt选项卡覆盖Win32标识符

我正在将来自外部传感器(例如键盘)的事件映射到键盘快捷键,我想使用快速切换覆盖窗口(即“Alt-Tab菜单”)切换应用程序,但是我想继续显示切换菜单直到select一个应用程序。 基本上,我在做什么: if(notInSwitchMenu) { // Alt-Tab keystroke, but Alt remains pressed : the menu is still visible Press(VK_MENU); Press(VK_TAB); Release(VK_TAB); } else { if(event1) //Tab keystroke : next app { Press(VK_TAB); Release(VK_TAB) ; } else if(event2) //Shift-Tab keystroke : previous app { Press(VK_SHIFT); Press(VK_TAB); Release(VK_TAB); Release(VK_SHIFT) } else if(event3) // we get out of the […]

如何将键盘和鼠标input发送到Windowslogin屏幕?

我正在开发一个Windows服务,需要在Windowslogin屏幕上模拟input。 基本上移动鼠标,也向前键击。 该服务将以完全权限运行,所以这不是问题。 我已经看过SendInput,但它只适用于当前会话。 我知道有各种types的工具可以实现这样的function,例如,远程协助工具就是让IT支持人员能够查看login屏幕并提供input的一个例子,所以它绝对可行,但是如何呢?

是否有可能删除由Windows下的进程打开的文件?

为了testing和模拟的目的,我想删除一个当前由我的进程打开的文件。 CreateFile文档声明可以在模式下打开文件( FILE_SHARE_DELETE ),允许打开的句柄指向的文件被另一个操作删除。 (我已经尝试并通过CreateFile(FILE_SHARE_DELETE)+ DeleteFile确认。) 然而,现在我想知道的是,是否有可能以某种方式删除没有上述标志的人打开的文件? 据我了解的DeleteFile文档这是不可能的这个function,如 如果应用程序试图删除为正常I / O打开的文件或作为内存映射文件,DeleteFile函数将失败。 有没有其他方法来删除已打开的文件,但没有设置FILE_SHARE_DELETE标志?

在Windows 10通用C ++模块中如何访问Accelerometer?

我有一个Java应用程序,它使用C ++模块的本地接口来访问本机APIfunction。 该程序运行在具有加速计的Windows 10平板电脑上。 我想访问传感器输出并将其传递给Java程序。 windows模块是使用VC 2015社区版和最新的Windows 10 sdk编译的通用“Win32”模块。 这是甚至可能或通过他们全新的基于c#.net和xaml“编码”的“通用应用程序”系统的唯一途径? 我想订阅传感器事件,并接收callback或队列或pipe道尾部的数据。

C:如何获取Windows目录中的文件列表?

我试图按照RFC959标准在C(学校作业)中实现一个FTP服务器。 我遇到了LIST命令的麻烦。 RFC读取:“这个命令导致一个列表被从服务器发送到被动的DTP,如果path名指定一个目录或其他文件组,服务器应该传送指定目录中的文件列表,如果path名指定一个文件,然后服务器应该发送文件的当前信息。一个空参数意味着用户的当前工作或默认目录。 我知道有像GetCurrentDirectory等function。是否有一个函数来获取输出如在MS-DOS命令提示符下的'dir'? 任何类似的事情都会有所帮助。 提前致谢!

NtEnumerateKey()的KeyInformation参数

我很想知道如何将KeyInformationparameter passing给NtEnumerateKey() 。 当我运行下面的代码时, NtEnumerateKey()返回NTSTATUS = 0xC000000D错误消息“一个无效的parameter passing给服务或函数”。 我正在使用Windows 7.尽pipe下面的代码使用了Delphi语言,但您也可以用C语言来回答我的问题。 我的问题不是特定于编程语言。 type KEY_NAME_INFORMATION = record NameLength: ULONG; Name: array[0..254] of WCHAR; end; PKEY_NAME_INFORMATION = ^KEY_NAME_INFORMATION; var iNtStatus: LONG; hKeyResult: THandle; KeyNameInfo: KEY_NAME_INFORMATION; iResultLen: ULONG; iNtStatus := NtOpenKey(@hKeyResult, (KEY_ENUMERATE_SUB_KEYS) and not SYNCHRONIZE, @rObjAttrs); if hKeyResult = 0 then Exit; iNtStatus := NtEnumerateKey(hKeyResult, 0, KeyNameInformation, @KeyNameInfo, // […]

如何通过Messagebox ButtonClick显示dialogboxparam对话框?

我使用C ++ win32 API。 我已经在bb类中使用dailogboxparam函数在对话框中创build对话框… INT_PTR bb::DialogProc(UINT msg, WPARAM wp, LPARAM lp) { //some case and… case IDC_OK: DialogBoxParam(hInst,MAKEINTRESOURCE(IDD_DIALOG),_hwnd,myfunctionDlgProc,lp); break; } int CALLBACK bb::myfunctionDlgProc(HWND hDlg,UINT msg,WPARAM wp, LPARAM lParam) { //some code… } 当我按下对话框中的确定button…它显示myfunctionDlgProc对话框… 现在,我想在我的其他类相同的事情,现在我使用messagebox ..它有2个button确定和取消… 如果当我按消息框确定button,我想显示myfunctionDlgProc对话框… int retun; retun = MessageBox(hDlg,(LPCWSTR)"",TEXT("Logon Message"), MB_OKCANCEL| MB_ICONWARNING); if(retun=1) { DialogBoxParam(hInst,MAKEINTRESOURCE(IDD_DIALOG),_hwnd,myfunctionDlgProc ,lp); } 我尝试了…但是如何在这个代码中传递lp值… DialogBoxParam(hInst,MAKEINTRESOURCE(IDD_DIALOG),_hwnd,myfunctionDlgProc,lp); 你有问题吗? 我怎么能做到这一点?

Win32:如何根据Active Directoryvalidation凭据?

它已被问及 .NET的答案,但现在是时候得到本机Win32代码的答案: 我如何validationWindows用户名和密码? 我之前问过这个问题的托pipe代码 。 现在是本地解决scheme的时候了。 它需要指出一些更常见的解决scheme的陷阱: 无效的方法1.使用模拟查询Active Directory 很多人build议查询Active Directory的东西。 如果抛出exception,那么你知道凭据是无效的 – 正如在这个stackoverflow问题中所build议的。 然而,这种方法有一些严重的缺陷 : 您不仅要validation域帐户,还要进行隐式授权检查。 也就是说,您正在使用模拟令牌从AD读取属性。 如果否则有效的帐户没有权利从AD读取? 默认情况下,所有用户都具有读取访问权限,但可以将域策略设置为禁用受限帐户(和/或组)的访问权限。 针对AD的绑定具有严重开销,AD架构caching必须在客户端(DirectoryServices使用的ADSI提供程序中的ADSIcaching)中加载。 这既是networking,又是AD服务器,消耗资源,而且对于像validation用户帐户这样的简单操作来说太昂贵了。 对于非例外情况,您依赖exception失败,并假设这意味着无效的用户名和密码。 其他问题(如networking故障,AD连接故障,内存分配错误等)则被误解为authentication失败。 .NET的DirectoryEntry类的使用是validation凭据的不正确方法的一个例子: 无效的方法1a – .NET DirectoryEntry entry = new DirectoryEntry("persuis", "iboyd", "Tr0ub4dor&3"); object nativeObject = entry.NativeObject; 无效的方法1b – .NET#2 public static Boolean CheckADUserCredentials(String accountName, String password, String domain) { Boolean result; using […]

如何以编程方式使用Win32创build一个快捷方式

我需要以编程方式使用C ++创build一个快捷方式。 我怎样才能使用Win32 SDK做到这一点? 什么API函数可以用于这个目的?