Vadim_n писал(а):Здравствуйте. Подскажите пожалуйста как скомпилировать ехе фаил из другова ехе на VB
Хакер писал(а):В EXE-файл нужно записывать не бредовый текст, а структуры, соответствующие PE-формату и содержимое секций, в частности, машинный код для целевой платформы.
Дерзай.
SLIM писал(а):А файлы с кодом нельзя скармливать линковщику, компилятору и т.д.?
Option Explicit
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Const SYNCHRONIZE = &H100000
Private Sub Command1_Click()
Dim sfile As String
Dim frmstr As String
sfile = "D:\myform.frm"
frmstr = "VERSION 5.00" & vbCrLf & _
"Begin VB.Form Form1" & vbCrLf & _
"Begin VB.TextBox Text1 End" & vbCrLf & _
"End" & vbCrLf & _
"Attribute VB_Name = ""Form1""" & vbCrLf & _
"Attribute VB_GlobalNameSpace = False" & vbCrLf & _
"Attribute VB_Creatable = False" & vbCrLf & _
"Attribute VB_PredeclaredId = True" & vbCrLf & _
"Attribute VB_Exposed = False" & vbCrLf & _
"Option Explicit"
' создать времянку
Open sfile For Binary As #1
Put 1, , frmstr
Close #1
Dim pid As Long, hProc As Long
pid = Shell("vb6.exe /make " & sfile & " /d const=1 D:\myform.exe") 'построение
hProc = OpenProcess(SYNCHRONIZE, False, pid)
WaitForSingleObject hProc, &HFFFF 'дождаться завершения построения
CloseHandle hProc
Kill "D:\myform.frm" 'удалить времянку
Shell "D:\myform.exe", vbNormalFocus ' запустить созданный exe
End Sub
Vadim_n писал(а):Тока как иконку сделать ему при компелировании незнаю может кто разберается подскажите плиз?
такие варианты не работают
'"Begin VB.Form1.Icon = ""D:\ico.ico""" & vbCrLf & _
'"Attribute VB_Form1.Icon = ""D:\ico.ico""" & vbCrLf & _
Diamock писал(а):КомпИляция.
КомпИляция.
Но если форма как таковая не нужна
'код создаваемой формы
frmstr = "VERSION 5.00" & vbCrLf & _
"Begin VB.Form Form1" & vbCrLf & _
"Begin VB.CommandButton Command1 End" & vbCrLf & _
"Begin VB.TextBox Text1 End" & vbCrLf & _
"End" & vbCrLf & _
"Attribute VB_Name = ""Form1""" & vbCrLf & _
"Attribute VB_GlobalNameSpace = False" & vbCrLf & _
"Attribute VB_Creatable = False" & vbCrLf & _
"Attribute VB_PredeclaredId = True" & vbCrLf & _
"Attribute VB_Exposed = False" & vbCrLf & _
"Option Explicit" & vbCrLf & _
"Dim F As Long" & vbCrLf & _
"Private Sub Form_Load()" & vbCrLf & _
"Command1.Left = ""840""" & vbCrLf & _
"Command1.Top = ""0""" & vbCrLf & _
"End Sub" & vbCrLf & _
"Private Sub Command1_Click()" & vbCrLf & _
"MsgBox ""работает exe""" & vbCrLf & _
"F = FreeFile" & vbCrLf & _
"Open ""D:\seve.txt"" For Output As #F" & vbCrLf & _
"Write #F, ""даже сохраняет""" & vbCrLf & _
"Close #F" & vbCrLf & _
"End Sub"
Кроме VBS можно еще и Autoit Script
Vadim_n писал(а):Я не обладаю особо высокими знаниями программирования, еле еле в готовых исходниках разбираюсь.А программку для работы нужно написать, облегчит она мне и коллегам работу, и время может появиться больше программированию уделить.
'код создаваемой формы
frmstr = "VERSION 5.00" & vbCrLf & _
"Begin VB.Form Form1" & vbCrLf & _
"Caption = ""Form1""" & vbCrLf & _
"ClientHeight = 6555" & vbCrLf & _
"ClientLeft = 60" & vbCrLf & _
"ClientTop = 450" & vbCrLf & _
"ClientWidth = 8250" & vbCrLf & _
"Icon = ""Form1.frx"":0000" & vbCrLf & _
"LinkTopic = ""Form1""" & vbCrLf & _
"ScaleHeight = 6555" & vbCrLf & _
"ScaleWidth = 8250" & vbCrLf & _
"Begin VB.CommandButton Command1 End" & vbCrLf & _
"Begin VB.TextBox Text1 End" & vbCrLf & _
"End" & vbCrLf & _
"Attribute VB_Name = ""Form1""" & vbCrLf & _
"Attribute VB_GlobalNameSpace = False" & vbCrLf & _
"Attribute VB_Creatable = False" & vbCrLf & _
"Attribute VB_PredeclaredId = True" & vbCrLf & _
"Attribute VB_Exposed = False" & vbCrLf & _
"Option Explicit" & vbCrLf & _
"Dim F As Long" & vbCrLf & _
"Private Sub Command1_Click()" & vbCrLf & _
"MsgBox ""работает exe""" & vbCrLf & _
"End Sub"
с которой придется таскать vb6.exe с окружением.
Кстати, иконку, как вариант, можно установить и в form_load
не будет запускаться из под IDE
Vadim_n писал(а):Не сталкивался ещё с таким, или просто не знаю что это такое.
pid = Shell("vb6.exe /make " & sfile & " /d const=1 D:\exe2.exe")
Vadim_n писал(а):Можно ли обойтись без установки или установить только ту часть которая нужна для компиляции?
Можно ли обойтись без установки или установить только ту часть которая нужна для компиляции?
Smitis-R писал(а):А если разобраться с компилятором c2.exe, компилировать и линковать вручную, можно, наверное, и IDE выкинуть...
Это интересно как так показательно?FaKk2 писал(а): Надо показательно выжигать калёным железом такую идиотию.
FaKk2 писал(а):Распостранять компилятор вместе с программой это феерический бред. Надо показательно выжигать калёным железом такую идиотию.
FaKk2 писал(а):Распостранять компилятор вместе с программой это феерический бред. Надо показательно выжигать калёным железом такую идиотию.
FireFenix писал(а):MS .NET
не, не слышал
Smitis-R писал(а):NIX системы пора объявить вне закона.
NIX системы пора объявить вне закона.
FaKk2 писал(а):FireFenix писал(а):MS .NET
не, не слышал
Лолшто? У вас на почве прееедания видимо конфуз случился. Я говорю распостранять компилятор с программой это идиотизм. Ещё раз: распостранять компилятор для того чтобы "скомпилировать ехе фаил из другова ехе на VB" это идиотизм.
FireFenix писал(а):MS распространяет .NET, в который входит компилятор. Следовательно весь софт .NET распространяется с компилятором.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14