
正文
vb.net传输汉字 vbnet stringformat
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
vb.net如何与c语言做的dll互相传递字符串
首先是C的DLL(我的项目叫ConsoleApplication2.dll):
#include Windows.h
// 导出Test函数,供外部使用
extern "C" __declspec(dllexport) BSTR __cdecl Test(LPSTR p);
BOOL WINAPI DllMain(
HINSTANCE hinstDLL,
DWORD fdwReason,
LPVOID lpReserved)
{
switch (fdwReason)
{
case DLL_PROCESS_ATTACH: break;
case DLL_THREAD_ATTACH: break;
case DLL_THREAD_DETACH: break;
case DLL_PROCESS_DETACH: break;
}
return TRUE;
}
BSTR __cdecl Test(LPSTR p)
{
p[0] = 'X';
return SysAllocString((BSTR)p);
}
然后是VB.Net项目:
Imports System.Runtime.InteropServices
Imports System.Text
Module Module1
REM 生成的是ConsoleApplication2.dll,名字与C里面相同
DllImport("ConsoleApplication2.dll", CharSet:=CharSet.Auto, CallingConvention:=CallingConvention.Cdecl)
Public Function Test(MarshalAs(UnmanagedType.LPTStr) ByVal str As StringBuilder) As MarshalAs(UnmanagedType.BStr) String
End Function
Sub Main()
Dim str As StringBuilder = New StringBuilder("Hello")
Dim rstr As String = Test(str)
Console.WriteLine(rstr)
Console.ReadKey()
End Sub
End Module
运行结果:
相关问答
Q1: vb.net编写的聊天程序怎么不能传送汉字
‘客户端向这样写vb.net传输汉字:在窗体说放两个文本框、两个标签、两个按钮、一个列表框
Imports System.Net
Imports System.Net.Sockets
Imports System.IO
Imports System.Threading
Public Class Form1
'网络基础数据流
Private ns As NetworkStream
Private swriter As StreamWriter
Private nsread As StreamReader
Private tcpclient As TcpClient
Private tcpconnected As Boolean = False
Private clisocket As Socket
Private mythread As Thread
'发送
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If Me.TextBox2.Text "" Then
swriter.WriteLine(Me.TextBox2.Text)
swriter.Flush()
Me.TextBox2.Text = ""
Else
MessageBox.Show("发送信息不能为空vb.net传输汉字!", "错误提示")
End If
End Sub
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
'建立连连接
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim ipremote As IPAddress
Dim tcpclient As TcpClient
Try
ipremote = IPAddress.Parse(Me.TextBox1.Text)
Catch ex As Exception
MessageBox.Show("IP地址不合法vb.net传输汉字!", "错误提示")
End Try
Try
tcpclient = New TcpClient(Me.TextBox1.Text, 8000)
ns = tcpclient.GetStream
swriter = New StreamWriter(ns)
Me.StatusBar1.Text = "已经连接上"
Me.Button2.Enabled = False
Me.Button1.Enabled = True
tcpconnected = True
Catch ex As Exception
MessageBox.Show("无法与远程8000端口建立连接vb.net传输汉字!", "错误提示")
End Try
End Sub
Private Sub listen()
Try
Dim tcplistener As New TcpListener(IPAddress.Parse("127.0.0.1"), 8000)
tcplistener.Start()
tcpclient = tcplistener.AcceptTcpClient
ns = tcpclient.GetStream()
nsread = New StreamReader(ns)
While True
Dim msg As String = nsread.ReadLine
If msg = "stop" Then
tcplistener.Stop()
ns.Close()
nsread.Close()
mythread.Abort()
Else
Dim mytime As String = DateTime.Now.ToShortTimeString
Me.ListBox1.Items.Add(mytime + " " + msg)
End If
End While
Catch ex As System.Security.SecurityException
MessageBox.Show("侦听失败vb.net传输汉字!", "错误")
End Try
End Sub
End Class
Q2: DW8中.NET VB不能向Access数据库提交汉字,如何解决?
以往的回答都是说在默认值里设置,这种方法在还没有输入记录的时候确实是一个好方法,但是若已经输入了记录(特别是已输入了不少的记录)的话,此方法就行不通了,在此vb.net传输汉字我有一个方法可供vb.net传输汉字你们参考一下(特别是对输入了不少的记录更会觉得方便)vb.net传输汉字:1.在“查询”中设计一个“更新查询”。在查询设计器中,把要修改的表显示出来,在下面的字段栏中选择要修改或添加的字段名。在“更新到”栏中输入1,并保存查询。
2. 执行查询,在资料表中的相应栏位即可得到所需要的值。
此方法即简便又实用(特别是对已输入较多的记录而言),并且执行一次后即可将该查询删除。
Q3: vb.net 加载的新窗口 里面会有传值 数字没问题 中文是乱码 该如何 解决呢 谢谢
一般出现乱码都是在js裏面跳转到哪个类然後得到这个参数的时候中文乱码,有一个非常实用的法,在js你可以这样写:varurl=..;url=encodeURI(url);url=encodeURI(url);//最重要的部分,两次调用encodeURI,就是编码两次然後在跳转到url所在的类,获取这个参数的方法如下:Stringname=request.getParameter("name");name=URLDecoder.decode(name,"utf8");这样就能解决乱码问题了,这种方法还没遇到过不能解决的乱码,
Q4: VB.net做软键盘输入中文汉字,请问在VB.net不是VB6中.怎么做软键盘输入汉字.我现在能输入英文但是汉字不行
既然vb.net传输汉字你可以输入英文vb.net传输汉字,只要系统切换到中文输入方式下,例如“谷歌拼音”,不就可以输入中文vb.net传输汉字了
vb.net传输汉字的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于vbnet stringformat、vb.net传输汉字的信息别忘了在本站进行查找喔。






