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

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