我在VB6中使用此代碼發送數據使用`字符串傳遞到另一個窗口WM_COPYDATA`
cds.dwData = CLng(RegisterWindowMessage("MyWMCopyData"))
cds.cbData = Len(Message) * 2 ' characters are 2-bytes each
cds.lpData = StrPtr(Message) ' access the string's character buffer directly
' Send the string.
Dim i As Long:i = SendMessage(lHwnd, WM_COPYDATA, MainForm.hwnd, cds)
你能幫助我的代碼vurrently接受它,我有這個
Dim B() As Byte
ReDim B(0 To tCDS.cbData - 1) As Byte
CopyMemory B(0), ByVal tCDS.lpData, tCDS.cbData
Dim sData As String
sData = Trim$(StrConv(B, vbUnicode))
如果我發送Hello
,我得到它H e l l o
我可以問你爲什麼這樣做'tCDS.cbData/2',我認爲Unicode字符串會按觀測原始空間爲2個字節每個字符 – Smith
我得到一個類型在此行'SDATA =字符串匹配(vbNullChar,tCDS.cbData/2)'所以我這樣開這個'sData = String(tCDS.cbData/2,vbNullChar)' – Smith
爲了發送它,你需要乘以兩倍。 'WM_COPYDATA'處理字節,而字符串長度是以字符爲單位的。每個字符是兩個字節。我也修復了對'String()'的調用。 – Deanna