Массив Grt байт из HICON для отправки клиенту C# и печати на listview
Привет, мне нужно получить байты из дескриптора HICON, чтобы отправить его с сервера(C++) на клиент (C#), но я не знаю, как это сделать.
мне нужно отправить байт с
send(socket, (CHAR*)&Byte_to_send, sizeof(Byte_to_send);
Byte_to_send должен быть байтами, связанными с HICON каждого приложения windows, и
Я получил его таким образом:
Hicon icon = (HICON)GetClassLong(hWnd, GCL_HICON);
Что я уже пробовал:
БОКОВОЙ СЕРВЕР C++ :
HICON icon = (HICON)GetClassLong(hWnd, GCL_HICON); ICONINFO oIconInfo; if(::GetIconInfo(icon, &oIconInfo)==true){ cout <<"Success!"<<endl; send(newConnection,(CHAR*)&oIconInfo,sizeof(oIconInfo),NULL); }else{ cout <<"Failure!"<<endl; }
Теперь мне нужно преобразовать поток байтов, считанных с моего клиента (это сделано на c#), который я получил с моего сервера c++, и преобразовать массив байтов в изображение.
Поэтому я попытался сделать это:
БОКОВОЙ КЛИЕНТ C# :
byte[] buffer = new byte[1500]; sck.Receive(buffer); TypeConverter tc = TypeDescriptor.GetConverter(typeof(Bitmap)); Bitmap bitmap1 = (Bitmap)tc.ConvertFrom(buffer); imageList1.Images.Add(bitmap1);
Когда я пытаюсь это сделать, я получаю ошибку в этой строке:
Bitmap bitmap1 = (Bitmap)tc.ConvertFrom(buffer);
Это сообщение об ошибке, которое я получил:
Unhandled exception of the 'System.ArgumentException' type System.Drawing.dll Additional information: Invalid parameter.
Я тоже пробовал:
MemoryStream ms = new MemoryStream(buffer); Bitmap bmp; bmp = new Bitmap(ms);
а этот другой:
ImageConverter ic = new ImageConverter(); System.Drawing.Image img = (System.Drawing.Image)ic.ConvertFrom(buffer); Bitmap bitmap1 = new Bitmap(img);
но я получил то же самое сообщение об ошибке.