Gå til innhold

Hvordan kompilere/konvertere et VBScript (.vbs) til .exe?


Anbefalte innlegg

Videoannonse
Annonse

Hmm,

 

Jeg lastet ned VisualBasic 2005 Express Edition nå dog.

 

Er det mulig å lage et lite EXE script her som gjør det samme som VBScriptet?

 

Basicly åpner det kun en folder fra en Adobe Flash standalone applikasjon.

 

 

Set Shell  = CreateObject("Shell.Application") 
Set fso = CreateObject("Scripting.FileSystemObject")
pptFolder = fso.getFolder(".").ParentFolder & "\DOCS"
'
' Flash executes this script, view_folder.exe,  in some kind of
' "network" mode. We fix this with checking for the
' network prefix.
'
prefixMatch = "\\?\"
prefix = Left(pptFolder, 4)
'
If prefix = prefixMatch Then
Shell.Open Right(pptFolder, Len(pptFolder)-4)
Else
Shell.Open pptFolder
End If

 

Hva med normal Visual Basic 2005? Jeg vet vi har en ubrukt lisens fra actionpack på jobb.

Lenke til kommentar

Nr 1: Visual Basic 2005 er ikke scripting, det er programmering.

 

Public Class Program
 Public Function Main(String() Arguments) As Integer
Dim folder As String = System.IO.Path.Combine(Environment.CurrentDirectory, "DOCS")
If folder.StartsWith("\\?\") Then
  Shell(folder.SubString(4))
Else
  Shell(folder)
End If
 End Function
End Class

 

Det er ingen grenser for hva du kan gjøre i VB 2005.

 

I VB 2005 Express er det bare IDE-en som er annerledes, det er ingen grenser i selve språket slik det var i ikke-pro versjonene av VB6 (DoEvents manglet blant annet i Student og Component Creator edition av VB6)

Endret av GeirGrusom
Lenke til kommentar

Må maskiner ha installert .NET 1/2/3 for å kjøre VB 2005 applikasjoner?

 

Jeg får heller ikke Shell kommandoen til å virke, får kun "File not found", selv om jeg skriver in "C:\" etc.

Endret av ven
Lenke til kommentar

Ok

.NET 1.0/1.1 kreves for å kjøre Visual Studio .NET programmer

.NET 1.1 kreves for å kjøre Visual Studio 2003.NET programmer

.NET 2.0 kreves for å kjøre Visual Studio 2005 programmer.

.NET 3.0/3.5 kreves for å kjøre Visual Studio 2008 programmer

 

Det kan være du må bruke Process.Start med ProcessStartInfo hvor UseShellExecute er satt til True

 

Module Program
Sub Main()
	Dim proc As New System.Diagnostics.Process()
	Dim start_info As New System.Diagnostics.ProcessStartInfo("C:\")
	start_info.UseShellExecute = True
	proc.StartInfo = start_info
	proc.Start()
End Sub
End Module

 

Dette fungerer.

Lenke til kommentar

Takk skal du ha,

 

Så jeg forstår det riktig at dette programmet/scriptet nå vil funke på eldre versjoner av Windows nå, slik som Win2k og Win98?

 

Jeg har fått til koden nå med denne koden:

 

Module Program
Sub Main()
	Dim folder As String = System.IO.Path.Combine(Environment.CurrentDirectory, "..\DOCS")
	If folder.StartsWith("\\?\") Then
		Shell("Explorer.exe " & folder.Substring(4), vbNormalFocus)
	Else
		Shell("Explorer.exe " & folder, vbNormalFocus)
	End If
	System.Windows.Forms.Application.Exit()
End Sub
End Module

Merk "..\DOCS" for parent folder.

 

 

For andre VB2005 newbies som tilfeldigvis skulle lese dette:

For å kjøre denne koden anonymt (ingen form) som VBScriptet opprinnelig, må man gå til Project -> [Prosjekt] Properties -> Application og skru av Enable application framework. Deretter i dropdownboksen over, Startup Object, må man sette verdien til Sub Main. Jeg satt også WindowsState til Minimized for sikkerhets skyld.

Lenke til kommentar

Programmet vil fungere på eldre OS så lenge .NET Framework er installert.

 

Application.Exit er også overflødig, programmet avslutter når funksjonen avslutter.

 

Hvis du bruker Process.Start istedet, så vil dette også fungere på de få som bytter ut shellet i windows (explorer.exe)

 

Du kan også bare slette formen din fra programmet, siden du ikke bruker den.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...