Я использую C # Mailslots Wrapper чтобы создать сервер почтовых ящиков, и когда я пытаюсь что-то отправить на него с помощью C ++, полученная строка состоит из странных китайских символов.
Вот сервер почтовых ящиков, который я сделал:
public void slots()
{
do
{
using (var server = new MailSlots.MailslotServer("MailSlot"))
{
do
{
var msg = server.GetNextMessage();
if (msg != null)
{
MessageBox.Show(msg);
}
} while (true);
}
} while (true);
}
И это мой код на C ++:
LPTSTR SlotName = TEXT("\\\\.\\mailslot\\MailSlot");
BOOL WriteSlot(HANDLE hSlot, LPTSTR lpszMessage)
{
BOOL fResult;
DWORD cbWritten;
fResult = WriteFile(hSlot,
lpszMessage,
(DWORD)(lstrlen(lpszMessage) + 1) * sizeof(TCHAR),
&cbWritten,
(LPOVERLAPPED)NULL);
if (!fResult)
{
return FALSE;
}
printf("Slot written to successfully.\n");
return TRUE;
}
int main()
{
HANDLE hFile;
hFile = CreateFile(SlotName,
GENERIC_WRITE,
FILE_SHARE_READ,
(LPSECURITY_ATTRIBUTES)NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
(HANDLE)NULL);
WriteSlot(hFile, TEXT("hi!"));
}
Сервер не получил мое «привет!» строка, но она получила какие-то странные китайские буквы, что я тут не так делаю?
Вот как они выглядят:
Задача ещё не решена.
Других решений пока нет …