我如何找到哪些Dll包含特定的W32函数?

我的应用程序是一个WPF应用程序,它已经具有旧版本的System DPI感知的代码,在8.1以外的每个Windows版本中都可以正常运行。 事实证明,微软在Windows 8.1中增加了许多功能,作为实现每台显示器DPI认知的一部分。 我需要在我的程序中实现代码来支持这种类型的DPI认识。

我有文档列出了每台显示器的DPI认知功能以及它们的参数。 我需要将它们导入到C#中,并从我的窗口类中调用它们。 但我不知道哪些DLL包含这些函数! 例如, GetProcessDpiAwareness函数的文档不会指出它所在的DLL。

我如何找到DLL中的输出是什么?


一言不发,一种愚蠢的方法:在C:WindowsSystem32GetProcessDpiAwareness进行二分搜索,然后使用Dependency Walker对出口进行研究。

这产生了结果: GetProcessDpiAwarenessSHCore.dll导出。

也可能搜索Windows SDK头和库,但在我的情况下,我还没有找到GetProcessDpiAwareness ,令我惊讶。

另一个想法是,从命令行提示符运行以下命令:

for %f in (%windir%system32*.dll) do dumpbin.exe /exports %f >>%temp%__exports

然后搜索API的%temp%__exports


通常使用相同资源的函数都在同一个dll中。 看看另一个像GetDpiForMonitor这样的dpi函数,你会发现它在Shcore.dll中

编辑:在你找到这个dll之后,你可以使用dependency walker来仔细检查从该dll导出哪些函数。

链接地址: http://www.djcxy.com/p/18899.html

上一篇: How do I find which Dlls contain specific W32 functions?

下一篇: Printing to a Brother Label Printer from the browser [UPDATED]