level 7
是动态链接库掉用吗,win32API可以通过declare或者System.Runtime.InteropServices平台调用属性标准DLLImport属性函数来调用
2013年04月26日 04点04分
2
举个例子好吗?一直以来我都是通过修改6.0的声明调用api的,原来可以这样
2013年04月26日 04点04分
level 6
其实和6.0的调用模式其实是一样的,不过需要修改类型,而且很多要用到IntPtr。DLLImport是.NET通用的模式。
2013年04月26日 05点04分
3
帮我写一个吧,弄不成功
2013年04月26日 05点04分
level 7
好吧,我举例个win32调用user32.dll中MessageBox的方法,用一个按钮测试
<DllImport("user32.dll", EntryPoint:="MessageBox")> Public Shared Function Show(ByVal h As Integer, ByVal str As String, ByVal cap As String, Optional ByVal type As Integer = 32) As Int32
End Function
Private Sub BtnClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.Show(0, "信息框的样式请具体看Show函数中第一个参数和最后一个参数说明", "信息提示")
End sub
2013年04月26日 06点04分
4
level 5
<DllImport("Coredll.DLL", EntryPoint:="CreateProcess")> Public Shared Function CreateProcess(ByVal lpApplicationName As String, _
ByVal lpCommandLine As String, ByVal lpProcessAttributes As Integer, ByVal lpThreadAttributes As Integer, _
ByVal bInheritHandles As Integer, ByVal dwCreationFlags As Integer, ByVal lpEnvironment As Integer, _
ByVal lpCurrentDirectory As Integer, ByVal lpStartupInfo As Integer, ByVal lpProcessInformation As String) As Integer
2013年04月26日 07点04分
5
不行啊,integer原来为long
2013年04月26日 07点04分
参数的定义请一顶要看看Coredll.h的头文件说明,其实C语言的long和VB中的integer一样都是32位,建议弄清楚后用Int32类似的声明,还可以用Intptr,应该是没问题的
2013年04月26日 07点04分
回复 youki_xwy :还有你的DLL如果是系统的,可以不用指定路径,但是如果是别人写的,你必须把他指定路径,或者直接放到你应用程序的文件夹中
2013年04月26日 07点04分
已经好了,谢谢你了。好像送你一个奖状,助人为乐,见义勇为。
2013年04月26日 08点04分
level 11
这个是声明api的吗?
那么
Private Declare Function dll_a Lib "a.dll" (ByVal a as Double) as int32
Private Sub Button1_Click(ByVal sender as Object, ByVal e as System.EventArgs) Handles Button1.Click
dll_a(3)
End Sub
这个是调用什么的呢?
2013年04月27日 17点04分
6
这个和你说的那个方法是一个意思吗?
2013年04月28日 15点04分