2011-07-19 135 views
1

我有一個應用程序在桌面上創建快捷方式,並允許您將文件拖放到快捷方式中以執行操作(將Word文檔轉換爲PDF)。現在我正在嘗試使用shellexecute(.NET Process.Start())以編程方式執行此操作。以編程方式設置啓動進程時的位置

問題是,它似乎沒有工作,我有一個偷偷摸摸的懷疑,這與創建的快捷方式具有「開始」參數設置爲特定文件夾的事實有關。

所以它看起來像這樣:

Shortcut target: "C:\Program Files (x86)\MyPDFConvertor\MyPDFConvertor.exe" 
Shortcut startin: "C:\Program Files (x86)\MyPDFConvertor\SomeSubfolder\SomeSubSubFolder" 

我的代碼是下面。

System.Diagnostics.Process.Start("C:\\Program Files (x86)\\MyPDFConvertor\\MyPDFConvertor.exe", "C:\\MyFiles\\This is a test word document.docx"); 

從根本上說,我的問題歸結爲:什麼是「挑動」實際上意味着/快捷方式做,我可以複製開始使用任何的ShellExecute或的Process.Start的應用程序時,這個功能?

回答

1

正如Yahia所說,設置了WorkingDirectory屬性。您還需要引用參數。這裏有一個粗略的例子:

//System.Diagnostics.Process.Start("C:\\Program Files (x86)\\MyPDFConvertor\\MyPDFConvertor.exe", "C:\\MyFiles\\This is a test word document.docx"); 
ProcessStartInfo start = new ProcessStartInfo(); 
//must exist, and be fully qualified: 
start.FileName = Path.GetFullPath("C:\\Program Files (x86)\\MyPDFConvertor\\MyPDFConvertor.exe"); 
//set working directory: 
start.WorkingDirectory = Path.GetFullPath("C:\Program Files (x86)\MyPDFConvertor\SomeSubfolder\SomeSubSubFolder"); 
//arguments must be quoted: 
const char quote = '"'; 
start.Arguments = quote + "C:\\MyFiles\\This is a test word document.docx" + quote; 
//disable the error dialog 
start.ErrorDialog = false; 
try 
{ 
    Process process = Process.Start(start); 
    if(process == null) 
    {//started but we don't have access 

    } 
    else 
    { 
     process.WaitForExit(); 
     int exitCode = process.ExitCode; 
    } 
} 
catch 
{ 
    Console.WriteLine("failed to start the program."); 
} 
+0

爲這個可怕的例子歡呼。 –

3

當您使用Process.Start時,您可以使用ProcessStartInfo調用它,而這恰好可以設置WorkingDirectory屬性 - 這樣您就可以複製該行爲。

相關問題