Современные решения

для защиты Windows приложений

и восстановления исходного кода

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)