Pienoinen ongelma
Haen Commondialogilla muuttujaan ohjelman sijainnin kokonaisena: Esim:
c:\kansio\ohjelma.exe
Kuinka tuo ajetaan Shellexecutella?
Kokeilin mm. tällaista, jossa tuo muuttuja sisältää tuon ohjelman sijainnin, kuten yllä kirjoitin.
ShellExecute 0&, vbNullString, muuttuja, vbNullString, vbNormalFocus
Joka aiheuttaa virheen
Kokeilin myös:
ShellExecute 0&, vbNullString, vbNullString, muuttuja, vbNullString, vbNormalFocus
joka avaa kyllä oikean kansion, mutta ei itse ohjelmaa
Minusta tuo ensimmäinen tapa on kyllä oikein. Minkälaisen virheilmoituksen saat? Ja jos haluat vain ajaa ohjelman tavallisesti, niin eikö VB:n oma Shell riitä?
Virheilmoitus:
Compile error:
Argument not optional
VB:n omakin Shell kelpaisi, mutta kun en saa ajettua sitä normalfocuksella:
Shell (muuttuja,vbNormalFocus)
Tai
Shell (muuttuja, 1)
Antaa virheilmoituksen jo ennen ohjelman ajoa:
Compile error:
expected: =
Pelkällä Shell (muuttuja) kyllä toimii, mutta se vie avattavan ohjelman alimmaiseksi, kun se pitäisi saada päällimmäiseksi.
Jälkeenpäin:
Sainkin tuon toimimaan vb shellillä.
Yritin ajaa shelliä suoraan, kun piti ajaa se muuttujan kautta.
eli toimivana:
Dim ajaohjelma
Dim ohjelma
ohjelma = GetSetting("kansio", "koe", "ohjelman sijainti")
ajaohjelma = Shell(ohjelma, 1)
Shell "c:\windows\notepad.exe", vbNormalFocus
Eli tosiaan, sulut funktiokutsuihin vain ja ainoastaan jos niiden palauttama arvo halutaan ottaa talteen. Eli tuokin olisi toiminut näin:
a = Shell(muuttuja, vbNormalFocus)
lainaus:
Virheilmoitus:
Compile error:
Argument not optional
Mitä riviä tuo näyttää? Onko funktion määrittely ohjelman alussa varmasti oikein?
lainaus:
VB:n omakin Shell kelpaisi, mutta kun en saa ajettua sitä normalfocuksella:
Shell-funktiota voi kutsua ainakin kahdella tavalla, joista kummatkin toimivat minulla oikein, myös vbNormalFocus-parametrin kanssa.
'aliohjelmana Shell "notepad", vbNormalFocus 'funktiona Dim x As Double x = Shell("notepad", vbNormalFocus)
edit: fawkz ehti ensin
Aihe on jo aika vanha, joten et voi enää vastata siihen.