PDA

View Full Version : حرفه ای: ساخت پروژه تحت داس در VB6 و نحوه کار با آن( DLL وکانورتر)



Mr.305
شنبه 12 بهمن 1392, 20:23 عصر
سلام
همیشه یکی از مشکلات وی بی 6 در مقایسه با این زبان های تازه ب دوران رسیده این بوده نمیتونستی پروژه تحت داس باهاش بنویسی , خب الان دیگه نه ! با این لینکی که امروز بهتون میدم میتونید تقریبا تمام توابع کنسول در net. رو در خدمت داشته باشید ولی تنها Dll کافی نیست من با این پست مبدل پروژه تحت داس رو هم براتون میزارم که میتونید باهاش پروژه هاتون رو کانورت کنید لازم بذکره هر دو تای این پروژه ها هم تحت وی بی 6 نوشته شده اند, طرز کارش هم بشکل زیره:
1-ی پروژه استاندارد EXE بسازید
2-تمام فرم ها رو حذف کنید
3- ی ماژول با یک Sub Main درست کنید
4-dll من رو از لیست Refrences به پروژه خودتون اظافه کنید
5-
Dim Consol as Console
set Console = new Console
5-بدون "اجرا کردن" کامپایلش کنید(چون اگه اجراش کنید وی بی هنگ میکنه)
6- با کانورتر کانورتش کنید
7-برید حالشو ببرید
اینم از لینک:
http://trainbit.com/files/8378069884/Cons.zip
اگر هم بچه های خوبی باشید شاید پست بعدی سورسش رو براتون بزارم خدا رو چ دیدی! ءMr.305ء

joker
شنبه 12 بهمن 1392, 20:45 عصر
احیانا منظورت از داس ، همون داس پرمپت خود ویندوز که نیست ؟ داس واقعی ؟؟

Mr.305
شنبه 12 بهمن 1392, 20:53 عصر
منظورم اینه که خودت میتونی باهاش ی CMD.exe بنوسی

Mr.305
شنبه 12 بهمن 1392, 20:56 عصر
ببخشید لحنم تند بود!
منظورم اینه که تاحالا دیدی ی برنامه تحت داس مثل ی کامپایلر؟دقیقا منظورم اینه که میشه باهاش ی همچین چیزی بنویسی

سید حمید حق پرست
شنبه 12 بهمن 1392, 21:24 عصر
سلام علیکم
اینم سورس :
قایل dll :
Private Const FOREGROUND_BLUE = &H1
Private Const FOREGROUND_GREEN = &H2
Private Const FOREGROUND_RED = &H4
Private Const BACKGROUND_BLUE = &H10
Private Const BACKGROUND_GREEN = &H20
Private Const BACKGROUND_RED = &H40
Private Const BACKGROUND_INTENSITY = &H80&
Private Const BACKGROUND_SEARCH = &H20&
Private Const FOREGROUND_INTENSITY = &H8&
Private Const FOREGROUND_SEARCH = (&H10&)
Private Const ENABLE_LINE_INPUT = &H2&
Private Const ENABLE_ECHO_INPUT = &H4&
Private Const ENABLE_MOUSE_INPUT = &H10&
Private Const ENABLE_PROCESSED_INPUT = &H1&
Private Const ENABLE_WINDOW_INPUT = &H8&
Private Const ENABLE_PROCESSED_OUTPUT = &H1&
Private Const ENABLE_WRAP_AT_EOL_OUTPUT = &H2&
Private Const STD_OUTPUT_HANDLE = -11&
Private Const STD_INPUT_HANDLE = -10&
Private Const STD_ERROR_HANDLE = -12&
Private Const INVALID_HANDLE_VALUE = -1&

Private Declare Function AllocConsole Lib "kernel32" () As Long
Private Declare Function FreeConsole Lib "kernel32" () As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function GetStdHandle Lib "kernel32" (ByVal nStdHandle As Long) As Long
Private Declare Function WriteConsole Lib "kernel32" Alias "WriteConsoleA" (ByVal hConsoleOutput As Long, lpBuffer As Any, ByVal nNumberOfCharsToWrite As Long, lpNumberOfCharsWritten As Long, lpReserved As Any) As Long
Private Declare Function ReadConsole Lib "kernel32" Alias "ReadConsoleA" (ByVal hConsoleInput As Long, ByVal lpBuffer As String, ByVal nNumberOfCharsToRead As Long, lpNumberOfCharsRead As Long, lpReserved As Any) As Long
Private Declare Function SetConsoleTextAttribute Lib "kernel32" (ByVal hConsoleOutput As Long, ByVal wAttributes As Long) As Long
Private Declare Function SetConsoleTitle Lib "kernel32" Alias "SetConsoleTitleA" (ByVal lpConsoleTitle As String) As Long
Private Loaded As Boolean
Private hConsoleOut As Long, hConsoleIn As Long, hConsoleErr As Long

Sub StartUp(cTitle As String)
'Create console
If Loaded Then
Shutdown
End If
If AllocConsole() Then
hConsoleOut = GetStdHandle(STD_OUTPUT_HANDLE)
If hConsoleOut = INVALID_HANDLE_VALUE Then MsgBox "Unable to get STDOUT"
hConsoleIn = GetStdHandle(STD_INPUT_HANDLE)
If hConsoleOut = INVALID_HANDLE_VALUE Then MsgBox "Unable to get STDIN"
Else
MsgBox "Couldn't allocate console"
End If
'Set the caption of the console window
SetConsoleTitle cTitle
'Set the background color of the text in the console
SetConsoleTextAttribute hConsoleOut, FOREGROUND_GREEN Or FOREGROUND_INTENSITY

Loaded = True
End Sub

Sub Shutdown()
'Delete console
CloseHandle hConsoleOut
CloseHandle hConsoleIn
FreeConsole
Loaded = False
End Sub

Sub ConsoleWriteLine(sInput As String)
ConsoleWrite sInput + vbCrLf
End Sub

Sub ConsoleWrite(sInput As String)
If Loaded = True Then
Dim cWritten As Long
WriteConsole hConsoleOut, ByVal sInput, Len(sInput), cWritten, ByVal 0&
End If
End Sub

Function ConsoleReadLine() As String
If Loaded = True Then
Dim ZeroPos As Long
'Create a buffer
ConsoleReadLine = String(10, 0)
'Read the input
ReadConsole hConsoleIn, ConsoleReadLine, Len(ConsoleReadLine), vbNull, vbNull
'Strip off trailing vbCrLf and Chr$(0)'s
ZeroPos = InStr(ConsoleReadLine, Chr$(0))
If ZeroPos > 0 Then ConsoleReadLine = Left$(ConsoleReadLine, ZeroPos - 3)
End If
End Function

Function IsLoaded() As Boolean
IsLoaded = Loaded
End Function

Sub SetTitle(NewTitle As String)
SetConsoleTitle NewTitle
End Sub
طرز استفاده :
Sub Main()
Dim obj As Object
Dim TMP As String
obj = CreateObject("Con.Console")
obj.StartUp "My Console"
obj.ConsoleWriteLine "Hello World"
obj.ConsoleWriteLine "Press Enter To Exit"
TMP = obj.ConsoleReadLine
obj.Shutdown
End Sub
یک نمونه هم بدون dll ضمیمه کردم
دوست عزیز شما هم پروژه دیگران رو به اسم خودتون نزارید!!!
منبع ها :

http://www.dreamincode.net/forums/topic/10002-writing-console-applications-in-vb-6/
http://www.vb-helper.com/howto_make_console_app.html
موفق باشید.

یا علی (ع)

Mr.305
شنبه 12 بهمن 1392, 21:55 عصر
داداش خسته نشی با این 2 تا تابع حالا توابع منو داشته باش:
ReadLineA
WriteLineA
DebugOutPutA
FlushA
MakeLongA
PressAnyKeyA
ReadStreamA
ResizeA
ShowCurseA
WaitForInput
BackColour
Break
BufferHeight
BufferWidth
CodePageI
CodePageO
ConsoleX
ConsoleY
CurHeight
CurVisible
ExitCodeA
ExitCodeA
ForeColour
FullScreenA
HeightA
TaskVisible
TitleA
Visible
WidthA
WindowStateA
IsCompiled
StandardError
StandardInput
StandardOutput
hWnd
LaunchType
ParentFileAdress
ParentProcess
IsPiped
ReDirect
Beep
Clear
EchoInput
WriteString
WriteTo
ReadPassword
CtrlEvent
EnumThreadWndProcA
ExportedA
FindConsoleA
FindHiddenWindowOnTopA
FlashWindowA
FuncPtrA
FlashWindowA
GetProcessFileNameA
GetProcessParentA
HandleRoutine
HandleRoutine
MapDeviceNameA
ReadChar

Mr.305
شنبه 12 بهمن 1392, 21:58 عصر
در مورد کانورتر هم توضیح بدم که نه به کامپایلر وی بی (c2.exe)وابسته است نه به لینکر وی بی(Link.exe)

Mr.305
شنبه 12 بهمن 1392, 22:12 عصر
دقت هم نکرده بودم سید ولی ک خیلی زشته ک ب دیگران انگ دزدی بزنی داداش منم خودم سیدم فدای جدمون خدا شاهده یک خط سورس هم دزدی نیست شما خودت اگه دانلودش کرده باشی میفهمی که تو هیج جای اینترنت همچین سورسی پیدا نمیشه من فقط خود کانورتر رو تو سیاره سورس کد آپلود کردم الان تو لیست برندگان ماهیانه قرار گرفتم نمیگم از این منابعی مثل منابع شما استفاده نکردم واقعا هم مفید بودن بودن ولی اگه دقت بفرمایید خودتون فرق دزدی و زحمت رو میفهمید.

یا حق

سید حمید حق پرست
شنبه 12 بهمن 1392, 22:45 عصر
دوست عزیز درست صحبت کنید!!
اینم یک مجموعه کامل!
منبع :

http://vb.mvps.org/samples/Console/

یا علی (ع)

Mr.305
شنبه 12 بهمن 1392, 23:04 عصر
دوست عزیز Karl R.Peterson تو این صفحه توضیح داده که شما حق ندارید به هیچ عنوان سورس کدش رو لینک کنید یا به اشتراک بزارید یا توزیع کنید ب هر عنوان بصورت غیر کامپایل شده در اختیار کسی قرار بدید و شما دوستان عزیز فقط باید از لینک صفحه خودش سورس کد رو دانلود کنید و فقط کسی میتونه لینک رو به اشتراک بزاره که اجازه نامه کتبی داشته باشه ولی ب صورت کامپایل شده آزاد هستید عنایت بفرمایید:
' You are free to use this code within your own applications, but you
' are expressly forbidden from selling or otherwise distributing this
' source code, non-compiled, without prior written consent.

سید حمید حق پرست
شنبه 12 بهمن 1392, 23:17 عصر
دوست عزیز Karl R.Peterson تو این صفحه توضیح داده که شما حق ندارید به هیچ عنوان سورس کدش رو لینک کنید یا به اشتراک بزارید یا توضیع کنید ب هر عنوان بصورت غیر کامپایل شده در اختیار کسی قرار بدید و شما دوستان عزیز فقط باید از لینک صفحه خودش سورس کد رو دانلود کنید و فقط کسی میتونه لینک رو به اشتراک بزاره که اجازه نامه کتبی داشته باشه ولی ب صورت کامپایل شده آزاد هستید عنایت بفرمایید:
' You are free to use this code within your own applications, but you
' are expressly forbidden from selling or otherwise distributing this
' source code, non-compiled, without prior written consent.
حالا شما هم بهانه بتراشید! من لینک سایتش هم برای همین گذاشتم عزیز پس بهانه نگیرید
خط اول گفته شما میتونید از این سورس در برنامه های خود استفاده کنید!
خط دوم هم میگه حق فروش سورس ندارید
...
حالا خوبه که خودم منبع رو گذاشتم شما میرید متنو کپی میکنید اینجا!!
شما از که ی قانون کپی رایت رعایت میکنید؟ در مورد ویندوز و دیگر برنامه هاتون هم مثل این سورس جدی هستید؟:متفکر:
موفق باشید.

یا علی (ع)

Mr.305
شنبه 12 بهمن 1392, 23:29 عصر
هر کی هر جا دوست داره دانلود کنه مگه من مجبورتون کردم dll منو دانلود کنید
تو رو خدا هر کی vb6 دوست داره بره این سایت زیر رای بده vb6 زیاد از عمرش نمونده ها فردا پس فرداست پشتیبانی مایکروسافت تموم بشه که بعد از اون کار ما هم تمومه ها!باید 12000 تا رای جمع بشه تا عمر ی زبان برنامه نویسی تمدید بشه الان 4000 تا هم جمع نشده
http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/3440221-bring-back-classic-visual-basic-an-improved-versi

joker
یک شنبه 13 بهمن 1392, 20:08 عصر
منظورم اینه که خودت میتونی باهاش ی CMD.exe بنوسی

برنامه های کنسولی که با vp - delphi - vc و غیره کامپایل میشن نهایتا برای اجرا نیاز دارند به "سیستم عامل ویندوز"

های قویی مانند C و Delphi هم برای خودش کابوسی است
کابوس ؟ دلفی خودش با ی کلیک امکان برنامه کنسول به شما میده :) کابوس چیه :)
شما هر گاه gui را حذف کنید و با توابع write - writeln و read readln کار کنید بهش میگن برنامه "کنسول"
کلا Exe های قابل اجرا تحت dos واقعی فرمتشون زمین تا آسمون با فرمت pe ویندوزی فرق میکنه .

Mr.305
یک شنبه 13 بهمن 1392, 20:35 عصر
1-خب ک چی مگه من گفتم بدون ویندوز اجراشون کنید دلیل نوشتن برنامه کنسول هم اینکه بعضی مواقع محیط های رویداد گرا جواب گوی کارشما نیست و باید از روال گرایی استفاده کنید2-مگه من گفتم فرمتشون فرق نمیکنه pe و داس زمین تا آسمون اند ویکی از دلایل داس نوشتن هم اینه که کسی نمیخواد برنامه اش به چیزی بغیر از API ویندوز بستگی داشته باشه
درمورد دلفی هم راست میگی ی کم زیاده روی کردم :)