很簡單,原因有二。第一,VB里long是32位,但是VB.NET里是64位,Dim ksWND As Integer才對。第二,VB在API里默認傳址,而VB.NET默認傳值,所以API里要添加Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long,添加"ByRef" lpRect As RECT) As Integer

成都創(chuàng)新互聯(lián)公司專注于正藍企業(yè)網站建設,響應式網站設計,商城網站開發(fā)。正藍網站建設公司,為正藍等地區(qū)提供建站服務。全流程按需定制開發(fā),專業(yè)設計,全程項目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long,byref lpRect As RECT) As Integer
Private Structure RECT
Dim Left As Integer
Dim Top As Integer
Dim Right As Integer
Dim Bottom As Integer
End Structure
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim ksWND As integer
Dim ksTitle As String
Dim winS As RECT
If TextBox1.Text "" Then
ksTitle = TextBox1.Text
ksWND = FindWindow(vbNullString, ksTitle)
GetWindowRect(ksWND, winS)
MsgBox("左上角坐標(" winS.Left "," winS.Top ")" vbCrLf "右下角坐標(" winS.Right "," winS.Bottom ")" vbCrLf "窗口高" winS.Bottom - winS.Top "窗口寬" winS.Right - winS.Left)
Else
MsgBox("請?zhí)顚懘翱诿Q")
End If
End Sub
這說明你調用 API 傳參存在問題。
首先有沒有設置結構體內存對齊?
[StructLayout(LayoutKind.Sequential)] 加了嗎?
COLORREF 不要用 Color 代替,用 int 代替
TCHAR cfFaceName[32] 定義為 Byte 數組也可以,帶在傳參前,必須初始化為 32 個長度
Private Declare Function GetCursorPos Lib "user32" (ByRef lpPoint As POINTAPI) As Long '全屏坐標聲明
Private Declare Function ScreenToClient Lib "user32.dll" (ByVal hwnd As Int32, ByRef lpPoint As POINTAPI) As Int32 '窗口坐標聲明
Private Structure POINTAPI '聲明坐標變量
Public x As Int32 '聲明坐標變量為32位
Public y As Int32 '聲明坐標變量為32位
End Structure
'以上是聲明部分
'以下是窗口部分
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick '用時鐘控件來取坐標,窗口上放個Timer組件,Enabled為允許,周期為10到100毫秒均可
Dim P As POINTAPI '聲明坐標變量
Dim xx, yy '聲明轉換要用到的變量
GetCursorPos(P) '獲取鼠標在屏幕中的位置
ScreenToClient(Me.Handle.ToInt32, P) '轉換為本窗體的坐標
xx = P.x.ToString '把X轉換成能顯示到文本框的字符串格式
yy = P.y.ToString '把Y轉換成能顯示到文本框的字符串格式
TextBox1.Text = xx + "和" + yy '文本框的內容為X坐標和Y坐標
End Sub
沒聽懂你的意思。如果你是想做一個像右鍵菜單效果的話,你可以在鼠標點擊事件中獲取鼠標位置,然后創(chuàng)建你要顯示窗體的實例,把窗體的left 和 top 設成鼠標的x,和y 坐標就可以了,具體獲取鼠標坐標的方法大至有2種,一種是.net 自帶的,你找一找 Screen 這個對象中的屬性,能找到獲取鼠標坐標的方法,別一種就是用API函數獲取鼠標的坐標,GetCursorPos ,該 API 具體使用方法和聲明請在網上查找一下。如果有什么問題,可以再聯(lián)系我。
ext1.Text = a
Text2.Text = b
c = Val(Text1.Text) + Val(Text2.Text)
End Sub
我也是剛學VB,這是我自己做的。不知道能不能幫上你的忙。 隨機數字(20以內)的加法。
首先vb.net里大漠插件的findstr命令是不能用的,因為vb.net自身的問題。intx和inty值只會返回0,0. 我們要用findstrE這個命令 pos = findstr。。。。。。
然后用split function給出x和y值
當前文章:vb.netpos的簡單介紹
本文網址:http://www.chinadenli.net/article48/hipdhp.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供手機網站建設、定制開發(fā)、商城網站、云服務器、動態(tài)網站、外貿建站
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)