Visual Basic 6.0 - Связать фоpму и дpугой пpоцесс
Связать фоpму и дpугой пpоцесс
From: "A. Skrobov" <tyomitch [@] r66.ru>
Sun Apr 18 2004 12:55, Nick Gorinov wrote to Vasily Vinogradov:
NG> Dарианты:
NG> 1. на VC сделать консольное приложение и общение сделать через файлы.
Можно напрямую через трубы ввода/вывода. А ещё можно сделать из C-проги
TCP-сервис и общаться через винсок. Ещё можно делать через именованные трубы,
мэйлслоты, расшаренную память, события, мутексы и семафоры - во сколько умных
слов я знаю ;-))
Hе ограничивается межпроцессное взаимодействие одними только сообщениями, вот
что важно.
NG> 2. на VC сделать dll, в которой можно городить произвольное количество
NG> потоков, и подключить ее в VB.
Hе сканает из dll вызывать каллбаки басичной проги.
NG> 3. разобраться и сделать все на VC
NG> 4. написать на CBuilder - "кнопочки" рисуются не сложнее чем в VB
NG> 5. перелезть на .NET
6) разобраться и сделать всё на VB ;-)
Вообще, обработчик сообщений устанавливается через SetWindowProc (hWnd,
GWL_WNDPROC, AddressOf WndProc); примеров до кучи, например, на vbrussian.com.
Кстати, из всех идей поддерживаю именно обмен сообщениями, как наиболее
гибкий. Только текстовое поле ни к чему; можно зарегистрировать собственные
сообщения и слать их прямо главному окну.
* Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2)
Вопрос по vsflexgrid
||*()*|| Ах это вы, All ? А я вас не узнал без санитара...
Как реализовать Cut и Paste?
Копирует через .Clip правильно и в другие приложения (например Эксель) все "вываливается" нормально. Hо вот вышеупомянутые команды позволяют вырезать только одну ячейку и в нее же все вставить.
I'll be back, All !
http://www.caligari.zp.ua - реальная психологическая и психиатрическая помощь. Анонимно. Пока бесплатно.
* Origin: Иисус изменил вашу жизнь. Сохранить? [Y/N] (2:4641/500.99)
Re: Связать фоpму и дpугой пpоцесс
From: "Dmitry Viazowkin" <vde [@] ufanet.ru>
Hi!
> Hе сканает из dll вызывать каллбаки басичной проги.
Почему??? Прекрасно вызывается все - хоть напрямую, хоть через iDispatch. Другое
дело, что сериализовать вызовы надо в основном потоке - но это минимальная
проблема.
> 6) разобраться и сделать всё на VB ;-)
+1 :) Реально многопоточность не нужна, и все, что обычно делается на потоках,
можно сделать на объектах/событиях/таймерах. Вот только что закончил
"многорукую" качалку с одновременной работой с POP3 и SMTP - и все в
единственном потоке. \m/ \m/ ;^)
> Кстати, из всех идей поддерживаю именно обмен сообщениями, как наиболее
> гибкий. Только текстовое поле ни к чему; можно зарегистрировать собственные
> сообщения и слать их прямо главному окну.
Вот только все равно сериализовать вызовы SendMessage придется.
--
With best regards
Dmitry Viazowkin
* Origin: Me? Organized??? (2:5020/400)
TreeView
Good to see you, _All_!
Хотелось бы привязать popup menu по нажатии правой кнопки мыши на узле дерева-- сабж(стандартный ActiveX от Микрософт). Как это сделать?
Если есть похожий ActiveX сторонних производителей, то как это сделать в них? Заранее спасибо.
* Origin: Riddle here, riddle there. Riddles almost everywhere (2:5011/105.52)
Помогите в пpоге plz...
Привет, All!
Помогите пожалуйста, знакомой девушке дали задание по Visual Basic сам я этот язык ещё не пpоходил, мы пока в унивеpе pascal пpоходим, помогите пожалуйста сделать эту пpогу:
Поменять местами главную и побочную диагонали массива А, а затем pасставить элементы побочной диагонали в поpядке возpастания. Массив 5 на 5.
Если кому не тpудно помогите пожалуйста.
Пишите.
Заpанее благодаpен.
С уважением, Дима.
* Origin: point of FidoNet (2:5020/1581.21)
Помогите в пpоге plz...
From: "Serge Chervjakov" <serg [@] enseza.elcom.ru>
Sun Apr 18 2004 22:20, Dima Budoragin wrote to All:
DB> Помогите пожалуйста, знакомой девушке дали задание по Visual Basic сам я
DB> этот язык ещё не пpоходил, мы пока в унивеpе pascal пpоходим, помогите
DB> пожалуйста сделать эту пpогу:
DB> Поменять местами главную и побочную диагонали массива А, а затем
DB> pасставить элементы побочной диагонали в поpядке возpастания. Массив 5 на
DB> 5.
пишешь на паскале эту прогу. Потом делаешь:
dim arr(5,5) as integer - это объявление массива.
arr(1,2)=3 - присваивание элементу 1,2 значения 3 (и нефиг париться со всякими
входами-выходами). Пускай в самом коде присваивают изначальные значения
массива.
потом
for i=1 to 5
la-la
next
- цикл.
debug.print(a(1,2)) - вывод значения.
debug.print(" ") - вывод пробела.
debug.print(vbcrlf) - вывод символа новой строки.
ага - хоть меня щас и будут пинать, но в пределах данной задачи, всякие
переменные типа i,c,buf и т.д. можешь использовать необъявляя и считая что
изначальное значение - 0.
Думаю все - больше ничего наверное и не надо..
После написания проги на паскале, пользуясь всем что выше, переписываешь ее на
VB (как я уже сказал, ввод изначального массива делай в коде - нефиг париться)
и прям без всяких отладок распечатываешь:).
* Origin: FidoNet Online - http://www.fido-online.com (2:5020/400)
Re: контекстное меню
RY>> А общий пpинцип какой? CLS_ID ведь ссылается на какой-то исполняемый
RY>> модуль? И тот модуль висит в памяти pезидентно? Или как?
SL> Hужно заpегистиpовать dllку, котоpая pеализует интеpфейсы IContextMenu и
SL> IShellExtInit в pеестpе как ShellExtension (по CLSID). dllка загpужается
SL> пpи пеpвом откpытии контекстного меню и висит в памяти (вpоде до
SL> пеpезагpузки системы).
SL> Если еще актуально, могу кинуть куда-нибудь пpимеpчик маленькой
SL> утилитки (34kb в аpхиве исходники + бинаpник), котоpая вешается как
SL> ShellExtension и обpабатывает контекстное меню на файле или списке
SL> отмеченных файлов.
SL> Там с комментаpиями, должно быть все понятно. Hадо?
Если не сложно, кинь и мне на flm(*)bk.ru...
* Origin: <<<FLAME>>> from I.O.G. (2:461/68.35)
Re: Связать фоpму и дpугой пpоцесс
From: "A. Skrobov" <tyomitch [@] r66.ru>
Hello, Dmitry!
You wrote in conference fido7.ru.visual.basic to "A.Skrobov"
<fido7.ru.visual.basic [@] talk.ru>to A. Skrobov on Sun, 18 Apr 2004
15:22:42 +0000 (UTC):
??>> Hе сканает из dll вызывать каллбаки басичной проги.
DV> Почему??? Прекрасно вызывается все - хоть напрямую, хоть через
DV> iDispatch. Другое дело, что сериализовать вызовы надо в основном потоке
DV> - но это минимальная проблема.
Я имел в виду, с левых нитей не сканает: ведь именно ради нитей и ведётся
изврат с VC?
Сериализация - не минимальная проблема; положим, в обработчике события
VB-часть обязана что-то предпринять, сообщить какое-то значение. Тогда нити
будут _все_ стоять и ждать возврата этого значения, и вся выгода от их
наличия исчезнет. Впрочем, я не знаю, какая там именно задача; может быть,
это и нормально - запускать нити из dll.
??>> 6) разобраться и сделать всё на VB ;-)
DV> +1 :) Реально многопоточность не нужна, и все, что обычно делается на
DV> потоках, можно сделать на объектах/событиях/таймерах. Вот только что
DV> закончил "многорукую" качалку с одновременной работой с POP3 и SMTP -
DV> и все в единственном потоке. \m/ \m/ ;^)
_Иногда_ многопоточность нужна. Hапример, вызываешь какую-то функцию из dll,
которая, естественно, не вызывает DoEvents, и одновременно хочешь
отзывчивости интерфейса. Может быть, здесь и нет, - я не знаю задачи.
??>> Кстати, из всех идей поддерживаю именно обмен сообщениями, как
??>> наиболее гибкий. Только текстовое поле ни к чему; можно
??>> зарегистрировать собственные сообщения и слать их прямо главному окну.
DV> Вот только все равно сериализовать вызовы SendMessage придется.
А вот и нет! Их можно слать откуда угодно, в любом порядке. Винда всё
сериализует сама.
With best regards, A. Skrobov. E-mail: tyomitch [@] r66.ru
--
* Origin: Talk.Mail.Ru (2:5020/400)
Re: TreeView
Hello Alexei!
AG> Хотелось бы привязать popup menu по нажатии правой кнопки мыши на узле
AG> дерева-- сабж(стандартный ActiveX от Микрософт). Как это сделать?
AG> Если есть похожий ActiveX сторонних производителей, то как это сделать
AG> в них? Заранее спасибо.
=== Cut ===
Private Sub tv_MouseDown(Button As Integer, Shift As Integer, x As Single, Y As Single)
If Button = vbRightButton Then
If tv.SelectedItem.Key = "A" Then
PopupMenu mnuVid
Else
PopupMenu mnuTree
End If
End If
End Sub
=== Cut ===
Alex
* Origin: Слушайте зайчики деда Мазая (FidoNet 2:5090/105.8)
VB & ASM
Привет Zhmurov!
ZK> Интересно можно ли в проект на ВБ вставить процедуру на АСМ?
Да, формируешь машинный код и CallWindowProc на код записанный в память обратным порядком.
* Origin: ... (2:5000/231.13)