Чужое окно

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 20.07.2004 (Вт) 15:49

codemaster, если прога умная и рекурсивная, она и из контейнера выковыряет :)
Lasciate ogni speranza, voi ch'entrate.

codemaster
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 604
Зарегистрирован: 13.02.2004 (Пт) 13:35

Сообщение codemaster » 20.07.2004 (Вт) 16:35

alibek писал(а):codemaster, если прога умная и рекурсивная, она и из контейнера выковыряет :)


Ну ну

Approximator
Постоялец
Постоялец
 
Сообщения: 572
Зарегистрирован: 26.06.2004 (Сб) 3:10

Сообщение Approximator » 21.07.2004 (Ср) 7:29

alibek писал(а):Approximator, таковые функции описаны не в SDK, а в DDK, которого у меня нет (а MSDN еще не имею), поэтому я могу и ошибаться, но думаю там используются такие типы и структуры данных, которые не получится использовать в VB.

Подозреваю, что так быть не может (я вообще себе слабо представляю чтобы такое было возможным, ведь любую "структуру" можно эмулировать... это ж, по сути память, или сложноустроенный указатель на неё, сравни Variant в VB). VB их, кстати, юзает, только не всегда прямо.
Кроме того, скорее всего эти функции должны вызываться на более низком уровне, нежели уровень прикладных программ.

Тоже не верю... точнее не понимаю, что такое вызов на низком уровне. Передать управление (Push Var1, Push Var2, ..., Call Address) не достаточно?

Ладно, я думал, что вы мне расскажете хотя бы, как достукиваться до конкретного адреса памяти чужого процесса... а вы, а вы :) ... :) а вы не хотите.
С уважением, Approximator.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 21.07.2004 (Ср) 9:20

codemaster, уф, ты меня даже напугал :) Вот, полез проверять.
Изображение

P.S. Что-то с Народа картинки не кажет... Ну тогда глянь сюда
Вторая стрелка - hWnd, на который указывает мышка, первая стрелка - информация об окне.

Approximator, приложения исполняются в RING 5 (прикладные приложения), драйвера в RING 0 (драйверы, система), у них разные возможности.
Lasciate ogni speranza, voi ch'entrate.

MOV
Постоялец
Постоялец
 
Сообщения: 414
Зарегистрирован: 13.03.2004 (Сб) 15:13
Откуда: Санкт-Петербург

Сообщение MOV » 21.07.2004 (Ср) 10:12

Я так и не понял проблема решилась или нет. Я как-то тоже столкнулся с такой проблемой - надо было пройти игрушку (простую типа компьютерщик, там надо типа взломать банк :D подбором кода при чем правильная комбинация заранее известна, надо только решить головоломку)
Так вот я решил сделать программульку, которая бы вставляла бы нужные цыфры в нужные места, а тут эти лэйблы :shock: и так как хендла нет решил, что это несовсем реально, тем более, если представить что лэйбл, по своей сути (когда компилируется) может ведь работать как принт (Me.Print "Хрен ты меня изменишь") :D и таким образом, вообще не представлять из себя объект.
Хотя у меня такой вопрос давно был, не помню, может WinSpy какой-нить и видит все-таки Label как объект, ну или как окно (кому как нравится).

Approximator
Постоялец
Постоялец
 
Сообщения: 572
Зарегистрирован: 26.06.2004 (Сб) 3:10

Сообщение Approximator » 24.07.2004 (Сб) 6:18

Вот, кое-что накопал по теме (в частности по своему вопросу)

Код: Выделить всё
Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long

Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Any, ByVal lpBuffer As Any, ByVal nSize As Long, ByVal lpNumberOfBytesWritten As Long) As Long


Цитата из описания:
Код: Выделить всё
The ReadProcessMemory function reads data from an area of memory in a specified process. The entire area to be read must be accessible, or the operation fails.

The WriteProcessMemory function writes data to an area of memory in a specified process. The entire area to be written to must be accessible, or the operation fails.


Дело за "малым" - добыть соответствующие права доступа. Реально?

P.S.
MOV писал(а):Я так и не понял проблема решилась или нет. Я как-то тоже столкнулся с такой проблемой - надо было пройти игрушку (простую типа компьютерщик, там надо типа взломать банк :D подбором кода при чем правильная комбинация заранее известна, надо только решить головоломку)
Так вот я решил сделать программульку, которая бы вставляла бы нужные цыфры в нужные места, а тут эти лэйблы :shock: и так как хендла нет решил, что это несовсем реально, тем более, если представить что лэйбл, по своей сути (когда компилируется) может ведь работать как принт (Me.Print "Хрен ты меня изменишь") :D и таким образом, вообще не представлять из себя объект.
Хотя у меня такой вопрос давно был, не помню, может WinSpy какой-нить и видит все-таки Label как объект, ну или как окно (кому как нравится).

Imo, нужно искать место, где в памяти процесса прописано значение строки... а оно обязательно где-нить прописано... как нашёл переписывай... чем читать/писать см. API-функции выше.
С уважением, Approximator.

Approximator
Постоялец
Постоялец
 
Сообщения: 572
Зарегистрирован: 26.06.2004 (Сб) 3:10

Сообщение Approximator » 25.07.2004 (Вс) 4:49

Кстати, если кому интересно, то получить "права на процесс" можно с помощью:

Код: Выделить всё
Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long

pHandle = OpenProcess(PROCESS_ALL_ACCESS, False, pId)


И ещё, насчёт того, чтобы осуществить дебаг чего-либо средствами VB можно воспользоваться:
Код: Выделить всё
Debugging
A debugger is an application that enables a developer to observe and correct programming errors. This overview describes the debugging support provided by the Win32 API.
Debugging Functions
The following functions are used with debugging.

 

ContinueDebugEvent 
DebugActiveProcess 
DebugBreak 
FatalExit 
FlushInstructionCache 
GetThreadContext 
GetThreadSelectorEntry 
IsDebuggerPresent   
OutputDebugString 
ReadProcessMemory 
ReadProcessMemoryVlm 
SetDebugErrorLevel 
SetThreadContext 
WaitForDebugEvent 
WriteProcessMemory   
WriteProcessMemoryVlm


Hooks
A hook is a point in the system message-handling mechanism where an application can install a subroutine to monitor the message traffic in the system and process certain types of messages before they reach the target window procedure.

This overview describes hooks and explains how to use them in a Win32-based application.

Hook Functions
The following functions are used with hooks.

 

CallMsgFilter 
CallNextHookEx 
CallWndProc 
CallWndRetProc 
CBTProc 
DebugProc 
ForegroundIdleProc 
GetMsgProc 
JournalPlaybackProc 
JournalRecordProc 
KeyboardProc 
LowLevelKeyboardProc 
LowLevelMouseProc 
MessageProc 
MouseProc 
SetWindowsHookEx 
ShellProc 
SysMsgProc 
UnhookWindowsHookEx   



С уважением, Approximator.

BP
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 17.02.2004 (Вт) 5:34
Откуда: Украина

Сообщение BP » 29.07.2004 (Чт) 11:13

>приложения исполняются в RING 5
Приложения выполняются в Ring 3. А RING 5 IMHO вообще не бывает.

Шурик
Самогонщик
Самогонщик
Аватара пользователя
 
Сообщения: 1657
Зарегистрирован: 30.06.2003 (Пн) 13:27
Откуда: из запоя :))))) Матных сообщений: 972

Сообщение Шурик » 29.07.2004 (Чт) 11:28

2Codemaster:
Сначала про контейнеры вобще ничего небыло написано, брали все начисто.... так что она показывает то, что хотели.... :)

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 29.07.2004 (Чт) 12:18

BP писал(а):Приложения выполняются в Ring 3. А RING 5 IMHO вообще не бывает.

Ну... может быть. Точно не помню.
Lasciate ogni speranza, voi ch'entrate.

BP
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 17.02.2004 (Вт) 5:34
Откуда: Украина

Сообщение BP » 29.07.2004 (Чт) 20:54

Процессоры Intel имеют 4 уровня привелегий, но Микрософт использует только два: 0 и 3.
Вроде для совместимости с какой то там платформой. Какой не помню.

Approximator
Постоялец
Постоялец
 
Сообщения: 572
Зарегистрирован: 26.06.2004 (Сб) 3:10

Сообщение Approximator » 30.07.2004 (Пт) 7:54

BP писал(а):Процессоры Intel имеют 4 уровня привелегий, но Микрософт использует только два: 0 и 3.
Вроде для совместимости с какой то там платформой. Какой не помню.

Это связано с типом адресации во Flat-памяти. Дело в том, что есть такая штука, как Fix Up's Table, эта ифа используется для размещения проги, если в её адресном пространстве она не ложится ровно... вот здесь и работают "привилегии"...
С уважением, Approximator.

BP
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 17.02.2004 (Вт) 5:34
Откуда: Украина

Сообщение BP » 30.07.2004 (Пт) 15:02

Approximator писал(а):Это связано с типом адресации во Flat-памяти. Дело в том, что есть такая штука, как Fix Up's Table, эта ифа используется для размещения проги, если в её адресном пространстве она не ложится ровно... вот здесь и работают "привилегии"...


Я думаю это можно проделать и с четырмя уровнями привилегий. Главное чтобы процессор был в защищённом режиме.
А про совместимость я читал что Микрософт хотела сделать свои ОС совместимыми с процессорами, поддерживающими только 2 уровня привилегий.
Вот именно названия этих процессоров я и не помню.

BP
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 17.02.2004 (Вт) 5:34
Откуда: Украина

Сообщение BP » 02.08.2004 (Пн) 16:38

Вот что у Зубкова по этому поводу:
Защита может действовать как на уровне сегментов, так и на уровне страниц, ограничивая доступ в зависимости от уровня привилегий (4 уровня привилегий для сегментов и два для страниц).

Надеюсь я правильно понял.
Если используется не сегментная, а плоская модель памяти, то сегментыные привилегии не работают. Остаются только страничные.

Approximator
Постоялец
Постоялец
 
Сообщения: 572
Зарегистрирован: 26.06.2004 (Сб) 3:10

Сообщение Approximator » 06.08.2004 (Пт) 3:07

BP писал(а):Вот что у Зубкова по этому поводу:
Защита может действовать как на уровне сегментов, так и на уровне страниц, ограничивая доступ в зависимости от уровня привилегий (4 уровня привилегий для сегментов и два для страниц).

Надеюсь я правильно понял.
Если используется не сегментная, а плоская модель памяти, то сегментыные привилегии не работают. Остаются только страничные.

Ну, :) это разве защита :) Дело в том, что всякая "прога" (или сегмент оной) сначала откуда-нибудь загружается в память и вот ведь в чём вся штука :) прямо перед кодом сегмента идёт его заголовок, где прописываются флаги доступа разрешающие/запрещающие чтение/изменение в адресное пространство, как кода сегмента, так и его данных... :) при желании в Wind'е получить "доступ" к любой проге и любому сегменту её кода (и, разумеется, её данным) - нет никаких проблем.
С уважением, Approximator.

BP
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 17.02.2004 (Вт) 5:34
Откуда: Украина

Сообщение BP » 06.08.2004 (Пт) 23:48

А разве то что сказал работает в Windows, использующей плоскую модель памяти?

===
Зубков.
---
Для обычных задач программирования нам не потребуется все многообразие возможностей адресации. Все, что нам нужно, — это удобный неограниченный доступ к памяти. Поэтому мы будем рассматривать простую модель памяти — так называемую модель flat, в которой базы всех регистров установлены в ноль, а лимиты — в 4 Гб. Именно в такой ситуации окажется, что можно забыть о сегментации и пользоваться только 32-битными смещениями.

Для создания flat-памяти нам потребуются два дескриптора с нулевой базой и максимальным лимитом — один для кода и один для данных.
===

Approximator
Постоялец
Постоялец
 
Сообщения: 572
Зарегистрирован: 26.06.2004 (Сб) 3:10

Сообщение Approximator » 07.08.2004 (Сб) 1:49

BP писал(а):А разве то что сказал работает в Windows, использующей плоскую модель памяти?

===
Зубков.
---
Для обычных задач программирования нам не потребуется все многообразие возможностей адресации. Все, что нам нужно, — это удобный неограниченный доступ к памяти. Поэтому мы будем рассматривать простую модель памяти — так называемую модель flat, в которой базы всех регистров установлены в ноль, а лимиты — в 4 Гб. Именно в такой ситуации окажется, что можно забыть о сегментации и пользоваться только 32-битными смещениями.

Для создания flat-памяти нам потребуются два дескриптора с нулевой базой и максимальным лимитом — один для кода и один для данных.
===

А это здесь причём? :) Всё равно в "плоском" адресном пространстве программы есть определённый порядок и именно он называется сегментацией (по крайней мере, на сегодняшний момент это так). Все процедуры программы делятся на сегменты (собственно, "архитектура" Wind'ы требует сегментации вне зависимости от способов адресации) и доступ к этим областям памяти (где находятся сегменты кода и данных) регулируется (как правило, сегменты кода не изменяемы для любого процесса). В реальности же флаги доступа к каждому сегменту (вне зависимости код ли это или же данные...) содержатся в mem-maped-образе - или по просту - исполняемом файле (.exe, .dll, etc). Так что для того получить доступ к любому сегменту любой программы всё же треба выставить эти флаги в режим разрешения чтения/записи... и усё. И непричём здесь адресация...
С уважением, Approximator.

BP
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 17.02.2004 (Вт) 5:34
Откуда: Украина

Сообщение BP » 07.08.2004 (Сб) 3:44

WASM.RU > СТАТЬИ > Секреты Win32
Приложение Windows «голыми руками»
===
Образ программы составлен из одного или нескольких объектов или секций, которые иногда называют по старинке сегментами. Однако они не имеют ничего общего со старой сегментной моделью, также, впрочем, как и с объектами в том значении, как они используются в языках программирования. Поэтому для обозначения разделов образа программы PE-файла лучше использовать термин «секции».

Разделение на секции нацелено главным образом на оптимизацию управления памятью Windows. По этой причине размеры загруженных в оперативную память секций должны быть кратны размеру страницы памяти (обычно 4 Кб) и выровнены по ее границе. Записанные в файл секции должны быть выровнены по границе «файловых страниц», размер которых кратен размеру сектора (512 байт) - это также сделано для оптимизации загрузки.

Approximator
Постоялец
Постоялец
 
Сообщения: 572
Зарегистрирован: 26.06.2004 (Сб) 3:10

Сообщение Approximator » 07.08.2004 (Сб) 5:15

BP писал(а):WASM.RU > СТАТЬИ > Секреты Win32
Приложение Windows «голыми руками»
===
Образ программы составлен из одного или нескольких объектов или секций, которые иногда называют по старинке сегментами. Однако они не имеют ничего общего со старой сегментной моделью, также, впрочем, как и с объектами в том значении, как они используются в языках программирования. Поэтому для обозначения разделов образа программы PE-файла лучше использовать термин «секции».

Разделение на секции нацелено главным образом на оптимизацию управления памятью Windows. По этой причине размеры загруженных в оперативную память секций должны быть кратны размеру страницы памяти (обычно 4 Кб) и выровнены по ее границе. Записанные в файл секции должны быть выровнены по границе «файловых страниц», размер которых кратен размеру сектора (512 байт) - это также сделано для оптимизации загрузки.

Это чем-то отличается от написанного выше? Вопрос ведь в доступе к данным сегмента (реально ровно никакого отличия сих сегментов от сегментов :), "которые были ранее", кроме соотнесения с пресловутой "архитектурой" (модульной организацией) Wind'ы, если не я не прав обоснуй - опиши конкретные отличия :)). Чем и как обеспечивается сохранность данных (кода) в сегменте, когда kernel выделяет память (уже в адресном пространстве программы) под сегмент? Где это прописывается? Как это "вылечить"? Есть разночтения с тем, что я сказал ранее? А так, мне спор о словах слабо интересен :)
С уважением, Approximator.

Approximator
Постоялец
Постоялец
 
Сообщения: 572
Зарегистрирован: 26.06.2004 (Сб) 3:10

Сообщение Approximator » 07.08.2004 (Сб) 5:29

BP писал(а):WASM.RU > СТАТЬИ > Секреты Win32
Приложение Windows «голыми руками»

Кста, по поводу такой ссылки уже высказывался вот здесь:
http://bbs.vbstreets.ru/viewtopic.php?t=8914

Ребята льют воду, на в обмем-то простые вещи... это в народе называется - кидать понты... типа, "человек, умеющий программить на ASM'е (тем паче в маш.кодах) это круто". Никто не спорит - это замечательно - только ничего экстраординарного в этом нет. Сейчас, после плотного изучения формата PE я вообще просто влинковываю в "обычные" VB-прогаммы/библиотеки компактные вставки в маш.кодах. С одной стороны, нет головной боли заботиться о прочих сторонах организации всего кода (он и так хорошо выстроен компилятором); с другой стороны, любую критическую ситуацию (а у меня много сложных математических рассчётов) можно решить с помощью компактных вставок. И скажу, что подобная организация, на мой взгляд, рациональнее. ЯВУ должны быть везде где нет необходимости в какой-то экстраординарной оптимизации... говорил здесь уже не раз, что проще и разумнее оптимизировать "VB-код" (даже компиллированный), чем клепать на ASM'е "приложения" длинной за килобайт... так, что менее впечатлительно и более критично надо относиться к тому, что говорят "профи" от ASM'а. Как там у классика было про мат.часть? :)
С уважением, Approximator.

BP
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 17.02.2004 (Вт) 5:34
Откуда: Украина

Сообщение BP » 07.08.2004 (Сб) 11:49

Т.е. ты хочешь сказать что в плоской модели адресация всё равно сегментирована по 64 кБ?

А что такое тогда это?
... для начала выполним переключение в 32-битную модель памяти flat, где все сегменты имеют базу 0 и лимит 4 Гб.

От WASM.RU я и сам не восторге. Когда я пытлся сделать поддержку строк для своего ассемблера(http://basicproduction.nm.ru/ASM/LASM), я задал там вопрос "как VB создаёт строки?".
На что небезызвестный ламер vAlOdYa ответил что VB - это ересь и языком программирования не считается. Но нельзя судить всех посетителей этого сайта по тупости админов. Неужели ты считаешь что знаешь ассемблер лучше всех посетителей WASM.RU и тебе абсолютно нечему у них поучится?

>человек, умеющий программить на ASM'е (тем паче в маш.кодах)
- Он вовсе не в машинных кодах программу делает, а в программе DEBUG. Я её знаю не очень хорошо, но то что там ассемблер есть - это точно.

>ЯВУ должны быть везде где нет необходимости в какой-то экстраординарной оптимизации... говорил здесь уже не раз, что проще и разумнее оптимизировать "VB-код" (даже компиллированный), чем клепать на ASM'е "приложения" длинной за килобайт
- Одно дело когда нормальный ЯВУ, а когда он так далёк от программирования, что больше напоминает скриптовый язык, то эту простоту уже и программированием назвать сложно.
Согласись, VB сложно назвать профессиональным языком программирования и проявить творчество на нём крайне тяжело. Писать программы можно только по шаблону. Шаг влево, шаг вправо - крах или использование других языков. API - основа программирования под Window's, играют в нём побочную роль и не документированы вовсе.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 07.08.2004 (Сб) 12:50

:?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 07.08.2004 (Сб) 13:37

BP писал(а): Согласись, VB сложно назвать профессиональным языком программирования и проявить творчество на нём крайне тяжело. Писать программы можно только по шаблону. Шаг влево, шаг вправо - крах или использование других языков. API - основа программирования под Window's, играют в нём побочную роль и не документированы вовсе.

Не соглашусь. Творчество на нём проявить тяжело тем, кто его плохо знает. Писать программы можно как угодно, никто тебя ни в какие рамки не загоняет. API прекрасно документирован в MSDN, проблем с его использованием нет никаких. COM - основа программирования в VB, играющий в нём основную роль, позволяет тебе не задумываться о многих деталях, которые портят жизнь в других языках. Вроде memory management-а, контроля за lifetime объектов, работы со строками и т.п.

VB - замечательный язык. Но самое замечательное в нём то, что никто никого писать на нём не принуждает. Не нравится - пиши на чём хочешь.

Критика VB, как и Винды, давно уже стала общим местом. Никто не задумывается, прежде чем их критиковать. "Ну, типа, там багов много, глюки и всё такое... И ваще всё это для ламеров, а нормальные пацаны юзают [название продукта]". Грустно это.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 07.08.2004 (Сб) 15:11

:!: :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

BP
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 17.02.2004 (Вт) 5:34
Откуда: Украина

Сообщение BP » 07.08.2004 (Сб) 16:20

>Не соглашусь. Творчество на нём проявить тяжело тем, кто его плохо знает. Писать программы можно как угодно, никто тебя ни в какие рамки не загоняет. API прекрасно документирован в MSDN, проблем с его использованием нет никаких. COM - основа программирования в VB, играющий в нём основную роль, позволяет тебе не задумываться о многих деталях, которые портят жизнь в других языках. Вроде memory management-а, контроля за lifetime объектов, работы со строками и т.п.

- API прекрасно документирован для Си++. Если весь язык построен на технологии COM, то это достоинство плавно перетекает в недостаток. А если сравнить эти "достоинства" с его недостатками? Такими как ложное направление стиля программирования, низкая скорость работы приложения и зависимость от виртуальной машины? Отсутсвие даже отдалённых представлений об устройстве процессора и памяти?

---

>VB - замечательный язык. Но самое замечательное в нём то, что никто никого писать на нём не принуждает. Не нравится - пиши на чём хочешь.

- У программиста на языке БЕЙСИК просто нет другого выбора. Или MS BASIC или ничего.

---

>Критика VB, как и Винды, давно уже стала общим местом. Никто не задумывается, прежде чем их критиковать. "Ну, типа, там багов много, глюки и всё такое... И ваще всё это для ламеров, а нормальные пацаны юзают [название продукта]". Грустно это.

- Такое ощущение что все твои доводы взяты с какого то общего шаблона. Неправда ли сильно смахивает на "Мышление в стиле Visual Basic"?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 07.08.2004 (Сб) 17:04

BP писал(а): - API прекрасно документирован для Си++. Если весь язык построен на технологии COM, то это достоинство плавно перетекает в недостаток. А если сравнить эти "достоинства" с его недостатками? Такими как ложное направление стиля программирования, низкая скорость работы приложения и зависимость от виртуальной машины? Отсутсвие даже отдалённых представлений об устройстве процессора и памяти?
- У программиста на языке БЕЙСИК просто нет другого выбора. Или MS BASIC или ничего.
- Такое ощущение что все твои доводы взяты с какого то общего шаблона. Неправда ли сильно смахивает на "Мышление в стиле Visual Basic"?

1. Никаких проблем с вызовом API из-под VB не было и нет.
2. "Виртуальной машиной" msvbvm называют только лишь по старой памяти. Начиная с VB5, производится полноценная компиляция, и msvbvm используется исключительно как рантайм-библиотека. Может, ты ещё kernel32 "виртуальной машиной для Win32-приложений" назовёшь?
3. "ложное направление стиля программирования" - это что? не понял смысл фразы.
4. "низкая скорость работы приложения" - в большинстве приложений скорости, достижимой на VB, достаточно. Однако интересно, что конкретно ты имел в виду.
Ну и не надо перекладывать программирование с программиста на компилятор. Неэффективно написанная программа на любом языке будет тормозить.
5. "Отсутсвие даже отдалённых представлений об устройстве процессора и памяти" - у кого отсутствие представлений, у языка или у программиста? ;-)
Если язык скрывает от программиста неинтересные ему детали устройства компьютера, это только во благо. А что, Си не скрывает? Или призываешь всех на Ассемблер переходить?
6. У программиста на языке Бейсик есть возможность выучить другой язык. Я писал далеко не только на VB, и мне есть, с чем его сравнивать. А тебе?
Потом, кроме MS-компиляторов, есть ещё тыща от "третих фирм". И под DOS, и под Win32, и под всякие люниксы. Однако естественно, что VB - наиболее распространённый, совершенный, отлаженный и поддерживаемый из них всех.

Ещё раз. Если ты не знаешь или не любишь язык - не обвиняй в этом язык. Если тебе кажется, что для твоих задач VB тебе не подходит - флаг в руки, переходи на другой язык. А возгласы "вот, меня выучили Бейсику, как же мне теперь жить" тебе не помогут.

У каждого языка есть преимущества и недостатки. Флеймы "Asm vs C, C vs Pascal, C vs C++" стары как мир и никого ничему не убедят. Есть только один критерий выбора языка: нравится - используй. Если ты считаешь, что VB может нравиться только "ацтойным ламерам", не собираюсь тебя переубеждать.

BP
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 17.02.2004 (Вт) 5:34
Откуда: Украина

Сообщение BP » 07.08.2004 (Сб) 17:43

>1. Никаких проблем с вызовом API из-под VB не было и нет.
- Но для VB они не документированы.

>2. "Виртуальной машиной" msvbvm называют только лишь по старой памяти. Начиная с VB5, производится полноценная компиляция, и msvbvm используется исключительно как рантайм-библиотека. Может, ты ещё kernel32 "виртуальной машиной для Win32-приложений" назовёшь?
- MSVBVM - Microsoft Visual Basic Virtual Machine

>3. "ложное направление стиля программирования" - это что? не понял смысл фразы.
- Поэтому и не понял.

>4. Неэффективно написанная программа на любом языке будет тормозить.
- Опять шаблон. У тебя там справочника случайно специального нет. Отмазки для VB-ламеров.

>5. Если язык скрывает от программиста неинтересные ему детали устройства компьютера, это только во благо
- Ага, Микрософту. ;)

>6. У программиста на языке Бейсик есть возможность выучить другой язык. Я писал далеко не только на VB, и мне есть, с чем его сравнивать.
- Ну и с чем?
>Потом, кроме MS-компиляторов, есть ещё тыща от "третих фирм". И под DOS, и под Win32, и под всякие люниксы. Однако естественно, что VB - наиболее распространённый, совершенный, отлаженный и поддерживаемый из них всех.
- Во первых он просто насильно был насаждён. Совершенный он только для школьной программы. Отлаженный? А какой сервиспак у тебя стоит? А у других?

>Ещё раз. Если ты не знаешь или не любишь язык - не обвиняй в этом язык.
- Не считаю VB эталоном языка БЕЙСИК.

>У каждого языка есть преимущества и недостатки. Если ты считаешь, что VB может нравиться только "ацтойным ламерам", не собираюсь тебя переубеждать.
- Раньше БЕЙСИК изучали в ПТУ, а Паскаль в ВУЗ'ах. Сейчас VB изучают в школе. БЕЙСИК - Многоцелевой язык символических инструкций для начинающих. Так сказать введение в программирование. Считаю что начинать программистский путь нужно именно с него. А доказывать его крутость могут действительно только "ацтойне ламеры".

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 07.08.2004 (Сб) 18:16

BP писал(а):- Но для VB они не документированы.

Декларация - ApiViewer 2003. Описание работы - msdn.
BP писал(а):- MSVBVM - Microsoft Visual Basic Virtual Machine

Ага :)
BP писал(а):- Поэтому и не понял.

Я тоже не понял.
BP писал(а):- Опять шаблон. У тебя там справочника случайно специального нет. Отмазки для VB-ламеров.

Будет тормозить на любом языке, если написано хреново. Не будет тормозить на VB, если написано не хреново.
tyomich писал(а):Если язык скрывает от программиста неинтересные ему детали устройства компьютера, это только во благо

Если язык скрывает то, что программисту действительно неинтересно, то это хорошо. А если то, что интересно - то это ещё лучше, поскольку заставляет глубоко копать и напрягать извилины.
BP писал(а):- Ну и с чем?

На VB писал, на дельфи, на C++, на асме. Мне всё нравится, и всё юзаю для разных целей. А часто в связке, так вообще прекрасно.
BP писал(а):- Не считаю VB эталоном языка БЕЙСИК.

Того, самого первого? Я его уже не застал, так что вежливо промолчу :)
BP писал(а):- Раньше БЕЙСИК изучали в ПТУ, а Паскаль в ВУЗ'ах. Сейчас VB изучают в школе. БЕЙСИК - Многоцелевой язык символических инструкций для начинающих. Так сказать введение в программирование. Считаю что начинать программистский путь нужно именно с него. А доказывать его крутость могут действительно только "ацтойне ламеры".

Бейсик (не VB) до сих пор изучают в школах, и ещё долго будут изучать (ты видел материально-техническую базу, как то компы и методлитература, средней русской школы? Я видел.).
VB очень хорош для тех целей, для которых он предназначался (это я доказываю его крутость). Я его юзал и буду юзать, несмотря на то, что знаю и другие языки.

Контрольный вопрос: сам-то почему на VB кодишь? :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

BP
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 17.02.2004 (Вт) 5:34
Откуда: Украина

Сообщение BP » 07.08.2004 (Сб) 19:06

>Декларация - ApiViewer 2003. Описание работы - msdn.
- При чём тут декларации? А описание там для Си. Странно что ты не заметил.

>Будет тормозить на любом языке, если написано хреново. Не будет тормозить на VB, если написано не хреново.
- А ты возьми ради прикола пустой цикл погоняй. А потом вставь строчную операцию. И сравни скорость VB и другого языка.

>Если язык скрывает то, что программисту действительно неинтересно, то это хорошо. А если то, что интересно - то это ещё лучше, поскольку заставляет глубоко копать и напрягать извилины.
- Ну задолбали шаблонами. Ведь это же не аргумент. Зачем же через ж...

>На VB писал, на дельфи, на C++, на асме.
- Имелись ввиду различные компиляторы Бейсика от разных производителей.

>Бейсик (не VB) до сих пор изучают в школах, и ещё долго будут изучать
- Нет, в школах изучают как раз VB.

>ты видел материально-техническую базу, как то компы и методлитература, средней русской школы?
- Нет. Всю жизнь прожил на Украине.

>Контрольный вопрос: сам-то почему на VB кодишь?
- А потому что другого ничего не было под Винду. А PB только недавно появился. И то случайно. Кто то у себя в локалке нашёл и в сеть выкинул. Так он и распространился по инету :) Неплохой кстати язык. Вот только с VB не очень дружит (со строками).

xenomorph
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 508
Зарегистрирован: 18.04.2004 (Вс) 11:41
Откуда: это не важно - на сегодня у меня есть алиби ...

Упс ... начали за здравие ... а кончили то как 8(

Сообщение xenomorph » 07.08.2004 (Сб) 19:20

Так как насчёт enable_debug_privileges + open process + read_mem ?...
Каждая жаба своё болото ... (дальше догадаетесь *) -
Так кто-то напишет просмотрщик РАМ на VB?
... Dpkjvfnm dc`xnj itdtkbnmcz, f tckb yt itdtkbnmcz hfcitdtkbnm b dpkjvfnm !!! ...

След.

Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, Yandex-бот и гости: 4

    TopList