Получить что-нибудь назад

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

Получить что-нибудь назад

Сообщение RaFaeL »

kreator писал(а): Как вариант - создать dll и в Кларионе пользоваться как внешней либой.
Не получится там так, см. ссылку. По крайней мере просто

Может попробовать через Named Pipe? Там функции используются CreateFile, ReadFile и т.п. только файла как бы нет.
http://www.frolov-lib.ru/books/bsp/v27/ch2_3.htm
Shur
Ветеран
Сообщения: 384
Зарегистрирован: 02 Июль 2011, 18:49

Получить что-нибудь назад

Сообщение Shur »

vic7tar писал(а): "Hello, World!"
Если сообщение всегда одно, то для этого лучше использовать код возврата. Команда RUN() их, кажется, читать умеет.
RaFaeL писал(а): Там функции используются CreateFile, ReadFile и т.п. только файла как бы нет.
Это тоже можно делать проще. Есть такие команды DOS как MKDIR и RMDIR -- файла вроде нет, открывать его не надо, читать тоже.
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3133
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

Получить что-нибудь назад

Сообщение Дед Пахом »

Кстати, CLIPBOARD(CF_XXX) может возвращать не только текст (не помню, с какой версии это стало возможным), так что можно в vpf программе вставить в буфер что-то нетекстовое (чтоб наверняка не затереть важную информацию), а в Кларионе этот буфер прочитать.
С уважением, ДП
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

Получить что-нибудь назад

Сообщение RaFaeL »

Так буфер же один, все равно затрет
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3133
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

Получить что-нибудь назад

Сообщение Дед Пахом »

RaFaeL писал(а): Так буфер же один, все равно затрет
Нифига, для каждого формата свой буфер.
С уважением, ДП
vd-vuf
Бывалый
Сообщения: 61
Зарегистрирован: 12 Декабрь 2008, 12:09
Откуда: Верхний Уфалей
Контактная информация:

Получить что-нибудь назад

Сообщение vd-vuf »

Порыть что нидь около api типа SendMessage, с разгону сложно, зато интересно :)
https://msdn.microsoft.com/en-us/librar ... s.85).aspx
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3133
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

Получить что-нибудь назад

Сообщение Дед Пахом »

Дед Пахом писал(а): Нифига, для каждого формата свой буфер.
Нет, это я кажется погорячился.
С уважением, ДП
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Получить что-нибудь назад

Сообщение Yufil »

В старые добрые времена в Кларионовской программе можно было запустить DDE-сервер, а снаружи отправить на него сообщение. Интересно, это ещё возможно?
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Получить что-нибудь назад

Сообщение Admin »

Yufil писал(а): Интересно, это ещё возможно?
Да.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Получить что-нибудь назад

Сообщение Yufil »

Тогда, возможно, и не стоит обсуждать другие варианты...
Аватара пользователя
vic7tar
Ветеран
Сообщения: 365
Зарегистрирован: 09 Февраль 2017, 20:12

Получить что-нибудь назад

Сообщение vic7tar »

Shur писал(а): vic7tar писал(а):
Источник цитаты "Hello, World!"

Если сообщение всегда одно, то для этого лучше использовать код возврата. Команда RUN() их, кажется, читать умеет.
Извините, пошутил. Ну просто нужен кусочек памяти, доступный для разных процессов и куда можно пихать и брать все что угодно. Смотрю в сторону CreateFileMapping.
Кстати, насчет Clipboard. А кто-нибудь пробовал с помощью Clipboard перетащить данные, например, из VM в основную?
C10, Win10x64
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Получить что-нибудь назад

Сообщение Yufil »

Нашёл древний класс, который разбирает Clipboard и выкладывает в очередь "Код типа-наименование типа-значение". Потом из очереди можно выдернуть нужную (например, можно забрать в буфер документ Word и выбрать оттуда строку в RTF) . Можно, наоборот, очередь закинуть в буфер обмена, если он был испрорчен почему-то. Можно сформировать HTML Clipboard, для вставки форматированного текста.
Если интересно, закину в файлохранилище...
dik1970
Посетитель
Сообщения: 43
Зарегистрирован: 06 Август 2009, 23:39

Получить что-нибудь назад

Сообщение dik1970 »

Почему-то не работает конструкция: run('wmic diskdrive get SerialNumber|clip'). Из-под CMD - все хорошо, серийник попадает в clipboard.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7372
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Получить что-нибудь назад

Сообщение Игорь Столяров »

dik1970 писал(а): 06 Сентябрь 2017, 21:49Из-под CMD - все хорошо, серийник попадает в clipboard
Почему бы просто не получить серийный номер HDD традиционным способом ?
И делайте с ним, что хотите ...

Код: Выделить всё


   Module('Windows')
     GetVolumeInformation(*CSTRING,<*CSTRING>,ULONG,*ULONG,*ULONG,*ULONG,*CSTRING,ULONG),SIGNED,PASCAL,RAW,NAME('GetVolumeInformationA')
   end

GetHDDNumber          PROCEDURE
RootPathName            CSTRING(4)
VolumeNameBuf           CSTRING(20)
VolumeNameSize          ULONG(20)
VolumeSerialNumber      ULONG
MaxCompLeng             ULONG
FileSysFlags            ULONG
FileSysNameBuf          CSTRING(20)
FileSysNameSize         ULONG(20)
  CODE
  RootPathName = 'C:\'
  If GetVolumeInformation(RootPathName,VolumeNamebuf,VolumeNameSize,VolumeSerialNumber,MaxCompLeng,FileSysFlags,FileSysNameBuf,FileSysNameSize).
  Return(VolumeSerialNumber)
За теми кто отстал - не возвращаться. (С) Кодекс
kreator
✯ Ветеран ✯
Сообщения: 4982
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 20 раз

Получить что-нибудь назад

Сообщение kreator »

Run не всё запускает также, как командная строка. Run скорее похож на ShellExecute. Возможно и запускает ShellExecute. И я тоже использую GetVolumeInformation, только у меня модуль "WinAPI".
We are hard at work… for you. :)
Ответить