VB.Net中该怎么调用windows的API?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VB.Net中该怎么调用windows的API?相关的知识,希望对你有一定的参考价值。

调用API时有的参数为String类型,但是VB.Net中的string类型是unicode编码,而API中的是ASII编码。直接用的话不行。比如FindWindow("Shell_TrayWnd", " ")这个API,不论怎么调用,返回值都是0.

参考技术A 1.Windows的API有两个版本的,比如ANSI的FindWindowA(),Unicode的FindWindowW()
2.两种声明的方式
<DllImport("user32.dll", CharSet:=CharSet.Auto, EntryPoint:="FindWindow")> _
Shared Function FindWindow(ByVal className As String, ByVal windowName As String) As IntPtr
End Function

Declare Auto Function FindWindow Lib "user32.dll" Alias "FindWindow" (ByVal className As String, ByVal windowName As String) As IntPtr本回答被提问者采纳

VB.NET 和 XmlElement() 如何从 API 调用中获取元素的值?

【中文标题】VB.NET 和 XmlElement() 如何从 API 调用中获取元素的值?【英文标题】:VB.NET and XmlElement() How do I get the value of the elements out of an API call? 【发布时间】:2020-08-19 10:47:52 【问题描述】:

我有一个成功的 API 调用并在 XmlElement 中返回了数据,但是我无法找出如何解析出我需要的数据。

Dim Any = CardInqResponse.CardInqRec.Custom.Any

我的回报显示长度为两个(两个元素)。 我的元素名称是 Exp 和 Offset。 我对 Offset 中的数据感兴趣,我可以在其中看到这些值在 innerText 和 innerXml 中返回。

如何将这两者中的任何一个的值存储在字符串中?

【问题讨论】:

【参考方案1】:

将 API 响应加载到 XmlDocument 并使用 xpath 选择一个节点并获取所选节点的内部文本。下面的例子是一个想法

    Dim doc = new XmlDocument()
    doc.LoadXml(yourXmlString)
    txtStreet.Text = doc.SelectSingleNode("/a:Address/a:strStreet", nsm).InnerText

更多信息请参考https://docs.microsoft.com/en-us/dotnet/api/system.xml.xmldocument?redirectedfrom=MSDN&view=netcore-3.1

此外,您可以分享您的回复,然后我可以了解我们如何获取您所需的数据。

【讨论】:

【参考方案2】:
       Dim offset As String           
       Dim Any =  CardInqResponse.CardInqRec.Custom.Any

       For Each node As XmlElement In Any
           If node.Name = "Offset" Then
            Try
                offset = node.InnerText.ToString
            Catch
            End Try
          End If              
        Next

【讨论】:

以上是关于VB.Net中该怎么调用windows的API?的主要内容,如果未能解决你的问题,请参考以下文章

.net中如何引用Dll文件?

vb.net如何动态调用WebService接口啊

VB.NET 动态 API 调用 x64

VB.NET 和 XmlElement() 如何从 API 调用中获取元素的值?

求大神指点vs2012里的vb.net 编写的windows 服务怎么启动呀

vb.net怎么添加类