Articles of winapi

模拟一个监视器,并获得在Windows上的videostream

有没有办法让我以编程方式在Windows中设置假监视器并从中获取videostream? 有没有什么在win32 API允许我这样做? 谢谢

文件大小 – 磁盘上使用的实际字节数(未分配)

可能重复: 获取磁盘上文件的大小 有没有一种方法来检索磁盘上使用C#/ windows的特定文件的实际字节数? 我的应用程序实现了“监视”文件夹,类似于FileSystemWatcher。 共享存储(networking和光纤通道SAN)上有一些监视文件夹,本地连接的存储上有其他监视文件夹。 通过完全不受我控制的进程将文件复制到监视文件夹中,大小从1 GB到大于500 GB。 由于共享文件系统的性质,希望在“独占”(FileMode.Open,FileAccess.Read,FileShare.None)打开文件时出现exception也不起作用。 这些监视文件夹不应该采取行动,直到一个文件被完全复制/closures,否则下游会出现问题。 为了获得磁盘上使用的“真实”文件大小,我尝试过: System.IO.FileInfo GetFileSizeEx(kernel32 p / invoke) FindFirstFileEx(kernel32 p / invoke) GetCompressedFileSize&GetDiskFreeSpace(kernel32 p / invoke) 任何build议将非常感激。 看来我正在处理Windows操作系统的限制?

dpinst.exe在Windows 7中的行为与标准的用户权限

我在我的驱动程序包中使用dpint.exe。 我正在面对Windows 7 64位操作系统下面提到的情况。 启用UAC后,它将在pipe理员模式(具有pipe理员权限的用户),标准用户模式和访客模式下按预期工作。 (即,在标准用户模式和访客模式下提示要求pipe理员密码的窗口)。 当UAC被禁用时,在pipe理员模式下(具有pipe理员权限的用户),它“从不”显示任何窗口,说“你想让下面的程序改变这台电脑”。 (这种行为也是一个预期的!)“,但在标准的用户模式,当我点击驱动程序安装程序可执行文件(内部调用dpinst.exe)系统挂起,当我试图重新启动它说一个后台进程正在运行,做你如果上面的问题是由于“Dpinst.exe需要pipe理员权限”,为什么Windows没有显示警告消息,而是被绞死? ? 以及如何告诉用户更改为pipe理员继续安装..

如何使用callback示例vc实现icmpsendecho2asynchronous

我需要使用ApcRoutinecallback例程asynchronous使用IcmpSendEcho2 API命令。 我有一个问题是我需要定义的ApcRoutinecallback例程的签名是什么样的? 当我打电话给IcmpSendEcho2第三个参数是什么样的? 我有15个代理请求被发送。 我只能用IcmpSendEcho2请求一次或多次。 如果我需要一次发送多个IcmpSendEcho2请求。 callback函数ApcRoutine如何知道哪个IcmpSendEcho2调用完成。 我猜这是ApcContext参数进入的地方? 我无法findMSDN或其他地方的任何示例代码,演示如何asynchronous使用IcmpSendEcho2命令。

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

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

读取进程的进程内存不会返回所有内容

我正在尝试扫描第三方应用程序的内存。 我已经find了地址; 现在是0x0643FB78 。 因为LPMODULEENTRY32->modBaseAddr是0x00400000 , LPMODULEENTRY32->modBaseSize只是0x006FF000 ,所以我永远不会在那里0x006FF000 ,因此我可以扫描这个模块的最大地址是0x00AFF000 。 这是否意味着我寻找的地址是否存在于另一个进程/模块/线程/内? 我非常有信心,我所拥有的过程确实包含了地址。 那么我应该如何访问内存呢? 谢谢。

你如何使用IME?

我想做一个处理用户input的控件,所以我希望能够处理不同的键盘,其中一种方法是使用IME。 如果您没有处理它,那么在IME处于活动状态时会出现一个浮动窗口(例如日语写入活动)。 我发现需要照顾的消息,但我不知道如何发送我陷入IME的密钥,什么时候我得到一个有效的转换字符。

我如何获得桌面的窗口句柄?

Windows API提供了一个API GetDesktopWindow() ,它返回窗口句柄 但我用Spy ++进行了testing,发现桌面的窗口句柄和“Windows桌面”的窗口句柄是不一样的。 由于“Windows桌面”是一个列表视图,我需要执行以下操作 1) HANDLE hWnd = GetDesktopWindow() ; 2) FindWindow(hWnd, ….. ) with the SyslistView32 as the Window class. 一旦我得到窗口句柄,我想使用SendMessage()进行操作,如获取选定的文件名,select的文件数量等。 请给出你的意见。 我正在使用Windows SDk来做这件事

在不同的进程之间共享HDC

我正在编写某种IPCfunction,需要将某个进程的某些资源从一个进程传递到另一个进程。 这对于可以通过DuplicateHandle复制的pipe道手柄等很好。 现在我需要将HDC从一个进程传递到另一个进程。 这甚至有可能吗? 如果是,如何? 子问题:我假设从一个进程到另一个进程的窗口句柄(HWND)是安全的。 这个假设是否正确?

如何从资源加载图标而不会遭受别名?

我有一个GUI应用程序,其中包括一些用于工具栏button,菜单字形,通知图标等的图标。这些图标作为资源链接到应用程序,并有各种不同的大小可用。 通常,对于工具栏button图像,我有可用的16px,24px和32px版本。 我的图标是部分透明的32bpp。 该应用程序是高DPI的意识,并根据stream行的字体缩放调整所有视觉元素的大小。 所以,例如,在100%的字体缩放,96dpi,工具栏图标大小为16px。 在125%缩放比例120dpi下,工具栏图标大小为20px。 我需要能够加载一个大小为20px的图标,而不会有任何别名效果。 我怎样才能做到这一点? 请注意,我想支持Windows 2000及更高版本。