以前用C#,现工作需要用vb.net
在vb.net区发了一次贴,问题居然没有解决,来C#区再发一次,
请大家帮看这些语句
Imports System.Diagnostics Imports System.Runtime.InteropServices Public Class Form1 <StructLayout(LayoutKind.Sequential)> _ Public Structure CopyDataStruct Public dwData As Integer '附加參數 Public cbData As Integer '數據大小 Public lpData As IntPtr '數據內容 End Structure
<DllImport("user32.dll", EntryPoint:="SendMessage")> _ Public Shared Function SendMessage(ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer End Function
Public Const WM_COPYDATA As Integer = &H4A
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim S As String = TextBox1.Text If S.Length <= 0 Then Console.WriteLine("null") Return End If Dim vProcesses As Process() = Process.GetProcessesByName("CS")
If vProcesses.Length <= 0 Then vProcesses = Process.GetProcessesByName("CS.vshost") End If
If vProcesses.Length <= 0 Then Console.WriteLine("找不到目標程式") Return End If
Dim vCopyDataStruct As New CopyDataStruct() vCopyDataStruct.dwData = 0 vCopyDataStruct.cbData = S.Length * Len(New Char) + Len(New Char) '最後結束符號 \x00 vCopyDataStruct.lpData = Marshal.StringToBSTR(S) Dim vAddress = Marshal.AllocCoTaskMem(Marshal.SizeOf(vCopyDataStruct)) Marshal.StructureToPtr(vCopyDataStruct, vAddress, True) For Each vProcess As Process In vProcesses SendMessage(vProcess.MainWindowHandle, WM_COPYDATA, 0, CInt(vAddress)) Next Marshal.FreeBSTR(vCopyDataStruct.lpData) Marshal.FreeCoTaskMem(vAddress) End Sub
End Class
系统报错,
提示有两行
<StructLayout(LayoutKind.Sequential)> _ ~~ <DllImport("user32.dll", EntryPoint:="SendMessage")> _ ~~
系统在这两行右括号下加了波浪线~~~,提示
属性说明符不是一个完整的语句。请使用行继续符将该属性应用于下列语句。
vb.net区有人给我的回贴,
" <StructLayout(LayoutKind.Sequential)>"和"_"之间应该有一个空格 请注意,我的程序中>"和"_"之间是有空格的
在vb.net区发了一次贴,问题居然没有解决,来C#区再发一次,
请大家帮看这些语句
Imports System.Diagnostics Imports System.Runtime.InteropServices Public Class Form1 <StructLayout(LayoutKind.Sequential)> _ Public Structure CopyDataStruct Public dwData As Integer '附加參數 Public cbData As Integer '數據大小 Public lpData As IntPtr '數據內容 End Structure
<DllImport("user32.dll", EntryPoint:="SendMessage")> _ Public Shared Function SendMessage(ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer End Function
Public Const WM_COPYDATA As Integer = &H4A
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim S As String = TextBox1.Text If S.Length <= 0 Then Console.WriteLine("null") Return End If Dim vProcesses As Process() = Process.GetProcessesByName("CS")
If vProcesses.Length <= 0 Then vProcesses = Process.GetProcessesByName("CS.vshost") End If
If vProcesses.Length <= 0 Then Console.WriteLine("找不到目標程式") Return End If
Dim vCopyDataStruct As New CopyDataStruct() vCopyDataStruct.dwData = 0 vCopyDataStruct.cbData = S.Length * Len(New Char) + Len(New Char) '最後結束符號 \x00 vCopyDataStruct.lpData = Marshal.StringToBSTR(S) Dim vAddress = Marshal.AllocCoTaskMem(Marshal.SizeOf(vCopyDataStruct)) Marshal.StructureToPtr(vCopyDataStruct, vAddress, True) For Each vProcess As Process In vProcesses SendMessage(vProcess.MainWindowHandle, WM_COPYDATA, 0, CInt(vAddress)) Next Marshal.FreeBSTR(vCopyDataStruct.lpData) Marshal.FreeCoTaskMem(vAddress) End Sub
End Class
系统报错,
提示有两行
<StructLayout(LayoutKind.Sequential)> _ ~~ <DllImport("user32.dll", EntryPoint:="SendMessage")> _ ~~
系统在这两行右括号下加了波浪线~~~,提示
属性说明符不是一个完整的语句。请使用行继续符将该属性应用于下列语句。
vb.net区有人给我的回贴,
" <StructLayout(LayoutKind.Sequential)>"和"_"之间应该有一个空格 请注意,我的程序中>"和"_"之间是有空格的
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货