|
288 / 229 / 27
Регистрация: 13.06.2010
Сообщений: 744
|
||||||||||||||||
SendMessage (Передать строку другому приложению)01.10.2011, 10:22. Показов 31868. Ответов 25
Метки нет (Все метки)
Возникла проблема при передаче строки из одного приложения в другое.
(XE) Передача(1-й вариант (рабочий))
Заранее благодарю за любые советы!
0
|
||||||||||||||||
| 01.10.2011, 10:22 | |
|
Ответы с готовыми решениями:
25
Передать текст другому приложению Передача массива байтов по UDP протоколу другому приложению Как отослать текстовое сообщение другому приложению. .SendMessage. WM_COPYDATA. Delphi |
|
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
|
|||||||||||
| 01.10.2011, 12:33 | |||||||||||
|
Надёжней всего со строками использовать сообщение WM_COPYDATA
Кстати, таким же образом можно передавать не только строки, но даже структуры данных.
3
|
|||||||||||
|
288 / 229 / 27
Регистрация: 13.06.2010
Сообщений: 744
|
|||||||||||
| 01.10.2011, 13:15 [ТС] | |||||||||||
|
Maluda Спасибо, не знал, что можно обойтись без создания своего типа сообщения, но не удается реализовать его на XE...
Сначала XE ругался на это:
Пробовал все это дело в Unicode, но лучший результат это первая буква каталога с двоеточием ("С:" + иероглифы)
0
|
|||||||||||
|
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
|
|||||||||||
| 02.10.2011, 00:35 | |||||||||||
Сообщение было отмечено как решение
Решение
Да, там действительно странности какие-то были с AnsiString. Сейчас сбрасываю рабочий вариант.
Проверил и протестировал. Чтобы время не терять и приём, и передачу поместил в одно приложение. Скомпилируешь приложение, а для второго экземпляра закомментируешь наоборот заглавие формы.
9
|
|||||||||||
|
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
|
|
| 02.10.2011, 00:38 | |
|
Должно получиться вот так
2
|
|
|
288 / 229 / 27
Регистрация: 13.06.2010
Сообщений: 744
|
|
| 02.10.2011, 11:47 [ТС] | |
|
Maluda Спасибо большое! Все прекрасно работает. В этом "+1" прям загадка какая-то
![]() Кстати у меня тоже все это происходит в одном приложении. Раз уж такая тема спрошу, верно ли я все делаю? 1)Плеер открыт ждет сообщения WM_COPYDATA 2)DblClick на песне в папке - Открывается второй экземпляр и в конструкторе мьютексом проверяет запущен ли уже "..Player" 3)Если да, переименовывает себя, ищет дексриптор окна с именем "..Player" и отправляет ему WM_COPYDATA ВАШИМ(Maluda) способом.. 4)1-ый экземпляр принимает строку и запускает трек. Но проблема в том, что происходит это все примерно 3 секунды. По сравнению с современными плеерами, которые открывают меньше чем за 0.5 сек, это безобразие Можно как то ускорить этот процесс?
0
|
|
|
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
|
|
| 02.10.2011, 12:30 | |
|
Я уверен, что проблема не в отправке сообщения или обработке её приёма,
а в открытии-запуске файла, поэтому вопрос: какими средствами файл открываешь, какую библиотеку используешь?
0
|
|
|
288 / 229 / 27
Регистрация: 13.06.2010
Сообщений: 744
|
|
| 02.10.2011, 12:49 [ТС] | |
|
Bass.dll, но DblClick в плейлисте открывает файл мгновенно, точно так же открываю после получения сообщения..
Только что поставил ShowMessage Первой строкой конструктора формы, и вышло это сообщение именно через 3 сек после дабл-клика на песне в папке
0
|
|
|
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
|
|
| 02.10.2011, 13:03 | |
|
Не совсем понятно, что у тебя за структура приложения. Надо код смотреть.
0
|
|
|
288 / 229 / 27
Регистрация: 13.06.2010
Сообщений: 744
|
||||||
| 02.10.2011, 14:53 [ТС] | ||||||
|
VCL Forms Application.. Конструктор формы я так понимаю выполняется в первую очередь сразу после запуска. Остается только думать что ассоциация муз.файлов с моей программой настроена некорректно.
Вот так я настроил ассоциацию:
0
|
||||||
|
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
|
|
| 02.10.2011, 21:45 | |
|
В том то и дело, что конструктор формы выполняется только после того, как на форме построены все компоненты.
А так как компоненты - это тоже классы, то соответственно, конструктор формы выполнится только после выполнения конструкторов всех компонентов. И если на форме у тебя 50 компонентов или картинки большого разрешения, или просто много картинок, то на всё это потратится время. Чтобы сократить время загрузки формы, необходимо как можно меньше сделать *.dfm файл формы. Чем он больше в размере будет, тем дольше будет загрузка формы.
1
|
|
|
288 / 229 / 27
Регистрация: 13.06.2010
Сообщений: 744
|
||||||
| 02.10.2011, 22:05 [ТС] | ||||||
|
А можно как то вставить мьютекс и отправить сообщение 1-му экземпляру, до создания всех компонент? А то и правда у меня чего на форме только нет..
Интуиция подсказывает что сделать это нужно в WinMain...
Мб есть способ?
0
|
||||||
|
|
|
| 03.10.2011, 01:36 | |
|
может, стоит это делать до Application->Initialize();
0
|
|
|
288 / 229 / 27
Регистрация: 13.06.2010
Сообщений: 744
|
||||||||||||
| 03.10.2011, 10:13 [ТС] | ||||||||||||
Добавлено через 26 минут Почему эта строка убивает приложение?
0
|
||||||||||||
|
Now I Matrix
137 / 134 / 28
Регистрация: 01.03.2010
Сообщений: 223
|
||||||
| 03.10.2011, 10:37 | ||||||
![]() ( на XP работает )
0
|
||||||
|
288 / 229 / 27
Регистрация: 13.06.2010
Сообщений: 744
|
|||||||||||
| 03.10.2011, 11:47 [ТС] | |||||||||||
|
Сразу после компиляции вылетает! Не забудьте про контекст!
А зачем нужен Mutex, если можно так:
0
|
|||||||||||
|
Прогер
|
||||||
| 04.10.2011, 05:48 | ||||||
|
__bool,
Попробуй, Наверно ты окну отправляеш слишком много месиджов для оброботки, и оно не успевает за 0.5 сек отреагировать на них ...Покажи код если можно, и не забуд очишать прграмму за собой...
Я вообше не понимаю, если ты нашел ришение, зачем вообше мутекс?
0
|
||||||
|
288 / 229 / 27
Регистрация: 13.06.2010
Сообщений: 744
|
||
| 04.10.2011, 07:29 [ТС] | ||
|
мьютекс проверяет по имени, так и FindWindow тоже. А чтоб не найти самого себя, мы можем переименовать себя, и произвести поиск Добавлено через 9 минут Даже если до Initialize() вставить проверку, отправить сообщение 1-му экземпляру и закрыть себя, 1-ый экземпляр получает сообщение через 3 секунды(примерно) Словно после DoubleClick в папке, Windows что-то там свое делает, а потом запускает.
0
|
||
|
|
|||||||||||
| 25.02.2012, 15:22 | |||||||||||
|
Я использовал
0
|
|||||||||||
| 05.09.2013, 01:08 | ||
|
Не по теме:
0
|
||
| 05.09.2013, 01:08 | |
|
Помогаю со студенческими работами здесь
20
Передать нажатие клавиши другому приложению
Передача строки другому приложению Отправка события другому приложению Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
|
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo
Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло.
Но на выплатах по больничным это. . .
|
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
|
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y
Z4Tv2zpXVVo
https:/ / github. com/ shumilovas/ med2. git
|
|
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа.
В качестве фильтра для отбора справочника служит группа номенклатуры.
Отбор по наименованию группы. . .
|
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
|
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс.
Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
|
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа.
В качестве фильтра для отбора служит значение перечислений.
/ / Событие "НачалоВыбора" реквизита на форме. . .
|