我如何找到哪些Dll包含特定的W32函数?
我的应用程序是一个WPF应用程序,它已经具有旧版本的System DPI感知的代码,在8.1以外的每个Windows版本中都可以正常运行。 事实证明,微软在Windows 8.1中增加了许多功能,作为实现每台显示器DPI认知的一部分。 我需要在我的程序中实现代码来支持这种类型的DPI认识。
我有文档列出了每台显示器的DPI认知功能以及它们的参数。 我需要将它们导入到C#中,并从我的窗口类中调用它们。 但我不知道哪些DLL包含这些函数! 例如, GetProcessDpiAwareness
函数的文档不会指出它所在的DLL。
我如何找到DLL中的输出是什么?
一言不发,一种愚蠢的方法:在C:WindowsSystem32
对GetProcessDpiAwareness
进行二分搜索,然后使用Dependency Walker对出口进行研究。
这产生了结果: GetProcessDpiAwareness
由SHCore.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]