Эксперты, не подскажите ли вы, можно ди в Виндах передать из одного приложения в другое данные большого размера не используя жесткого диска или буфера обмена, и, если можно, то как?
Здравствуйте, Corsar! Попробуй использовать TServerSocet, TClientSocet
Ответ отправлен: 19.08.2002, 13:11 Отправитель: Vladimir Отвечает Артём Шегеда
Здравствуйте, Corsar!
В Windows есть чудесный метод передачи данных между процессами - DDE. В Delphi работу с DDE обеспечивают две основные компоненты - TDdeServerItem и TDdeClientItem. Просты в использовании и поддерживаются на уровне системы. Ответ отправлен: 19.08.2002, 14:07 Отправитель: Артём Шегеда Отвечает Pablo
Добрый день, Corsar! Есть несколько способов 1. Файлы отображаемые на память. Для использования этого иметода смотри функции CreateFileMapping и OpenFileMapping. 2. Каналы передачи данных Pipe. Для использования этого способа смотри функции CreateFile и CreateNamedPipe. Plrcm функция CreateFile используется для создания канала pipe. 3. Каналы передачи данных mailslot. Для исползования этого способа смотри функции CreateFile для создания канала mailslot и CreateMailslot. Ответ отправлен: 21.08.2002, 22:53 Отправитель: Pablo
Вопрос № 140
Здраствуйте, уважаемые эксперты. Меня зовут Евгений. Я неплохо знаю Паскаль под дос и хочу изучить Делфи. У меня есть 4 версия данного приложения. Его возможности меня впечатлили. На асм я писал несколько программ (TSR, Сеть). И хочу написать подобные TSR проги под Делфи (С вашей помощью). Возможно, для некоторых, мои вопросы наивны и глупы, но я прошу ответить мне, если у вас, эксперты, есть такая возможность. Все ваши ответы, пожелания, книги, примеры, нотации прошу направлять по адресау: Sea84@yandex.ru Я надеюсь, что это не последнее мое обращение к экспертам, и ваша помощь будет неоценима. (Не могли бы кто-нибудь скинуть IсeDump и доку по применению. Подскажите команду поиска в SoftIce если надо найти строку символов, введенную в TEDIT). Особенно буду благодарен за примеры, книги (если не жалко и есть время). Вот несколько вопросов: 1.
Объясните, пожалуйста, понятие резидента в Делфи. Какие команды используются при этом? Как его сделать и осуществить перехват "прерываний". Вместо их, я слышал, в Windows используются API - функции, как перехватить их? (Пример !!!). 2. Как совместить консольное приложение или приложение с несколькими формами с резидентом? (Пример). 3. Как при этом эффективно использовать память (Выгрузка/загрузка форм)? (Пример). 4. Как в Делфи можно перехваить обращение с дискам (A:, C:, D: и т.д.)? (Пример !!!). 5. Как в Делфи из этого резидента или из просто запущенной проги можно определить какая клавиша/кнопка(мыши) нажата, если запущена другая ("левая") программа, и выполнить какие-либо команды, например екстренный выход из оболочки? (Пример !!!). 6. Что за понятие родительский процесс (форма)? Как их изменить? Что может быть родителем? 7. Как сделать так, чтобы
прога, а точнее ее формы "одинаково" показывались под разными разрешениями экрана (640*480, 800*600, 1024*768 и т.д)? (Пример). 8. Как ПЕРЕМЕСТИТЬ значок из "строки запуска" (строка пуск) в TRAY? (Пример !!!). Как сделать PopumMenu (Правая кнопка мыши) на TRAYе? Как вообще определить, когда нажали на твой TRAY, какой кнопкой и сколько раз? (ПРИМЕР !!!). Надеюсь я вас сильно не загрузил? Заранее огромное СПАСИБО!!!.
Доброе время суток, Yevg! Даааа.... :-0 А вы, батенька, привыкли брать быка за рога! :) Делфи - рульная штука, но если Вы не знакомы с ООП или основами программирования для Windows, то изучение всего, что Вы перечислили займет довольно много времени... Попробуйте купить какую-нибудь книжку по программированию в Delphi (но не "для чайников"!!) и поразбираться... Читать электронные книги в данном случае более долго, сложно и вредно.
Ответ отправлен: 21.08.2002, 23:35 Отправитель: baldr Отвечает nix
Приветствую Вас, Yevg! Cовет - купи книгу по Delphi6, а вообще бросай pascal и переходи на C/C++:-)) Ответ отправлен: 21.08.2002, 06:04 Отправитель: nix Отвечает Pablo
Здравствуй, Yevg! 1. Т.к. Дельфи это среда программитования под Windows, то как следствие, с помощью нее можно писать под Windows программы. В Windows же другая органицация памяти и адресации по сравнению с DOSом. Например в Виндах используется модель памяти под названием flat, т.е. все программы адресуются в одном адресном прострастве, но правда для каждого из процесса оно будет свое и не будет пересекаться по адресам с другими процессами, и все адреса имеют 32-битную разрядность. Понятие резидента как таковое отсутствует, т.к. фактически все процессы имеющие окна всегда находятся в памяти. Процесс можно рассатривать как "нерезидентный" когда он не создает окна и выходит почти сразу же после того как был запущен. По умолчанию Дельфи делат прогу использующую окна. 2. Если тебе нужно вызывать из Дельф консольное приложения, то используй для этого функцию
CreateProcess, отследить же когда консолькое приложение хавержит свою работу можно с помощью WaitForSingleObject. 3. Дельфи сам использует память довобльно эффективно, но спрочем если у тебя в проекте несколько форм, то ты можешь создать только одну в начале работы, а остальные по мере их надобности. 4. Для т.н. перехвата обращений ты можешь, напрмер, попробовать использовать метод CreateFile для открытия соответствующего устройства, а затем тотже WaitForSingleObject. Правда я не помнб чтобы в MSDN такое можно было, но это не точно. 5. Для формы можно определить события OnClick и т.д., эти события возникают когда в окно приходят сообщения от виндов что клавиша или кнопка мыши нажата, так вот ты думаю сможешь получать от виндов такие же сообщения для других окон из других процессов. 6. Родилем для какого-либо процесса является, процесс которые его создал. 7. В данном случае
тебе нужно обрабатывать событие OnResize от формы и в соответствии с новыми размерами формы ты можешь настраивать новые размеры органов управления, которые назходятся на форме. 8. В Дельфах есть такой компонент TTrayIcon. Вот его и используй. Ответ отправлен: 22.08.2002, 15:54 Отправитель: Pablo Отвечает Painbringer
Доброе время суток, Yevg! 1-6. какие в жопу резиденты под видами??????!!!!! 8. смотри приложение
Приложение: Ответ отправлен: 24.08.2002, 01:47 Отправитель: Painbringer
Вопрос № 141
Здравствуйте! У меня есть путь и имя документа MS Word. (E:..Test.doc) Как загрузить(запустить) его наибыстрейшим способом и чтоб работал этот способ под любой Windows и любым Офисом(Word'ом точнее сказать).
Приветствую Вас, Orlando! Вызови: start имяфайла Запустится та программа, которая ассоциирована с этим файлом... И не обязательно Word, вообще-то говоря... Ответ отправлен: 21.08.2002, 13:42 Отправитель: baldr Отвечает Pablo
Доброе время суток, Orlando! Ну в Дельфях ведь есть компоненты Вордовые, вот такой или такие компоненты поставь на форму и открывай себе документов сколько влезет!))) Ответ отправлен: 21.08.2002, 22:53 Отправитель: Pablo Отвечает vitya
Здравствуйте, Orlando! Создай ole объект, потом вызывай InvokeHelper(). Mогу конкретно сказать на С++. Да под все ворды это не пойдет, там количество параметров в функции Open() разное. Начиная с Word2000 параметров 12, в преведущих их там 9. Итак из msword?.olb надо создать классы. Дальше так: CoInitialize(0); _Application appWord; appWord.CreateDispatch("Word.Application"); Documents docs = appWord.GetDocuments(); _Document doc = docs.Open(...) //тут до хрена параметров appWord.SetVisible(TRUE); все готово. Если потом хотите закрыть это приложение appWord.Quit(); //тут три параметра Ответ отправлен: 21.08.2002, 11:05 Отправитель: vitya Отвечает Sanya
Приветствую Вас, Orlando! А вот так: ShellExecute(Handle,nil,nil,'Полное_имя_твоёго_дока',nil, nil, SW_RESTORE); Удачи! Ответ отправлен: 22.08.2002, 02:36 Отправитель: Sanya
Форма отправки вопроса
Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook"
и "Microsoft Outlook Express". В программе The Bat!
подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте,
что в некоторых браузерах могут стоять запреты на открытие других
окон, а также "чрезмерное" кэширование данных,
при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet
Explorer 5.0+ или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.