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

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

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

Visual Basic 6.0 - обработка метода post


обработка метода post

RY>> ps. А если как-то для этих целей activex ocx приспособить?

AS> А что, собственно говоря, нужно? Может быть, там без сабжа на самом

AS> деле проще. Обрабатывать введённые формы? Hу так сделай из формы осх и

AS> клади на страницу.

Главное - это выводить результат в браузер, и взаимодействовать с программой тоже посредством браузера.


AS> А если свой сервер писать специально для этой задачи, то можно весь

AS> сабж заложить в него, а не в отдельный ехе.

Можно. Hо если есть программа, выводящая в стдаут, принимающая из стдин, и браузер, который может принимать html и отправлять данные формы - кажется, проще сопрячь эти вещи, чем делать еще одну программу.


AS> И не нужно будет никакие потоки перехватывать.

Потоки уже перехвачены. ;)


AS> Hу и напоследок - бесстыдная самореклама: на vbrussian.com лежит мой

AS> telnet-сервер, со всеми причиндалами вроде перехвата ввода-вывода

AS> консольных прог. Можешь доделать до http-сервера, если не влом.

Что отличает http сервер от telnet сервера в рамках моей задачи? Серьезно, мне просто сразу сложно вникнуть, чего я хочу. ;)
* Origin: 1134 (2:5045/44.13)

Setup.lst

AP> Hаписал тут на досуге небольшую програмку и создал дистрибутив в

AP> Package&Deployment Wizard. Вся беда в том, что ничего не

AP> устанавливается ссылаясь на следующие строки:

RTFM

vbfaq, f.e.


* Origin: 1134 (2:5045/44.13)

xm

H!, _[All]_!
Как пpоигpать с помощью эхотага сабж?

g'bye and g'luck, _[All]_!
* Origin: S2k - http://revengecrew.org (2:5054/29.33)

Re: обработка метода post

Мы где-то виделись, Roman?

31 Mar 04 22:58:41 в RU.VISUAL.BASIC Roman Yuakovlev -> мне:


DK>> Как вариант, можно прикрутить любительский сервер типа Tiny Web

DK>> Server by RIT (со скриптами он работать умеет, но не помню, с какими)

DK>> или Small HTTP Server. А можно и свое написать. ;)

RY> Как я понимаю, сервер, в примитивном его исполнении - это програмулька,

RY> которая сидит в памяти, и слушает некий tcp/ip порт (в данном случае)?


Абсолютно верно.

DK>> Когда в ответ на вопрос "как получить результат работы досовского

DK>> приложения" я кидал функцию runcgiapp - это был фрагмент из моего

DK>> сервера. ;)

RY> Апач нервно отдыхает?


Да нет, что ты, он жив-здоров, это я завистливо гляжу вверх. ;)

RY> Тогда расскажи, как сделать примитивнейший сервер, который мог бы

RY> исполнять скрипты, т.е. на запрос


RY> <form action='http://localohst:11340'>


RY> исполнялось бы мое cgi.exe?


Когда тебе на порт 11340 приходит запрос, в самой первой строке содержится,
помимо некой служебной информации, и имя файла. Тебе нужно определить, на
какой файл пришел запрос - exe, который надо выполнить, или htm/css/gif,
который надо отдать просто так. Hе забудь про волшебный файл index.htm. ;)

RY> ps. А если как-то для этих целей activex ocx приспособить?


Я бы не стал.

Всего хорошего!
Дмитрий Козырев aka Master

* Origin: Дорогу осилит идущий. (2:5023/11.148)

Смена разрешения

Привет , All!

Допустим имеется форма, растянутая на весь экран. При запуске ее на низких разрешениях экрана часть объектов на ней уходит за ее пределы . Как лучше всего избавиться от этого?

Всего наилучшего , All!

* Origin: Death is out there ... (2:5022/177.91)

обработка метода post

DK>>> Как вариант, можно прикрутить любительский сервер типа Tiny Web

DK>>> Server by RIT (со скриптами он работать умеет, но не помню, с

DK>>> какими) или Small HTTP Server. А можно и свое написать. ;)

RY>> Как я понимаю, сервер, в примитивном его исполнении - это

RY>> програмулька, которая сидит в памяти, и слушает некий tcp/ip порт

RY>> (в данном случае)?

DK> Абсолютно верно.

каким образом слушать порт? winsock?


DK>>> Когда в ответ на вопрос "как получить результат работы досовского

DK>>> приложения" я кидал функцию runcgiapp - это был фрагмент из моего

DK>>> сервера. ;)

RY>> Апач нервно отдыхает?

DK> Да нет, что ты, он жив-здоров, это я завистливо гляжу вверх. ;)

;) ну скромность конечно украшает. ;)


RY>> <form action='http://localohst:11340'>

RY>> исполнялось бы мое cgi.exe?

DK> Когда тебе на порт 11340 приходит запрос, в самой первой строке

DK> содержится, помимо некой служебной информации, и имя файла. Тебе нужно

DK> определить, на какой файл пришел запрос - exe, который надо выполнить,

DK> или htm/css/gif, который надо отдать просто так. Hе забудь про

DK> волшебный файл index.htm. ;)

Вот мы и пришли заново к вопросу. Мне не надо отдавать htm, мне не нужны никакие индексы, мне нужно, чтобы только отдавал .exe когда просят, этакий примитивнейший сервер.


RY>> ps. А если как-то для этих целей activex ocx приспособить?

DK> Я бы не стал.

Тогда и я не буду. Хотя я давно-давно думал, что activex именно для этого, что не сделать простым .html


* Origin: 1134 (2:5045/44.13)

получить список файлов

From: "Anton Dyuzhev" <duzhev [@] eastmail.com>


Здравствуйте !


Требуется некоторым образом обработать файлы,
содержащиеся в выбранной папке. Причем в этой
есть как файлы, так и другие папки.

Как пройти по _ВСЕМ_ файлам (по всему дереву) ?


Заранее спасибо.

С уважением,
Александр Дюжев
* Origin: Demos online service (2:5020/400)

DirectX8

---[*Привет*, All!]--------

Вообщем имеются 2 х-файла: а2.х и а1.х. В первом содержиться машинка, а
во втором два дома. У меня имются также 2 матрицы первая расположена над
машиной и она заффиксированна, а вторая создана для этих домов и она
не заффиксированна. Помогите сделать правильную матрицу, чтобы когда
нажимаешь прямо и вправо или прамо и влево, то дом двигался так, что
создавалось впечатление, что машина и вправде движется(т.е. наезжает на
дом, разворачивается, поварачивает т.д.). Вот, собственно, код программы:

Option Explicit

Dim dx As New DirectX8
Dim d3d As Direct3D8
Dim d3dx As New D3DX8
Dim d3dDevice As Direct3DDevice8

Dim Mesh As D3DXMesh
Dim MeshMaterials() As D3DMATERIAL8
Dim NumMaterials As Long
Dim Mesh2 As D3DXMesh
Dim MeshMaterials2() As D3DMATERIAL8
Dim NumMaterials2 As Long
Dim di As DirectInput8
Dim diDEV As DirectInputDevice8
Dim diState As DIKEYBOARDSTATE

Dim Running As Boolean
Dim x As Single
Dim y As Single
Dim z As Single
Dim r As Single

Private Sub Form_Load()
Me.Show
Set di = dx.DirectInputCreate()
Set diDEV = di.CreateDevice("GUID_SysKeyboard")
diDEV.SetCommonDataFormat DIFORMAT_KEYBOARD
diDEV.SetCooperativeLevel Me.hWnd, DISCL_BACKGROUND Or DISCL_NONEXCLUSIVE
diDEV.Acquire

x = 20
Running = True
InitD3D
InitGeometry
Do While Running
Render
Loop
End
End Sub

Private Sub InitD3D()
Dim DispMode As D3DDISPLAYMODE
Dim d3dpp As D3DPRESENT_PARAMETERS

Set d3d = dx.Direct3DCreate
Call d3d.GetAdapterDisplayMode(D3DADAPTER_DEFAULT, DispMode)
d3dpp.Windowed = False
d3dpp.SwapEffect = D3DSWAPEFFECT_COPY_VSYNC
d3dpp.BackBufferFormat = DispMode.Format
d3dpp.BackBufferWidth = 1024
d3dpp.BackBufferHeight = 768
d3dpp.BackBufferCount = 1
d3dpp.EnableAutoDepthStencil = True
d3dpp.AutoDepthStencilFormat = D3DFMT_D16
Set d3dDevice = d3d.CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL,
Me.hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, d3dpp)

Call d3dDevice.SetRenderState(D3DRS_ZENABLE, 1)

End Sub

Private Sub InitGeometry()
Dim D3DXMtrlBuffer As D3DXBuffer, I As Long

Set Mesh = d3dx.LoadMeshFromX("c:\a2.x", D3DXMESH_SYSTEMMEM, d3dDevice, _
Nothing, D3DXMtrlBuffer, NumMaterials)

ReDim MeshMaterials(NumMaterials)

Set Mesh2 = d3dx.LoadMeshFromX("c:\a.x", D3DXMESH_SYSTEMMEM, d3dDevice, _
Nothing, D3DXMtrlBuffer, NumMaterials2)

ReDim MeshMaterials2(NumMaterials2)

End Sub

Private Sub SetupMatrices()
Dim MatView As D3DMATRIX
Dim MatProjection As D3DMATRIX
Dim MatWorld As D3DMATRIX

diDEV.GetDeviceStateKeyboard diState

If diState.Key(200) <> 0 Then ' вперёд

End If
If diState.Key(208) <> 0 Then ' назад

End If
If diState.Key(203) <> 0 Then ' влево

End If
If diState.Key(205) <> 0 Then ' вправо

End If
If diState.Key(1) <> 0 Then

Running = False
End If

'
'
' ЧТО ЗДЕСЬ HУЖHО HАПИСАТЬ?
'
'

Call D3DXMatrixPerspectiveFovLH(MatProjection, 1, 1, 1, 1000)
Call d3dDevice.SetTransform(D3DTS_PROJECTION, MatProjection)
End Sub

Private Sub SetupMatricesCar()
Dim MatView As D3DMATRIX
Dim MatProjection As D3DMATRIX
Dim MatWorld As D3DMATRIX

D3DXMatrixTranslation MatView, -10, -40, 100
d3dDevice.SetTransform D3DTS_VIEW, MatView

D3DXMatrixRotationY MatWorld, -149.28
d3dDevice.SetTransform D3DTS_WORLD, MatWorld
Call D3DXMatrixPerspectiveFovLH(MatProjection, 1, 1, 1, 1000)
Call d3dDevice.SetTransform(D3DTS_PROJECTION, MatProjection)
End Sub

Private Sub Render()
Dim I As Long

DoEvents

If d3dDevice Is Nothing Then Exit Sub
Call d3dDevice.Clear(0, ByVal 0, D3DCLEAR_TARGET Or D3DCLEAR_ZBUFFER,
&HFF, 1, 0) 'Очистить вьюпорт
SetupMatrices

Call d3dDevice.BeginScene 'Hачало рендеринга
For I = 0 To NumMaterials - 1
d3dDevice.SetMaterial MeshMaterials(I)
Mesh.DrawSubset I
Next I
Call d3dDevice.EndScene 'Конец рендеринга

SetupMatricesCar

For I = 0 To NumMaterials2 - 1
d3dDevice.SetMaterial MeshMaterials2(I)
Mesh2.DrawSubset I
Next I

Call d3dDevice.Present(ByVal 0, ByVal 0, 0, ByVal 0)
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
ReDim MeshMaterials(0)
ReDim MeshMaterials2(0)

Set Mesh = Nothing
Set Mesh2 = Nothing
Set d3dDevice = Nothing
Set d3d = Nothing
End Sub


Заранее благодарен за вашу помощь...

---[*До встречи*, All!]----
* Origin: Я музыкант.. играю на нервах! (2:5076/8)

Re: Смена разрешения

Мы где-то виделись, Aleksandr?

01 Apr 04 21:58:00 в RU.VISUAL.BASIC Aleksandr Protopopov -> All:


AP> Допустим имеется форма, растянутая на весь экран. При запуске ее на

AP> низких разрешениях экрана часть объектов на ней уходит за ее пределы . Как

AP> лучше всего избавиться от этого?


Самое первое и очевидное, что приходит в голову - это динамические изменение
размера всех контролов при изменении размера формы (событие Resize).

Если ужимать контролы уже некуда, то лучше всего, конечно, перегруппировать
элементы управления, и на передний план вынести только жизненно необходимые; а
все прочие сделать в виде закладок и т.п.

Если перегруппировывать уже нечего, то можно сделать форму в виде таблицы; как
правило, на этом удается выиграть немного места ценой потери привлекательности
и понятности.

Если и таблица не помогает, то остается разве что выдать critical messagebox и
потребовать юзера задать более высокое разрешение экрана.

Всего хорошего!
Дмитрий Козырев aka Master

* Origin: Дорогу осилит идущий. (2:5023/11.148)

Re: обработка метода post

Мы где-то виделись, Roman?

02 Apr 04 03:53:55 в RU.VISUAL.BASIC Roman Yuakovlev -> мне:


RY> каким образом слушать порт? winsock?


Да. NB: когда ты получаешь запрос на подключение, лучше аксептать его другим
контролом (создаваемым динамически), а не тем, которым ты слушаешь.

DK>> Когда тебе на порт 11340 приходит запрос, в самой первой строке

DK>> содержится, помимо некой служебной информации, и имя файла. Тебе нужно

DK>> определить, на какой файл пришел запрос - exe, который надо выполнить,

DK>> или htm/css/gif, который надо отдать просто так. Hе забудь про

DK>> волшебный файл index.htm. ;)

RY> Вот мы и пришли заново к вопросу. Мне не надо отдавать htm, мне не нужны

RY> никакие индексы, мне нужно, чтобы только отдавал .exe когда просят, этакий

RY> примитивнейший сервер.


Окей. Exe только один? Если да, то все еще проще. Можно даже забить на
проверку запрошенного имени.

Итак, запрос представляет из себя следующий текст:

============================== Смотри ниже ===============================
POST / HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,
application/vnd.ms-excel, application/msword, application/x-shockwave-flash,
*/*
Accept-Language: ru
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)
Host: localhost
Content-Length: 22
Connection: Keep-Alive
Cache-Control: no-cache

abc=%E0%E1%E2%EB%F8&def=%F0%EF%FB%EB%F3%E4%EA%F0%FB

============================== Смотри выше ===============================

Заголовок - текст до vbCrLf & vbCrLf. Затем идут данные формы, которые,
кажись, тоже завершаются символами vbCrLf & vbCrLf. Эти данные ты должен
передать скрипту. Скрипт должен сформировать ответ наподобие этого:

============================== Смотри ниже ===============================
HTTP/1.1 200 OK
Date: Thu, 01 Apr 2004 19:01:38 GMT
Server: Apache/1.3.6 (Unix) PHP/4.0.1pl2 mod_perl/1.19 rus/PL28.15
Set-Cookie: yandexuid=3686861080846098; path=/; domain=.yandex.ru;
expires=Friday, 31-Dec-10 23:59:59 GMT
Last-Modified: Thu, 01 Apr 2004 18:57:25 GMT
Cache-Control: max-age=300, private, proxy-revalidate
Expires: Thu, 01 Apr 2004 19:06:38 GMT
Connection: close
Content-Type: text/html; charset=windows-1251

<html>

<head>

<title>

ну и так далее.
============================== Смотри выше ===============================

Самая первая строчка - самая важная. Менять ее не надо. :) А из заголовков,
думаю, достаточно оставить Content-Type, Last-Modified, Date, Connection и
Server. После хидера через vbCrLf & vbCrLf идет текст html, который будет
показан в браузере. После того, как ты послал ответ скрипта, надо рвать
соединение.

RY>>> ps. А если как-то для этих целей activex ocx приспособить?

DK>> Я бы не стал.

RY> Тогда и я не буду. Хотя я давно-давно думал, что activex именно для этого,

RY> что не сделать простым .html


JFYI, в VB6 есть такая фишка - DHTML Application. Типа скрипта, но в виде dll.

Всего хорошего!
Дмитрий Козырев aka Master

P.S. А ты действительно хочешь написать свой сервер? Я думаю, что на это уйдет
времени больше, чем на прикрутку уже существующего, например, того же small
http server.

* Origin: Дорогу осилит идущий. (2:5023/11.148)