e ovako...
instalirao sam Visual Basic 2008 Express sa bug dvd-a 185 i želim napravit nekakav meni za nekoliko portabilnih programa. sad me zanima kako napravit da kad se klikne na određeni gumb da se pokrene određeni program.
Visual Basic 2008 Express pomoć
- poruka: 46
- |
- čitano: 13.058
- |
- moderatori:
Lazarus Long, XXX-Man, vincimus
Pretpostavke:
- koristiš C#
- radiš program za sebe pa ne smetaju "apsolutne putanje"
Kod:
private void button1_Click(object sender, EventArgs e)
{
Process p = new Process();
p.StartInfo.FileName = "D:\\Program Files\\Winamp\\winamp.exe";
p.Start();
}
Evo ovo sam na brzaka testirao kod sebe i radi...
(Ako si možda početnik s programiranjem prvo "dvoklik" na button kojem želiš dodijeliti program, pa upiši ovo)
Naravno, ovaj kod je "osnova", a s 'procesom' se može raditi svašta, tako da experimentiraj :)
E, sad ja nisam puno testirao (nemam baš vremena), ali neki programi rade samo sa imenom executablea, npr.
p.StartInfo.FileName = "winamp.exe";
ili
p.StartInfo.FileName = "GOM.exe"; // GOM player
dok neki ne rade, pa nisam istraživao zašto (nije bilo razmaka u imenu exe-a ako se netko pita)
Možda bi bilo zgodno napraviti i try-catch za potencijalne errore...
Dakle, ponavljam još jednom, ovo je za C#
Nadam se da sam pomogao
EDIT: trebaš i
using System.Diagnostics;
Za Basic nemam pojma... (prebaci se na C#.... )
Dodaj event-handler za taj gumb, u njega upiši sljedeće:
Dim proces As New Process()
proces.StartInfo.FileName = "program.exe"
proces.Start()
program.exe zamijeni sa pravim nazivom programa (i naravno putanjom do njega, npr. c:\program.exe)
Dodaj event-handler za taj gumb, u njega upiši sljedeće:
Dim proces As New Process()
proces.StartInfo.FileName = "program.exe"
proces.Start()
program.exe zamijeni sa pravim nazivom programa (i naravno putanjom do njega, npr. c:\program.exe)
znači ovo je dodatak za post iznad tog. isto C#?
trenutno nisam kod kuće, ali čim dođem isprobat ću. znači deinstal basic i instal c#
evo probao sam u basicu i recite mi što ne radim dobro
kad dodam neki gumb (Button1), 2 put kliknem na njega i otvori mi se ovo
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
End Sub
End Class
onda unesem onaj kod, upišem cpuz.exe, dodam putanju do njega i ispane mi ovako
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim proces As New Process()
proces.StartInfo.FileName = "cpuz.exe"
proces.Start(C:\CPU-Z)
End Sub
End Class
onda kliknem na Start Debugging i izbaci mi tri greške:
Error 1 ')' expected. Form1.vb 7 22 WindowsApplication1
Error 2 Name 'C' is not declared. Form1.vb 7 22 WindowsApplication1
Error 3 Syntax error. Form1.vb 7 24 WindowsApplication1
mislim da bi to išlo ovako
proces.StartInfo.FileName = "C:\CPU-Z\cpuz.exe"
proces.Start()
mislim da bi to išlo ovako
proces.StartInfo.FileName = "C:\CPU-Z\cpuz.exe"
proces.Start()
Build -> Bulid *project*
onda ideš Documents\Visual Studio 2008\Projects\*ime projekta*\bin\Release
i .exe fajl kopiras di oces
nema to build project. ima build windows application1, a kad kliknem na to ništa se ne dogodi. mapa projects je prazna
edit: trebalo je prvo save all, pa build windows application1
stavio sam *projekt* kad neznam koje ime imas za projekt.
imas u *project* properties, pod compile output path pa probaj stavit da kompajlira na desktop.
ma rješio sam problem. trebalo je prvo save all, pa onda build windows application
evo da vidite kako bi to izgledalo. to je samo primjer. još se treba dobro obradit. sad me zanima kako promjenit ikonu izvršne datoteke (slika)
i još nešto... to sam planirao stavit na usb. taj glavni .exe i ostale mape u kojima su programi koji mi trebaju. a ako stavim onu putanju koju sam stavljo (c:\...) onda ne radi nikako, radi samo ako je onaj program tamo, što je i logično jer sam tako i napravio. e sad, kako napravit da taj glavni exe (main menu) može pokretati ostale programe (preko button1 itd) tako da se orijentiraju preko mape u kojoj se nalazi taj glavni exe nalazi. jel kužite o čem govorim?
Za promjenu ikone imaš pod "properites" od projekta (Desni klik na projekt -> Properties -> Build (mislim nisam siguran) -> default icon)
Sad imaš apsolutnu putanju aplikacije, ako želiš relativnu putanju, možeš napraviti na dva način. Prvi (kompliciraniji) način je da svaki puta kad pokreneš aplikaciju pretražiš neke direktorije ili putanje koje si zadao, pronađeš aplikaciju i onda uzmeš njezinu putanju. Drugi (jednostavniji) način je da imaš strukturu direktorija u tom istom folderu gdje ti je i "exe" datoteka i koju ne mijenjaš. Tada staviš samo pod putanju "\nekiFolder\imeprograma.exe"....
P.S. Znaš da ti je program kompiliran u .NET-u i da ga nitko neće moći pokrenuti tko nema instaliran .NET framework??? To te samo podsjećam jer si rekao da ćeš prebaciti program na stick...
1. ono za mjenjanje ikone funkcionira. sve ok. hvala
2. ono s putanjama do datoteka. izabrao sam onaj jednostavniji način i ne radi, a onaj drugi ne vrijedi pokušavat jer čim se kopira/premjesti glavna mapa, u kojoj je main menu i ostali programi onda više nisu one putanje koje su namještene, tako da mislim da to nema smisla
3. za net framework. ma nema veze, sve ok
dado, moze neki primjer za ove putanje. Nisam bas skuzio sve u novom vb-u.
u vb6 znam, App.Path & "\fajl.exe".
Znači ovako.
Program(exe verzija koja je kompilirana) se nalazi npr na
C:\App\
U tom folderu napraviš direktorij npr.
C:\App\Aplikacije\
i u njega smijestiš sve aplikacije koje želiš da ti se pokreću, tj. možeš exe datoteke ili direktorije sa tim programima
Znači onda kod ide ovako:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim putanja As String = "/Aplikacije/" 'Ime direktorija u kojem su aplikacije
Dim imeAplikacije As String = "procexp.exe" 'Ime aplikacije koju želiš pokrenuti klikom na taj button
Process.Start(putanja + imeAplikacije) 'Pokretanje aplikacije
End Sub
Sad ako npr. imaš foldere unutar foldera "Aplikacije" u kojem ti se nalaze neke aplikacije, onda još dodaš i folder u igru, npr ovako
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim putanja As String = "/Aplikacije/"
Dim imeAplikacije As String = "procexp.exe"
Dim poddirektorij As String = "poddirektorij/"
Process.Start(putanja + poddirektorij + imeAplikacije)
End Sub
To bi sad trebalo da radi.
Pozdrav
Hvala. Nisam znao da vb8 podržava relativne putanje. a sad znam.
A i ovo sa process mi je novo, do sad sam koristio ovo:
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Hvala. Nisam znao da vb8 podržava relativne putanje. a sad znam.
A i ovo sa process mi je novo, do sad sam koristio ovo:
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
napravio sam ono što sam trebao. hvala svima na pomoći
evo jedan dio koda
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim putanja As String = "/Apps/FirefoxPortable/"
Dim imeAplikacije As String = "FirefoxPortable.exe"
Process.Start(putanja + imeAplikacije)
End Sub
ovo obojano žuto piše doslovno tako a opet sve normalno funkcionira. zašto?
Kopirao sam taj kod, i sve je u "normalnim" bojama.
Kopirao sam taj kod, i sve je u "normalnim" bojama.
Pa što je tu čudno?
"putanja" i "imeAplikacije" su objekti tipa string. String klasa overloada operator + funkcijom za spajanje (nadovezivanje) 2 stringa. Funkcija (metoda) Process.Start u jednoj od svojih verzija prima objekt tipa string. Sve je legalno, i sintaktički ispravno.
a daaa. sad sam skužio. nisam prije opće gledo onaj kod. samo sam ga kopirao i namjestio putanju i ime aplikacije. sve ok. never mind
e da pitam. za rad ovog programčića potreban net framework. a koji točno!? jer postoje 1.1, 2.0, 3.0 i 3.5 SP1 koliko ja znam
Idi u project properties, i tamo pogledaj pod "targeting framework", ili nešto sličnog naziva. Ako se ne varam, po defaultu je u VB08 .NET 3.5
našao sam to. po defaultu je 3.5 i može se promjenit na 2.0 i 3.0. ja ću stavit na 2.0. jel to dobro?
Ja uvijek stavim na 2.0 jer ga najviše ljudi ima. Uostalom, ne koristim funkcionalnosti novih .NETova.
Hehe, nije to .NET.
Ne možeš nikako u potpunosti maknuti .NET jer je to platforma koja izvršava tvoj kod. To je kao da želiš pokrenuti Java program, a nemaš JVM.