Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: И еще раз String Stream Добавлено: 10.09.04 12:31  

Автор вопроса:  Dark Engine | Web-сайт: www.wentas.2bb.ru | ICQ: 343191665 
 Все, что мне стало известно об ограничениях системы Windows напрочь мешает мне. Этот вопрос уже задавался, однако ответ был отрицательным. А вопрос таков: как программно переслать большую строку в параметр вызываемой программе. Мне необходимо знать, есть ли в АПИ функция, позволяющая это, и как она выглядит (библиотека,объявление и, если можно, комментарии)

Ответить

  Ответы Всего ответов: 8  

Номер ответа: 1
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #1
Добавлено: 10.09.04 17:49
Может это Павел с ботами балуется? :)

Ответить

Номер ответа: 2
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #2 Добавлено: 10.09.04 18:24
Я извращался таким образом: делал textbox с visible=False, загонял в него строку, а в качестве параметра передавал вызываемой программе textbox.hWnd. В вызываемой программе считывал textbox.hWnd из командной строки и по этому значению через GetWindowText получал саму строку.

Но это если вызываемая программа написана тобой.

Ответить

Номер ответа: 3
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #3
Добавлено: 10.09.04 18:38
Я ему в прошлый раз похлеще пример давал. Передаёшь в вызваемый модуль адрес переменной и её длину, а в нём через ReadProcessMemory читаешь строку. :)

Ответить

Номер ответа: 4
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #4 Добавлено: 10.09.04 21:42
Текстбокс может ещё и обратно какие-либо сообщения принимать, если надо.

Ответить

Номер ответа: 5
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #5
Добавлено: 10.09.04 23:05
cresta,
 Ну как, разобрался с vTable? Может и мне подскажешь?
http://bbs.vbstreets.ru/viewtopic.php?t=9606

Ответить

Номер ответа: 6
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #6 Добавлено: 11.09.04 00:46
Нет, уперся в тип variant, как с ним в asm'е работать - не знаю, пока отложил.

Я никак не пойму, что ты хочешь с этим классом делать? Обращаться к методам формы через QueryInterface? Ну из VB обращаться asm вставке понятно, а наоборот для чего? Или чтоб запутано было :) В целях конспирации :) Типа зашел во вставку, из неё втихаря вызвал другую и потом вернулся?

"А Form это IUnknown или IDipatch?" - по идее чтобы получить указатель на IUnknown для формы через QueryInterface, нужно передать CLSID com-объекта, к которому она принадлежит, и QueryInterface вернёт указатель ptrIUnknown. Первый дворд по этому адресу - есть адрес vTable, в которой содержатся указатели на все интерфейсы данного класса.
mov eax,ptrIUnknown
mov eax,[eax]-в eax адрес таблицы интерфейсов
Далее по первому дворду этой таблицы - адрес процедуры для получения первого интерфейса (может быть несколько интерфейсов в одном сом-объекте)
mov eax,[eax] - теперь здесь адрес процедуры, которая вернёт тебе указатель на конкретный интерфейс.
теперь:
push offset ptrInterface - сюда процедура положит retval
push offset IID_Interface - ID запрашиваемого интерфейса
push ptrIUnknown
Call eax - по адресу из vTable объекта
если процедура заполнит ptrInterface нулём - ты пролетел, если нет, там будет указатель на конкретный запрошеный тобой интерфейс. Первый дворд по адресу, содержащемуся в ptrInterface - это адрес vTable данного интефейса.
Опять делаем
mov eax,ptrInterface
mov eax,[eax] - адрес таблицы интерфейса

А вот дальше - 2 варианта: либо мы имеем в eax адрес первого метода интерфейса, либо нужно еще от значения в eax пропустить 3 дворда(для QueryInterface, AddRef и Release) и четвёртый дворд - адрес первого метода. Я больше склоняюсь к тому, что 2 вариант. В общем я на этом месте опух. :((( Передаю тебе эстафету, пусть теперь CyRax опухнет :)

В общем посмотрел я на это дело, и сильно зауважал msvbvm. От таких извращений избавляет.

Целый час писал пост :(((

Ответить

Номер ответа: 7
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #7 Добавлено: 11.09.04 00:50
Да и ещё, забыл:
"А Form это IUnknown или IDipatch?" - может ошибаюсь, но кажется IUnknown - это указатель на com-объект в целом, а IDipatch - это конкретный интерфейс, т.е. твоя форма

Ответить

Номер ответа: 8
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #8
Добавлено: 11.09.04 13:55
Есть часть информации о типе Variant
Длина его 16 байт.
2 байта типа + 6 неиспользуемых байт + 4 байта указателя
О последних 4 байтах у меня информации нет.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам