<Runtime.InteropServices.DllImport("user32.dll")> _
Public Shared Function GetWindowText(ByVal hwnd As IntPtr, ByVal lpString As String, ByVal cch As Integer) As Integer
End Function
这 不能得到 lpString
而用
Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As IntPtr, ByVal lpString As String, ByVal cch As Integer) As Integer
lpString 的值 就是需要的文本
好奇怪啊
第一种形式 需要修改哪里呢??
12 个解决方案
#1
stringbuilder
#2
请说明白一点
stringbuilder 我也用过
但是在我用 string 的时候 其他都一样 只有声明 不一样 就会有现在的问题
#3
难道是问题太难了么
现在我的问题好多都没有满意答案了
现在我的问题好多都没有满意答案了
#4
ttttdingding thank you
#5
你说的不够明白
#6
Dim Buff As New String(Chr(0), 256)
Call GetWindowText(hwnd, Buff, 256)
Msgbox Buff.ToString
Call GetWindowText(hwnd, Buff, 256)
Msgbox Buff.ToString
#7
哦那里说的不够明白啊
Dim Buff As New String(Chr(0), 256)
GetWindowText(hwnd, Buff, 256)
同样上边2句话
但是对 GetWindowText 的声明语句不一样
Buff 的结果不一样
Dim Buff As New String(Chr(0), 256)
GetWindowText(hwnd, Buff, 256)
同样上边2句话
但是对 GetWindowText 的声明语句不一样
Buff 的结果不一样
#8
c#下面可以用的。你找个网站转成vb的。网上有整套的api 不必一个一个转。
[DllImport("user32.dll")]
public static extern int GetWindowTextW(IntPtr hWnd, [MarshalAs(UnmanagedType.LPWStr)]StringBuilder lpString, int nMaxCount);
#9
郁闷了 就是不行啊
#10
111
#11
vb.net
sample code:
参考
http://pinvoke.net/default.aspx/user32.GetWindowText
<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
Private Shared Function GetWindowText(ByVal hwnd As IntPtr, ByVal lpString As StringBuilder, ByVal cch As Integer) As Integer
End Function
sample code:
Public Function GetText(ByVal hWnd As IntPtr) As String
Dim length As Integer
If hWnd.ToInt32 <= 0 Then
Return Nothing
End If
length = GetWindowTextLength(hWnd)
If length = 0 Then
Return Nothing
End If
Dim sb As New System.Text.StringBuilder("", length + 1)
GetWindowText(hWnd, sb, sb.Capacity)
Return sb.ToString()
End Function
参考
http://pinvoke.net/default.aspx/user32.GetWindowText
#12
却是 StringBuilder 问题
我也尝试过的 当时为什么没生效呢? 现在已经能够不知道了
我也尝试过的 当时为什么没生效呢? 现在已经能够不知道了
#1
stringbuilder
#2
请说明白一点
stringbuilder 我也用过
但是在我用 string 的时候 其他都一样 只有声明 不一样 就会有现在的问题
#3
难道是问题太难了么
现在我的问题好多都没有满意答案了
现在我的问题好多都没有满意答案了
#4
ttttdingding thank you
#5
你说的不够明白
#6
Dim Buff As New String(Chr(0), 256)
Call GetWindowText(hwnd, Buff, 256)
Msgbox Buff.ToString
Call GetWindowText(hwnd, Buff, 256)
Msgbox Buff.ToString
#7
哦那里说的不够明白啊
Dim Buff As New String(Chr(0), 256)
GetWindowText(hwnd, Buff, 256)
同样上边2句话
但是对 GetWindowText 的声明语句不一样
Buff 的结果不一样
Dim Buff As New String(Chr(0), 256)
GetWindowText(hwnd, Buff, 256)
同样上边2句话
但是对 GetWindowText 的声明语句不一样
Buff 的结果不一样
#8
c#下面可以用的。你找个网站转成vb的。网上有整套的api 不必一个一个转。
[DllImport("user32.dll")]
public static extern int GetWindowTextW(IntPtr hWnd, [MarshalAs(UnmanagedType.LPWStr)]StringBuilder lpString, int nMaxCount);
#9
郁闷了 就是不行啊
#10
111
#11
vb.net
sample code:
参考
http://pinvoke.net/default.aspx/user32.GetWindowText
<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
Private Shared Function GetWindowText(ByVal hwnd As IntPtr, ByVal lpString As StringBuilder, ByVal cch As Integer) As Integer
End Function
sample code:
Public Function GetText(ByVal hWnd As IntPtr) As String
Dim length As Integer
If hWnd.ToInt32 <= 0 Then
Return Nothing
End If
length = GetWindowTextLength(hWnd)
If length = 0 Then
Return Nothing
End If
Dim sb As New System.Text.StringBuilder("", length + 1)
GetWindowText(hWnd, sb, sb.Capacity)
Return sb.ToString()
End Function
参考
http://pinvoke.net/default.aspx/user32.GetWindowText
#12
却是 StringBuilder 问题
我也尝试过的 当时为什么没生效呢? 现在已经能够不知道了
我也尝试过的 当时为什么没生效呢? 现在已经能够不知道了