Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.07.2019, 11:31   #1
Haberman
Форумчанин
 
Регистрация: 01.05.2018
Сообщений: 104
Вопрос OnWMCopyData Не получается получить строку

код проэкт1:
Код:
 TCopyDataStruct ParamSong;
	HANDLE hMutex=CreateMutexA(NULL,true,"998");
	  int Res= GetLastError();
//  try  {	 catch ( ) { ShowMessage("try to send copy data");
		 if(Res == ERROR_ALREADY_EXISTS) {
		 String sBuffer;
		 HWND hWnd;
			 sBuffer=ParamStr(1);
		  ParamSong.cbData=sBuffer.Length();
		  ParamSong.lpData=sBuffer.c_str();
		hWnd=FindWindowA(NULL, "Form1") ;
	  if (hWnd>0) {
    SendMessage(hWnd,WM_COPYDATA, 0, (LPARAM) &ParamSong);
	  }
Получатель
Код:
void __fastcall TForm1::OnWMCopyData(TWMCopyData &Msg)
{ char buffer[25];
String mfile =(char*)Msg.CopyDataStruct->lpData;// Msg.CopyDataStruct->cbData;  char *mfile%20strcpy%28buffer%2C
 Msg.Result=1; 
 if (FileExists(buffer)) {
 PerformOpen(mfile);
 } else lst1->Items->Add("nothing happend");
в лстбокс 1 добавляется :nothing happend.

в сети находил еще вот такое:
Код:
 strcpy(szBuf, ((PCOPYDATASTRUCT)lParam)->lpData);
но у меня не выходит, я не понимаю что он туда вписал

Последний раз редактировалось Haberman; 04.07.2019 в 11:34.
Haberman вне форума Ответить с цитированием
Старый 04.07.2019, 12:07   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Посмотрите отладчиком что лежит в пришедшей структуре Msg, в частности на что указывает lpData
waleri вне форума Ответить с цитированием
Старый 04.07.2019, 16:14   #3
Haberman
Форумчанин
 
Регистрация: 01.05.2018
Сообщений: 104
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Посмотрите отладчиком что лежит в пришедшей структуре Msg, в частности на что указывает lpData
До отладчика пока не могу добратся в системе установлено несколько , раньше при запуске каждая из них предлагалось диалог с установкой отладчика для этой
но я нажал "больше не показывать".

сейчас вот так
Код:
String mfile =(char*)Msg.CopyDataStruct->lpData;//char buffer[25]; Msg.CopyDataStruct->cbData;  char *
 //mfile strcpy(buffer,
  ColoredString(mfile);
добавляет первую букву с имени файла(первая буква- название диска).
Haberman вне форума Ответить с цитированием
Старый 04.07.2019, 16:22   #4
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Цитата:
Сообщение от Haberman Посмотреть сообщение
добавляет первую букву с имени файла
Ага... тогда следует вопрос - почему вы решили, что там должен быть (char*)?
Тип данных у класса String явно не char, всего wchar_t...
waleri вне форума Ответить с цитированием
Старый 04.07.2019, 16:33   #5
Haberman
Форумчанин
 
Регистрация: 01.05.2018
Сообщений: 104
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Ага... тогда следует вопрос - почему вы решили, что там должен быть (char*)?
всего wchar_t...
Если есть возможность такие сложные\чувствительные вещи как пересылка данных между программами, я загружаю это из старых проэктов, в билдере 6й версии было так:
Код:
 
HANDLE hMutex=CreateMutex(NULL,true,"995");

------------------------------------------------------------------------
void __fastcall TForm1::OnWMCopyData(TWMCopyData &Msg) {
    const AnsiString song = (char*)Msg.CopyDataStruct->lpData;
    ListBox1->Items->Add(song);
и работало!

Ну а до того, я вероятно нашел гдето в сети.
Haberman вне форума Ответить с цитированием
Старый 04.07.2019, 19:50   #6
Haberman
Форумчанин
 
Регистрация: 01.05.2018
Сообщений: 104
По умолчанию

Нашел решение в ветке по делфи - https://programmersforum.ru/showthre...=210497&page=2

А тут помощи.нет
Haberman вне форума Ответить с цитированием
Старый 05.07.2019, 06:28   #7
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Цитата:
Сообщение от Haberman Посмотреть сообщение
А тут помощи.нет
Не нравиться - дверь там...

А что касается примера для 6й версии, то он вполне рабочий но у вас-то другое...
waleri вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не получается продублировать строку матрицы. Pug_from_Mordor Помощь студентам 0 19.05.2015 23:12
Не получается ввести и вывести строку Алексей_2012 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 10 14.02.2013 14:06
Не получается перевернуть наоборот строку символьного массива. Zaza7 Общие вопросы C/C++ 8 30.10.2012 13:40
Не получается получить значение из функции через указатель Casper-SC Общие вопросы C/C++ 5 12.01.2012 06:32
Не получается записать строку в Title Bar Zap Win Api 0 30.04.2010 17:49