2017-03-28 116 views
0

我想從C#通過的ShellExecuteEx執行的notepad.exe()。但記事本不啓動。我在Windows 10 64位操作系統中運行代碼。這有什麼區別嗎?什麼是解決方案。的ShellExecuteEx()在Windows 10的64位操作系統

下面是我寫

SHELLEXECUTEINFO SEI = SHELLEXECUTEINFO.CreateInstance(); 
SEI.cbSize = Marshal.SizeOf(SEI); 
SEI.fMask = SEE_MASK_NOCLOSEPROCESS | SEE_MASK_FLAG_NO_UI 
      | SEE_MASK_NOASYNC | SEE_MASK_INVOKEIDLIST; 
SEI.hWnd = 0; 
SEI.lpVerb = "open"; 
SEI.lpFile = sbResult.ToString(); //StringBuilder notepad.exe path 
SEI.lpParameters = sDocName; // txt file path 
SEI.lpDirectory = ""; 
SEI.nShow = SW_SHOWNORMAL; 
SEI.hInstApp = 0; 
SEI.lpIDList = 0; 
lReturnedCode = ShellExecuteEx(ref SEI); 
WaitForSingleObject(SEI.hProcess, INFINITE); 
+0

很難說因缺少代碼而出現了什麼問題。請[麥克韋]。 –

+1

如果你只是想打開一個TXT文件,你應該提供只是TXT文件名'的ShellExecute/EX()',讓它揣摩出用戶的默認文本編輯器位於以及如何運行它:'SEI.lpFile = sDocName; SEI.lpParameters =「」;'不要盲目地調用'WaitForSingleObject()',只有在'ShellExecute/Ex()'返回成功時才調用它。 –

+0

ShellExecuteEx返回什麼? – Anders

回答

4

代碼有沒有必要使用ShellExecuteEx()。您可以使用Process.Start()

Process proc = Process.Start("notepad.exe", sDocName); 
相關問題