Articles of winapi

如何使用InjectTouchInput特定的窗口?

我试图使用InjectTouchInput发送触摸事件到特定的窗口。 POINTER_INFO结构有hwndTarget字段,据我hwndTarget ,它指定目标窗口发送input。 但是当我尝试使用这个参数时,注入失败,代码为ERROR_INVALID_PARAMETER (87) 码: void MakePointerTouchInfo(POINTER_TOUCH_INFO& contact, int x, int y, int radius, int id, int orientation = 90, int pressure = 32000) { ZeroMemory(&contact, sizeof(POINTER_TOUCH_INFO)); contact.pointerInfo.pointerType = PT_TOUCH; contact.pointerInfo.ptPixelLocation.x = x; contact.pointerInfo.ptPixelLocation.y = y; contact.pointerInfo.pointerId = id; contact.touchFlags = TOUCH_FLAG_NONE; contact.pointerInfo.pointerFlags = POINTER_FLAG_DOWN | POINTER_FLAG_INRANGE | POINTER_FLAG_INCONTACT; contact.touchMask = TOUCH_MASK_NONE; } POINTER_TOUCH_INFO […]

用头文件中定义的方法调用SetWindowsHookEx

我正试图添加一个低级别的鼠标挂钩到一个类。 我可以通过在我的CPP文件中放置这个function: LRESULT CALLBACK MouseHookProc(int nCode, WPARAM wParam, LPARAM lParam) { //my hook code here return CallNextHookEx(0, nCode, wParam, lParam); } 然后,我在类构造函数中设置钩子,如下所示: HHOOK mousehook = SetWindowsHookEx(WH_MOUSE_LL, MouseHookProc, NULL, 0); 这适用于拦截鼠标事件,但由于callback函数没有在我的类中定义,它没有访问我的任何类variables。 因此,我尝试在头文件中定义callback函数,如下所示: LRESULT CALLBACK MouseHookProc(int nCode, WPARAM wParam, LPARAM lParam); 并在我的CPP文件(TMainForm是类): LRESULT CALLBACK TMainForm::MouseHookProc(int nCode, WPARAM wParam, LPARAM lParam) { //my hook code here return CallNextHookEx(0, […]

获取与桌面相关的已loginWindows用户名

我想枚举系统中的所有桌面,并获取该桌面的login用户名。 到目前为止,我有以下代码snippit作为获取HDESK句柄,并试图确定与之关联的用户名(如果有的话)的示例,但对LookupAccountSid的调用失败,并显示ERROR_NONE_MAPPED(“帐户名和安全ID之间没有映射完成“)。 HDESK desk = OpenDesktop( "Default", 0, FALSE, READ_CONTROL | DESKTOP_READOBJECTS ); DWORD size = 4096; SID * sid = (SID *)malloc( size ); GetUserObjectInformation( desk , UOI_USER_SID, sid, size, &size ); char name[512], domain[512]; int namesz = 512, domainsz = 512; LookupAccountSid( NULL, sid, &name, &namesz, &domain, &domainsz, &s); 这可能是因为我通过GetUserObjectInformation而不是用户SID拉出loginSID。 如果是的话,我可以将其转换为login的用户SID? 任何人都可以指向正确的方向获取任意桌面的login用户名(通过相应的HDESK或HNWD手柄,甚至桌面的HWINSTA手柄)? 提前致谢。

为什么不从入口函数调用FreeLibrary?

我正在写一个DLL需要多次dynamic调用一个单独的DLL。 我想保持被调用者加载,然后卸载它,当我的DLL被卸载。 但根据微软的说法,这是一个坏主意 。 入口点函数只应执行简单的初始化任务,不应该调用任何其他的DLL加载或终止函数。 例如,在入口点函数中,您不应该直接或间接调用LoadLibrary函数或LoadLibraryEx函数。 此外,当进程正在终止时,您不应该调用FreeLibrary函数。 这是有问题的代码。 有人可以解释为什么我不应该从DLL的入口点调用LoadLibrary和FreeLibrary? BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { switch (ul_reason_for_call) { case DLL_PROCESS_DETACH : if (hLogLib != NULL) FreeLibrary(hLogLib); break; } return TRUE; }

什么是Windows 8.1的操作系统版本?

什么是即将到来的Windows 8.1的内部版本? MSDN说: Windows XP = 5.1 Windows 7 = 6.1 Windows 8 = 6.2 但Windows 8.1? 到目前为止,我找不到任何有用的信息…

在Windows中重置打开文件对话框位置

我使用GetOpenFileName函数打开一个打开的文件对话框。 我正在做一个处理函数,将对话窗口居中在所有者窗口。 我将CDN_INITDONE通知中的对话框CDN_INITDONE 。 目前,Windows似乎记得桌面应用程序的最后一个对话框位置,并覆盖了我的对话框坐标。 如何重置最后记住的位置,以便我可以检查居中将为我的用户工作? 我想使用不同的用户或虚拟机运行testing,但这不是很方便。 不幸的是,在registry中searchmyexecutable.exe不会返回任何内容。 我正在运行Windows 8。

检索Win64例外表中的所有条目

从Win64exception堆栈走的一些更清楚的了解, 不会显示条目 ,我想能够从Win64exception表中检索所有条目 – 包括通过API调用RtlAddFunctionTable和RtlInstallFunctionTableCallback任何运行时添加。 这是可能从delphi?

GetPrivateProfileString的目的是什么?

我在C ++程序中遇到了GetPrivateProfileString这个词。 任何人都可以给我一个使用这个函数的简单解释吗? 我的页面上的代码是: GetPrivateProfileString("files", "directory", "/mediadb/files/", directory, os.path.getsize(directory), "apache")

如何使用C ++ win32 API中的pwdlastset值和maxpwdage值来获取pwdexpirydate?

我使用ADSI获得了maxpwdage值和pwdlastset值。 现在我想检查密码到期date… hr = pDomain->get_MaxPasswordAge(&ret); maxpwdage给432000 … hr = pUser->get_PasswordLastChanged(&expirationDate); pwdlastset给41176.470196759263 … 如何使用此值来实现密码失效date?

我可以使用CreateFile,但强制句柄到一个std :: ofstream?

有没有办法利用Win32 API中的文件创build标志,如FILE_FLAG_DELETE_ON_CLOSE或FILE_FLAG_WRITE_THROUGH ,如http://msdn.microsoft.com/en-us/library/aa363858(VS.85).aspx所述 ,但是然后强制该句柄成std :: ofstream? 与stream媒体的接口显然是平台独立的; 我想强制一些依赖于平台的设置在“引擎盖下”。