miércoles, septiembre 05, 2007

VB.NET PrevInstance / Instancia Previa

En Windows Mobile 2003 una aplicacion puede ejecutarse varias veces, no como en las versiones de los sistemas operativos anteriores en los cuales el mismo sistema operativo trae al frente la aplicacion que se esta ejecutando.

Se utilizan dos API y unas lineas de codigo en el metodo Main de la forma, ya que este metodo se ejecuta antes de Cargar o crear la forma.

Las decalraciones API son las siguientes:

' Funciones del API

EntryPoint:="SetForegroundWindow")>
_
Private Shared Function SetForegroundWindow( _
ByVal hWnd As IntPtr) As Boolean
End Function
'

EntryPoint:="FindWindow")>
_
Private Shared Function FindWindow( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As IntPtr
End Function

El metodo Main quedaria asi:

' El Sub Main
Public Shared Sub Main()
Dim nWnd As IntPtr
Dim ceroIntPtr As New IntPtr(0)
'
' Texto de la Forma
nWnd = FindWindow(Nothing, "Form1")
If nWnd.Equals(ceroIntPtr) Then
Application.Run(New fNotas())
Else
SetForegroundWindow(nWnd)
Application.Exit()
End If
End Sub

En donde "Form1" es el titulo de la forma (la propiedad .Text de la forma).

Publicar un comentario