Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 12.04.2013
Сообщений: 6
1

Не могу поймать сообщение wm_copydata

12.11.2013, 15:03. Просмотров 2510. Ответов 4
Метки нет (Все метки)


Мне необходимо принять массив данных типа ushort от другого приложения.
В С++ я принимал сообщения wm_copydata следующим образом:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//Receive Windows Message
LONG CMMS2011Dlg::OnCopyData(UINT wind, LONG cpdL)
{
    COPYDATASTRUCT *cpdP;
    long retVal;
    WORD adr_r[1024];
    cpdP = (COPYDATASTRUCT*)cpdL;
 
    nWM_Byte = (cpdP->cbData);
    memcpy(&adr_r, cpdP->lpData,    sizeof(WORD)*5*nWM_Byte);//Считываем весь массив
 
    retVal = 0;
    return (retVal);    
}
В C# принимаю сообщения wm_copydata следующим образом:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Windows;
 
namespace WindowsApplication3
{
    public partial class Form3 : Form
    {
        public Form3(WindowsApplication3.frmContainer parent)
        {
            InitializeComponent();
        }
 
        protected override void WndProc(ref Message m)
        {
            switch (m.Msg)
            {
                case WM_COPYDATA:
                     ...
                break;
            }
            base.WndProc(ref m);
        }
    }
}
Сама процедура WndProc вызывыется, то есть, wm_ сообщения приходят, но только не wm_copydata. Почему я не могу поймать сообщения типа wm_copydata, в то время, как приложение на С++ их ловит?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.11.2013, 15:03
Ответы с готовыми решениями:

Как передать сообщение через WM_COPYDATA
Кто нибудь работал с передачей сообщений SendMessage через WM_COPYDATA? Есть у кого-нибудь...

Как отослать текстовое сообщение другому приложению. .SendMessage. WM_COPYDATA. Delphi
Всем привет. Есть такая программа, отправляющая текстовое сообщение другой программе через...

Не могу поймать Enter
Не получается никак поймать enter, даже пытался сделать через LeftButton,не могу понять в чем...

не могу поймать wifi
Бодрого всем времени суток! Есть проблемка. Не могу поймать wifi на ноутбуке acer aspire v3-571g....

4
8123 / 4393 / 1725
Регистрация: 11.02.2013
Сообщений: 9,354
12.11.2013, 22:14 2
Где объявлена константа?
C#
1
public const int WM_COPYDATA = 0x4A;
0
0 / 0 / 0
Регистрация: 12.04.2013
Сообщений: 6
13.11.2013, 07:57  [ТС] 3
Константу я объявил, просто тут забыл ее указать, но дело не в ней. Я во время отладки смотрю какие сообщения приходят и WM_COPYDATA среди них нет.
В С++ я же использовал функцию CWnd::OnCopyData, так вот она реагирует только на сообщения от моего приложения, от которого я пытаюсь принять данные. А в С# есть аналог функции CWnd::OnCopyData?
0
206 / 162 / 29
Регистрация: 11.09.2013
Сообщений: 445
13.11.2013, 12:16 4
если Вы его не видите, значит оно не приходит. поищите что-то в отправителе. может, не то окно в качестве цели указано?
0
0 / 0 / 0
Регистрация: 12.04.2013
Сообщений: 6
15.11.2013, 11:58  [ТС] 5
Цитата Сообщение от sezada Посмотреть сообщение
если Вы его не видите, значит оно не приходит. поищите что-то в отправителе. может, не то окно в качестве цели указано?
Да, вы правы.Ошибка была в том, что при отправке WM_COPYDATA с помощью SendMessage(int hWnd, int Msg, IntPtr wParam, ref COPYDATASTRUCT lParam), третий параметр функции wParam=0, то есть я не сообщал хендл своего окна другому окну, от которого потом жал ответа.
Спасибо.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.11.2013, 11:58

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Не могу поймать EConvertError
Здравствуйте, уважаемые! Не совсем проблема, но все же помогите понять. VCL-овские StrToInt и ему...

Не могу поймать сообщения с vk api
import vk_api from datetime import datetime from vk_api.longpoll import VkLongPoll, VkEventType...

Не могу поймать клик по заголовку tableWidget
QObject::connect(ui->table->horizontalHeader(), SIGNAL(QHeaderView::sectionClicked(int)), this ,...

Не могу поймать ответ от PerfectMoney на laravel
Здравствуйте! Подключил вручную PerfectMoney на Laravel, без пакетов. Ответы к скрипту должны...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.