plc.myforum.ro Forum Index plc.myforum.ro
PLCs users www.plc.myforum.ro!
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Create Windows Form Application without Visual Studio

 
Post new topic   Reply to topic    plc.myforum.ro Forum Index -> Programming
View previous topic :: View next topic  
Author Message
kosta
Member
Member


Joined: 09 Aug 2015
Posts: 161
Location: Salonic

PostPosted: 28/02/2017 21:20    Post subject: Lucrate Windows Form Application without Visual Studio Reply with quote

Făurite Windows Form Application without Visual Studio
Zdenek Jagrik,
You may find yourself in a situation that asks for a simple application, but there is no suitable software on the system and you aren't allowed to install it. Luckily, a .NET framework with its compiler is always there for you. All you need is Notepad, compiler and little know-how from this article.

An application compiled from command line is by default a command line app. To show a Form, you need to write a class and create an instance of if. By default, the command line window remains displayed. Although it may be useful for debugging purposes, for ordinary use, you'll likely want to hide it.

What's demonstrated in the template:
Definition of the Form's class and its call
Enabling or disabling of single instance feature
Hiding the command line window. By default, it remains show
Adding controls to the form and assigning their event procedures
A feature to help you with controls. You need to define the controls position and size numerically. This template helps you get the coordinates by clicking on the form of your running app.
Closing your application from the Form

Using the Code


Copy it to Notepad and save it as plain text (.txt extension).
Code:

Imports System.Drawing               
Imports System.Windows.Forms               
               
Namespace MyNamespace               
    Public Class MyFormClass           
    Inherits Form           
    private singleInstance as boolean = false           
    private hideCommandlineWindow as boolean = false               
               
' this will be used later for single instance mode               
    Private objMutex As System.Threading.Mutex           
               
' this will be used later to hide the command line window               
    Private Declare Auto Function GetConsoleWindow Lib "kernel32.dll" () As IntPtr           
    Private Declare Auto Function ShowWindow Lib "user32.dll" _
         (ByVal hWnd As IntPtr, ByVal nCmdShow As Integer) As Boolean           
    Private Const     SW_HIDE    as Integer =     0
    Private Const     SW_SHOW as Integer =     5   
    private hWndConsole As Integer           
               
    Private XPreviousClick, YPreviousClick as integer           

' declare variables for your controls               
    Private tmr1 As Timer           
    Private btn1, btn2 As Button           
    Private lbl1 as Label           
    Private txb1 as textbox           
               
    Public Sub New()           
' single instance mode
        if singleinstance then  'Prevent opening second instance if desired       
            objMutex = New System.Threading.Mutex(False, "Name of your program")   
            If objMutex.WaitOne(0, False) = False Then   
                objMutex.Close()
                objMutex = Nothing
                MessageBox.Show("Another instance is already running!")
                End
            End If   
        End if       

' hide the command line window               
        hWndConsole = GetConsoleWindow() 'get the handle of commandline window       
        if hideCommandlineWindow then         
            If hWndConsole <> IntPtr.Zero Then ShowWindow(hWndConsole, SW_HIDE)   
        End If       
               
        DisplayTheForm()       
    End Sub           
               
Private Sub DisplayTheForm()               
    Me.Name = "Windows Form" '           
    Me.Text = "Here's your windows header text."           
    Me.Size = New Size(706, 250)           
    Me.StartPosition = FormStartPosition.CenterScreen           
               
'create your controls and define their Event handlers             
    'timer
    tmr1 = new timer()           
    AddHandler tmr1.Tick, AddressOf Tmr1Tick           
           
    'buttons     
    btn1 = New Button()           
    btn1.Name = "button"           
    btn1.Text = "Hide"           
    btn1.Location = New Point(10, 5)           
    btn1.Size = New Size(80, 35)           
    Me.Controls.Add(btn1)           
    AddHandler btn1.Click, AddressOf btn1Click       

    btn2 = New Button()           
    btn2.Name = "button"           
    btn2.Text = "Start timer1"           
    btn2.Location = New Point(300, 5)           
    btn2.Size = New Size(80, 35)           
    me.controls.add(btn2)           
    AddHandler btn2.Click, AddressOf btn2Click         
               
    lbl1  = new Label()           
    lbl1.text = "Left-click on left top corner of intended control to see its coordinates" & vbcrlf & "Right-click on right bottom corner of intended control to see it's size."           
    lbl1.Location = New Point(11, 45)           
    lbl1.Size = New Size(370, 37)           
    me.controls.add(lbl1 )           
  txb1  = New textbox()           
    txb1.text = " "           
    txb1.Location = New Point(95, 6)           
    txb1.Size = New Size(200, 25)           
    me.controls.add(txb1)           
               
    'an example of froms event handler           
    Addhandler me.mousedown ,Addressof MeMousedown           
End Sub               

' the actual event handler subroutines

'close the application when the form closes       
Private Sub FormcloseClick(source As Object, e As EventArgs)                 
    '  to close your application when the form closes           
    application.exit()           
    end           
End Sub               
               
Private Sub Tmr1Tick(source As Object, e As EventArgs)               
    tmr1.stop()           
    MessageBox.Show("Timer 1 has elapsed !")           
End Sub               

' Toggle visibility of command line window usigh previously stored window handle     
Private Sub btn1Click(source As Object, e As EventArgs)               
    if btn1.text = "Hide" then             
        ShowWindow(hWndConsole, SW_HIDE)       
        btn1.text = "Show"       
    else           
        ShowWindow(hWndConsole, SW_SHOW)       
        btn1.text = "Hide"       
    end if           
End Sub               
               
Private Sub btn2Click(source As Object, e As EventArgs)               
    tmr1.interval = 5000  ' 5 seconds           
    tmr1.start()           
End Sub               
               
Private Sub MeMousedown(source As Object, e As MouseEventArgs)               
    If (e.Button = MouseButtons.Left) then           
        lbl1 .text = "New Point(" & convert.tostring(e.x) & "," &  convert.tostring(e.y) & ")"       
        XPreviousClick = e.x         
        YPreviousClick = e.y       
    end if           
    If (e.Button = MouseButtons.Right) then           
        lbl1 .text = "New Size(" & convert.tostring(e.x - XPreviousClick ) & "," & convert.tostring(e.y - YPreviousClick ) & ")"       
    end if           
    txb1.text = lbl1.text           
End Sub               
               
        Public Shared Sub Main(args As [String]())       
            'Create an instance of the form and show it   
            Application.Run(New MyFormClass())   
        End Sub       
               
    End Class           
End Namespace


Once the code is saved, you need to compile it. The hard way from command-line. To save the hassle, copy the code below to Notepad and save as text with .bat extension, e.g., compile.bat. The compilation becomes a matter of dragging and dropping your .txt file on the compile.bat file.
Code:

@rem remove the temp file should it remain in place from previous attempt
@del %1_temp.vb

@rem  the compiler requires .vb extension, so we'll have to copy our source to a temporary file
copy %1 %1_temp.vb /y

@rem prepare string without the .txt extension
set str=%1
set str=%str:.txt=%

@rem the actual build. check/update the path to your compiler according it's location on your system
@rem if you imported more namespaces in you source filem don't forget to add corresponding libraries
@rem
C:\Windows\Microsoft.NET\Framework\v2.0.50727\vbc.exe /platform:AnyCPU /r:Microsoft.VisualBasic.dll, system.management.dll,system.data.dll,mscorlib.dll,system.windows.forms.dll /target:exe %1_temp.vb /out:%str%.exe

@rem compiler will print out syntax errors it may have found in your code
@rem a pause is added to keep compiler messages on screen, useful for debugging

pause

@rem clean up the temporary file
del %1_temp.vb


Here you are, there's nothing to stop you from coding.
https://www.codeproject.com/Tips/1118211/Create-Windows-Form-Application-without-Visual-Stu
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    plc.myforum.ro Forum Index -> Programming All times are GMT + 2 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group
Fa-ti si tu propriul forum GRATUIT, pe www.myforum.ro