大家帮帮忙,关于API函数调用

ATH_SEG 2010-06-26 05:09:33
本人新手,最近学习API函数调用,用的是vs2010,但是运行时就会出错,说API函数调用导致堆栈不对称,希望大家帮忙解决一下

Public Class Form1
Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Const VK_LEFT As Long = &H27

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Label1.Text = "Begin"
Timer1.Interval = 10
Timer1.Enabled = True
End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Label1.Text = "Hello"
If GetAsyncKeyState(VK_LEFT) Then
Label1.Text = "OK!"
Else
Label1.Text = "NO!"
End If
End Sub
End Class

...全文
111 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
蓝海 2010-06-28
  • 打赏
  • 举报
回复
问题已然解决,我就不跟着凑合了,别给我分啊!
呵呵呵!
chinaboyzyq 2010-06-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jadsin 的回复:]

将上面的函数声明的Long改为Integer,Integer改为Short

原因是VB.NET和VB6中整形长度不同,VB.NET中
Long Int64
Integer Int32 (相当于VB6中的Long)
Short Int16 (相当于VB6中的Integer)
[/Quote]
vb6与vb.net调用API的不同之处,网上还是可以查到的。
Tiger_Zhao 2010-06-27
  • 打赏
  • 举报
回复
用 API 本身就不是很简单。
比如 CopyMemory 的 Void* 参数,win.tlb 中就轻易给 VB 调用声明出 9 个变种函数。
lyserver 2010-06-26
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jadsin 的回复:]
可以的,这个这是不过是测试,真的做起来最好还是用Privte
[/Quote]
同意。否则会破坏类的封装性。
ATH_SEG 2010-06-26
  • 打赏
  • 举报
回复
可以的,这个这是不过是测试,真的做起来最好还是用Privte
舉杯邀明月 2010-06-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jadsin 的回复:]
将上面的函数声明的Long改为Integer,Integer改为Short

原因是VB.NET和VB6中整形长度不同,VB.NET中
Long Int64
Integer Int32 (相当于VB6中的Long)
Short Int16 (相当于VB6中的Integer)
[/Quote]
可能很多人都会忽略这个问题。
恭喜楼主…………


VS 中,在窗体模块声明API 能用 Public 啊?
ATH_SEG 2010-06-26
  • 打赏
  • 举报
回复
还是找了好久才发现的,个大家说一下吧,准备结贴
ATH_SEG 2010-06-26
  • 打赏
  • 举报
回复
将上面的函数声明的Long改为Integer,Integer改为Short

原因是VB.NET和VB6中整形长度不同,VB.NET中
Long Int64
Integer Int32 (相当于VB6中的Long)
Short Int16 (相当于VB6中的Integer)

1,488

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧