2014-01-08 22 views
2

執行外部程序爲了從Silverlight應用程序執行的外部應用程序,您需要:如何從自定義目錄在Silverlight 5

  1. 截殺的瀏覽器外
  2. 有提升的信任權限

要執行這樣的應用程序,你可以做這樣的事情

public static void EjecutaEXE(string ruta) 
{ 
    using (dynamic shell = AutomationFactory.CreateObject("WScript.Shell")) 
    { 
     shell.Run(@ruta); 
    } 
} 

我發現我只能從Windows目錄運行這樣的應用程序,我是否錯過了一些東西?似乎毫無意義的這種限制。

這個工程:

EjecutaEXE("C:/Windows/myAwesomeApp.exe") 

這不起作用:

EjecutaEXE("C:/myfolder/myAwesomeApp.exe") 

有沒有錯誤或異常,只是什麼都不做。

+0

你不應該用反斜槓(\\)而不是正斜槓(/)?請記住,在路徑字符串的前面放置雙反斜槓或添加@。 – Peaceman71

+0

@ Peaceman71不,你沒有,正如我指出的那樣,第一個例子是可行的(你可以在你的Windows資源管理器中測試,你可以用/完美導航)。 @ for文字已包含在函數中。另一個關鍵點是,如果文件未找到,則FileNotFound異常會提高,並且在此情況並非如此。謝謝。 – nxgtrturbo

回答

1

我沒有經驗與您提供的代碼,但作爲一種替代這應該工作:在您的通話

public enum ShowCommands : int 
{ 
    SW_HIDE = 0, 
    SW_SHOWNORMAL = 1, 
    SW_NORMAL = 1, 
    SW_SHOWMINIMIZED = 2, 
    SW_SHOWMAXIMIZED = 3, 
    SW_MAXIMIZE = 3, 
    SW_SHOWNOACTIVATE = 4, 
    SW_SHOW = 5, 
    SW_MINIMIZE = 6, 
    SW_SHOWMINNOACTIVE = 7, 
    SW_SHOWNA = 8, 
    SW_RESTORE = 9, 
    SW_SHOWDEFAULT = 10, 
    SW_FORCEMINIMIZE = 11, 
    SW_MAX = 11 
} 

[DllImport("shell32.dll")] 
static extern IntPtr ShellExecute(
     IntPtr hwnd, 
     string lpOperation, 
     string lpFile, 
     string lpParameters, 
     string lpDirectory, 
     ShowCommands nShowCmd); 

public static void ExecuteMyCode(string filePath) 
{ 
    IntPtr retval = ShellExecute(System.IntPtr.Zero, string.Empty, filePath, string.Empty, string.Empty, ShowCommands.SW_NORMAL); 
} 
+0

您好,感謝您的回覆,您是否認爲標題問題標記爲Silverlight?,此答案看起來像非Silverlight環境。而且,如果它是silverlight兼容的,我應該把它放在哪裏(因爲作爲一種方法,沒有工作)? – nxgtrturbo

+0

這是一個來自Silverlight 5應用程序的工作示例。第二個參數可以是「打開」,「打印」,「打印到」等,因此您甚至可以使用它來控制文件在被調用程序中的行爲方式。如果你創建了一個類文件,並將第一個代碼塊放在那裏,然後創建一個函數在調用最後一行的時候,這應該起作用。至少它在我的應用程序中...... – Peaceman71

+0

明白了,「ShowCommands」找不到,需要什麼指令或引用?謝謝。 – nxgtrturbo

相關問題