Stránka 1 z 1

Spuštění exe.souboru

Napsal: 02 led 2013 09:41
od Martass
Ahoj!
Potřeboval bych prosím poradit kde je problém.
Ve VBA(excel)

Kód: Vybrat vše

 
   Dim Program As String
   Dim TaskID As Long
    Program = "c:\pokus.exe"
    TaskID = Shell(Program, vbNormalFocus)

kod mi má spustit vytvořenou jednoduchou aplikaci,která při spouštění načítá i ini soubor.
Pokud exe soubor spustím kliknutím třeba v manageru tak ten program se normálně spustí,ale pokud
ho chci spustit z VBA,tak se ten exe soubor začne spouštet,ale ke konci to hlásí chybu programu,
protože to takovýmto způsobem nechce načíst ten ini soubor.Nevíte někdo jak to vyřešit v tom VBA,
existuje nějaký jiný způsob jak ten exe soubor spustit.
Děkuji

Re: Spuštění exe.souboru

Napsal: 02 led 2013 10:55
od Azuzula
V nápovědě VBA je přímo napsáno, že pomocí Shell se programy spouští asynchonně a pokud chápu ten zbytek, tak se tam píše že to může způsobovat problémy, ale už tam není možné řešení...
Osobně to taky používám, ale mám i alternativu ;)
Pozor, mezery a znaky s diakritikou v cestě a názvu souboru můžou dělat problémy!

Kód: Vybrat vše

Dim ws
Dim program as Long
Set ws = CreateObject("WScript.Shell")
program = ws.Run("c:\program.exe", 5)

PS: Parametr spouštěného programu:
0 skryté
4 neaktivní
5 aktivní
6 minimalizované
ostatní kódy fungují asi podobně jako tyto 4 vypsané a nebo v nich nevidím rozdíl

Re: Spuštění exe.souboru

Napsal: 02 led 2013 11:09
od jar_st
Pro spouštění programů lze použít standardní funkce WinAPI -ShellExecute,ShellExecuteEx
Pro čekání na jeho spuštění,ukončení lze použít WaitForSingleObject

Re: Spuštění exe.souboru

Napsal: 02 led 2013 11:26
od Martass
Děkuji za rychlé odpovědi nicméně pokud použiji uvedený kod,
"tak to hlásí chybu Method Run of object IWsh Shell3 failed"
v příloze posílám jednoduchý soubor xls,který by měl spusitit ten pokus4a.exe
ten exe i ini soubor v tomto případě musí být přímo na c:
Takže kdybyste to mohli prosím zkouknout a vyzkoušet
Děkuji

Re: Spuštění exe.souboru

Napsal: 02 led 2013 11:52
od jar_st
Spouštění programu jako takový funguje.Když jsem dal místo toho tvýho programu Notepad.exe ,tak ho to bez problému spustí.Hledal bych problém v tom souboru pokus4a.exe (je psanej v Delphi)

--- Doplnění předchozího příspěvku (02 Led 2013 11:59) ---

Zkus tohle:

Kód: Vybrat vše

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
Private Sub CommandButton1_Click()
 Dim Program As String
 Dim TaskID As Long
 
 
TaskID = ShellExecute(0, "open", "c:\pokus4a.exe", "", "c:\", 1)
   
End Sub

Takhle mi to funguje zdá se bez problému.

Re: Spuštění exe.souboru

Napsal: 02 led 2013 12:00
od Martass
Ne,ne ten program je dělaný v Game Makeru a ano vše ostatní funguje ,jenom v této podobě ne,
dokonce i když tam v GM zkompiluji a vytvořím jiný .exe, ale který se neodkazuje na žádný ini soubor
tak to také jede.Tak to mám radost..... :thumbdown:

--- Doplnění předchozího příspěvku (02 Led 2013 12:08) ---

Zlatejjjjj,šikulka ,super funguje,spadla mi docela velká skála ze srdce.
Mhohokeré DÍKY

Re: Spuštění exe.souboru

Napsal: 27 bře 2013 12:38
od Martass
Ahoj!
Tak jsem zpět s podobným problémem,ovšem tentokráte uvedený program potřebuji
spustit ve VB2010(vědom si toho,že toto vlákno je pro jiné).Tak chci požádat zda nevíte
jak vyřešit stejný problém,akorát pro jinou aplikaci - VB2010.......
Pokud použiji stejný kód jaký je uveden výše tak to hlásí tuto chybu

Volání funkce PInvoke Mefi!WindowsApplication1.promena::ShellExecute způsobilo nevyváženost zásobníku. Důvodem je pravděpodobně skutečnost, že spravovaný podpis PInvoke neodpovídá nespravovanému cílovému podpisu. Ověřte, zda konvence volání a parametry podpisu PInvoke odpovídají cílovému nespravovanému podpisu.

děkuji