Articles of winapi

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

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

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

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

如何获得Java中的所有窗口句柄的列表(使用JNA)?

我是JNA的新手。 我正试图得到包括最小化的所有窗口句柄。 我需要所有窗口的HWND 。 我经历了Windows的问题:如何获得所有可见窗口的列表? 这帮助我得到了Windows的列表,但它有hWndtypes为int。 我不能用com.sun.jna.platform.win32.User32函数来请求com.sun.jna.platform.win32.WinDef.HWNDtypes的hWnd 。 所以,有没有办法得到所有types的com.sun.jna.platform.win32.WinDef.HWND而不是int指针的窗口句柄? 最后,为什么int和HWND的区别? 它如何接受? 我有点困惑。 谢谢。 我有下面的代码(从Hovercreft的答案编辑): import com.sun.jna.Native; import com.sun.jna.Pointer; import com.sun.jna.platform.win32.User32; import com.sun.jna.platform.win32.WinDef.HWND; import com.sun.jna.platform.win32.WinDef.RECT; import com.sun.jna.platform.win32.WinUser.WNDENUMPROC; public class TryWithHWND { public static void main(String[] args) { final User32 user32 = User32.INSTANCE; user32.EnumWindows(new WNDENUMPROC() { int count = 0; public boolean callback(HWND hWnd, Pointer arg1) { […]

find一个Windows程序被调用的快捷方式

有没有办法让Windows程序find它被调用的快捷方式(即.lnk文件),以便它能够拾取快捷方式的图标?

WINAPI代表什么?

我已经开始在C中学习Win32 API了。我看到主函数是类似的 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { .. } 但是我知道C中的一个函数是类似的 [ReturnType] [FunctionName] (Args) { .. } 在这种情况下,返回types是int,函数名称是WinMain。 那么WINAPI代表什么,是否有必要? 谢谢 。 🙂

如何在WIN32中查找string的宽度(以像素为单位)

你能比在使用GetTextMetrics函数和使用tmAveCharWidth * strSize更精确地在WIN32中测量string的宽度吗?

如何使用C#读取WMI中的ManagementObject集合

我在网上find了一个代码,并试图获得更多有关莫[]的信息 。 我正在尝试获取ManagementObjectCollection中包含的所有信息。 由于mo中的参数正在寻找一个我不知道的string值,我怎么才能得到所有的值而不知道它的参数值。 或者,如果我想在ManagementObjectCollection获取与mo相关的所有索引值 ManagementObjectSearcher objOSDetails = new ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem"); ManagementObjectCollection osDetailsCollection = objOSDetails.Get(); foreach( ManagementObject mo in osDetailsCollection ) { _osName = mo["name"].ToString();// what other fields are there other than name _osVesion = mo["version"].ToString(); _loginName = mo["csname"].ToString(); }

在Windows的select.select中使用sys.stdin

可能重复: 可以select()与Windows下的Python文件一起使用? 在UNIX上,我能够将sys.stdin传递给Python中的select.select 。 我正在尝试在Windows上执行此操作,但在Windows上的Python select.select将不允许执行此操作。 为了更准确地描述我在做什么,请参阅https://github.com/eldarion/gondor-client/blob/ccbbf9d4b61ecbc2f66f510b993eb5fba0d81c09/gondor/run.py 。 unix_run_poll函数是我正在尝试在Windows上完成的。 基本的想法是,我有一个套接字连接到一个服务器,已经连接streamstdin,标准输出,stderr到远程运行的进程,我正在与本地客户端交互,使它看起来好像本地客户端正在运行处理。 win32_run_poll是我将它移植到Windows上的尝试,它确实有效。 这是一个有点不可思议的方法,国际海事组织,是非常糟糕的。 有没有人有这样的build议可以改善? 对win32api的依赖是不太理想的,但我没有保留它。

如何手动读取/写入.exe机器码?

我不熟悉编译器的魔法。 对于我来说,将人类可读的代码(或不是真正可读的汇编指令)转换成机器代码的行为,对于我来说,火箭科学与魔法相结合。 我将把这个问题的主题缩小到Win32可执行文件(.exe)。 当我用专门的浏览器打开这些文件时,我可以在各个地方findstring(通常每个字符16b),其余的只是垃圾。 我认为不可读的部分(多数)是机器代码(或者可能是资源,比如图像等)。 有没有直接阅读机器代码的方法? 作为一个文件stream打开该exe文件,并逐字节读取它,如何将这些单独的字节转换为汇编? 在这些指令字节和汇编指令之间有直接的映射吗? .exe是如何写的? 每个指令四个字节? 更多? 减? 我注意到一些应用程序可以像这样创build可执行文件:例如,在ACD中请参阅您可以将一系列图像导出为幻灯片。 但是,这不一定是一个SWF幻灯片,ACD See也能够生成EXEcutable演示文稿。 这是怎么做的? 我如何理解EXE文件里面发生了什么?

Python – 从Web应用程序启动一个长时间运行的进程

我有一个Python Web应用程序,需要启动一个长时间运行的过程。 问题是我不希望它等待整个过程完成。 刚刚启动并完成。 我在Windows XP上运行,Web应用程序在IIS下运行(如果有的话)。 到目前为止,我试图popen,但似乎没有工作。 它一直等到subprocess结束。