Visual Basic 2008 Express pomoć

poruka: 46
|
čitano: 13.058
|
moderatori: Lazarus Long, XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
15 godina
offline
Izrada menija za portabilne programe
pitanje

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.

primjer primjer
''Samo su dvije stvari beskonačne, svemir i ljudska glupost. Za svemir nisam baš siguran.'' ~ Albert Einstein Danas je teško biti glup, konkurencija je prevelika.
Poruka je uređivana zadnji put uto 20.1.2009 23:49 (jurluk).
 
0 0 hvala 0
15 godina
neaktivan
offline
Visual Basic 2008 Express pomoć

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 Osmijeh

 

EDIT: trebaš i

using System.Diagnostics;

 

Za Basic nemam pojma... (prebaci se na C#.... Šutim)

Poruka je uređivana zadnji put sri 21.1.2009 1:43 (jocik).
 
0 0 hvala 0
16 godina
neaktivan
offline
Visual Basic 2008 Express pomoć

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)

 
0 0 hvala 0
15 godina
offline
RE: Visual Basic 2008 Express pomoć
autorov komentar
itf4n kaže...

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#

16 godina
neaktivan
offline
Visual Basic 2008 Express pomoć

Ne, ja sam ti dao VB kod, ekvivalentan po značenju onome što je jocik dao u C#u.

 
0 0 hvala 0
15 godina
offline
Visual Basic 2008 Express pomoć
autorov komentar

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

 
0 0 hvala 0
15 godina
neaktivan
offline
Visual Basic 2008 Express pomoć
prihvaćeno rješenje

mislim da bi to išlo ovako

 

 

        proces.StartInfo.FileName = "C:\CPU-Z\cpuz.exe"
        proces.Start()

Moj PC  
0 0 hvala 0
15 godina
offline
RE: Visual Basic 2008 Express pomoć
autorov komentar
nadimak888 kaže...

mislim da bi to išlo ovako

 

 

        proces.StartInfo.FileName = "C:\CPU-Z\cpuz.exe"
        proces.Start()

 e tako funkcionira. nema nikakvih grešaka. e sad kako od tog projekta napravit izvršnu datoteku (.exe). da kad ju pokrenem, kliknem na gumb i pokrene se cpu-z. nije to još gotovo, ali samo da isprobam. znao sa prije, ali nisam dugo koristio pa sam zaboravio
15 godina
neaktivan
offline
RE: Visual Basic 2008 Express pomoć

Build -> Bulid *project*

 

onda ideš Documents\Visual Studio 2008\Projects\*ime projekta*\bin\Release

 

i .exe fajl kopiras di oces

15 godina
offline
Visual Basic 2008 Express pomoć
autorov komentar

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

Poruka je uređivana zadnji put sri 21.1.2009 22:44 (jurluk).
 
0 0 hvala 0
15 godina
neaktivan
offline
RE: Visual Basic 2008 Express pomoć

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.

15 godina
offline
Visual Basic 2008 Express pomoć
autorov komentar

ma rješio sam problem. trebalo je prvo save all, pa onda build windows application

15 godina
offline
Visual Basic 2008 Express pomoć
autorov komentar

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?

primjer primjer
 
0 0 hvala 0
15 godina
offline
RE: Visual Basic 2008 Express pomoć

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...

"Genius might be the ability to say a profound thing in a simple way." Charles Bukowski
Poruka je uređivana zadnji put čet 22.1.2009 8:38 (dado2202).
15 godina
offline
RE: Visual Basic 2008 Express pomoć
autorov komentar

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

15 godina
neaktivan
offline
RE: Visual Basic 2008 Express pomoć

dado, moze neki primjer za ove putanje. Nisam bas skuzio sve u novom vb-u.

 

u vb6 znam, App.Path & "\fajl.exe".

15 godina
offline
Visual Basic 2008 Express pomoć

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

"Genius might be the ability to say a profound thing in a simple way." Charles Bukowski
Moj PC  
0 0 hvala 0
15 godina
neaktivan
offline
Visual Basic 2008 Express pomoć

Hvala.  Nisam znao da vb8 podržava relativne putanje. a sad znam. Osmijeh

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

 

 

Moj PC  
0 0 hvala 0
15 godina
offline
RE: Visual Basic 2008 Express pomoć
nadimak888 kaže...

Hvala.  Nisam znao da vb8 podržava relativne putanje. a sad znam. Osmijeh

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

 

 

Da to je vanjsko pozivanje iz Windows dll-ova (Windows api). 
Mislim da je ovo implementirano(sa process-om) u svima .NET VB-ovima (od 1.0 do 3.5)...
"Genius might be the ability to say a profound thing in a simple way." Charles Bukowski
15 godina
offline
Visual Basic 2008 Express pomoć
autorov komentar
prihvaćeno rješenje

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?

 
0 0 hvala 0
16 godina
neaktivan
offline
Visual Basic 2008 Express pomoć

Kopirao sam taj kod, i sve je u "normalnim" bojama.

 

 

 
0 0 hvala 0
15 godina
offline
RE: Visual Basic 2008 Express pomoć
autorov komentar
itf4n kaže...

Kopirao sam taj kod, i sve je u "normalnim" bojama.

 

 ma nisi skužio. i meni je sve u normalnim bojama. to sam ja obojao u postu samo da to istaknem. jer nisam napisao putanju do tog programa i ime programa nego doslovno ''putanja + imeAplikacije'' a opet sve funkcionira
16 godina
neaktivan
offline
Visual Basic 2008 Express pomoć

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.

 
0 0 hvala 0
15 godina
offline
RE: Visual Basic 2008 Express pomoć
autorov komentar

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 mindSramim se

15 godina
offline
Visual Basic 2008 Express pomoć
autorov komentar

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

 
0 0 hvala 0
16 godina
neaktivan
offline
Visual Basic 2008 Express pomoć

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

 
0 0 hvala 0
15 godina
offline
Visual Basic 2008 Express pomoć
autorov komentar

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?

 
0 0 hvala 0
16 godina
neaktivan
offline
Visual Basic 2008 Express pomoć

Ja uvijek stavim na 2.0 jer ga najviše ljudi ima. Uostalom, ne koristim funkcionalnosti novih .NETova.

 
0 0 hvala 0
15 godina
offline
Visual Basic 2008 Express pomoć
autorov komentar

evo vidio sam da postoji opcija s koje se može maknut kvačica a tiče se net frameworka. znači li to, da ako maknemo tu kvačicu da za rad tog programa neće bit potreban net framework!? jeli to dobro? što se time gubi, a što dobija!? može li netko što prije odgovorit. hitno je

 
0 0 hvala 0
16 godina
neaktivan
offline
Visual Basic 2008 Express pomoć

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.

Poruka je uređivana zadnji put uto 27.1.2009 23:01 (itf4n).
 
0 0 hvala 0
Nova poruka
E-mail:
Lozinka:
 
vrh stranice