HPC.ru lite - Все форумы
Форум: Программирование для КПК
Тема: Запуск внешнего приложения

[Ответить]
Lisabet [20.09.2004 15:30] Запуск внешнего приложения:
Visual Basic .Net, привычная команда shell ("приложение") в программах для Smart Device не поддерживается.

Как запустить внешнее приложение из своей программы?
Выхрыст Павел [06.10.2004 12:02] :
Вот пример запуска эксплорера, в котором откроется помощ к программе

#Region "Для вызова хелпа"
Overloads Declare Function CreateProcess Lib "CoreDll.dll" (ByVal imageName As String, ByVal cmdLine As String, ByVal lpProcessAttributes As IntPtr, ByVal lpThreadAttributes As IntPtr, ByVal boolInheritHandles As Int32, ByVal dwCreationFlags As Int32, ByVal lpEnvironment As IntPtr, ByVal lpszCurrentDir As IntPtr, ByVal si As Byte(), ByVal pi As ProcessInfo) As Integer
Declare Function WaitForSingleObject Lib "CoreDll.dll" (ByVal Handle As IntPtr, ByVal Wait As Int32) As Int32
Declare Function GetLastError Lib "CoreDll.dll" () As Int32
Declare Function CloseHandle Lib "CoreDll.dll" (ByVal Handle As IntPtr) As Int32

Public Class ProcessInfo
Public hProcess As IntPtr
Public hThread As IntPtr
Public ProcessId As Int32
Public ThreadId As Int32
End Class 'ProcessInfo

Public Overloads Shared Function CreateProcess(ByVal ExeName As String, ByVal CmdLine As String, ByVal pi As ProcessInfo) As Boolean
Dim INFINITE As Int32
INFINITE = &HFFFFFFFF

Dim WAIT_OBJECT_0 As Int32 = 0
Dim result As Int32

If pi Is Nothing Then
pi = New ProcessInfo
End If
Dim si(12 As Byte

result = CreateProcess(ExeName, CmdLine, IntPtr.Zero, IntPtr.Zero, 0, 0, IntPtr.Zero, IntPtr.Zero, si, pi)
If 0 = result Then
Return False
End If
Return True
End Function

Public Function ShowHelp(ByVal anchor As String)
Dim helpPath As String = _
System.IO.Path.GetDirectoryName([Assembly].GetExecutingAssembly().GetModules(0).FullyQualifiedName)
helpPath = helpPath + "\help.htm" + "#" + anchor
Dim pi As New ProcessInfo
If CreateProcess("iexplore", helpPath, pi) Then
'MessageBox.Show(String.Format("Success! Resuming calling application." + ControlChars.Lf + "PID = 0x{0:X8}" + ControlChars.Lf + "({0})", pi.ProcessId), "Done Waiting...")
Else
MessageBox.Show("Файл справки не найден. " + String.Format("System Error = 0x{0:X8}" + ControlChars.Lf + "({0})", GetLastError()), "Done waiting...")
End If
End Function
#End Region
[Ответить]