Solved

Test if application is already running

Posted on 2009-07-03
3
202 Views
Last Modified: 2013-12-27
I would like to check if there is already running an instance of program on windows mobile device, so I could prevent multiple lunches of the program.
0
Comment
Question by:uveper
  • 2
3 Comments
 
LVL 24

Expert Comment

by:alexey_gusev
ID: 24770573
with cf.net it is done automatically by framework.

in general, there may be different techniques, such as creating a mutex (some vb example here, but works for wince as well - http://www.mrexcel.com/forum/showthread.php?t=19425), registering your unique window class and then calling FindWindow() to check if there is such one already etc.
0
 

Author Comment

by:uveper
ID: 24770632
what do you mean "with cf.net it is done automatically by framework" ?

I tried to convert vb example to c# but I failed, because I do not fully understand the syntax.
0
 

Accepted Solution

by:
uveper earned 0 total points
ID: 24770808
I found a solution!
using System.Runtime.InteropServices;
 

const string AppNamedEvent = "APP_NAMED__EVENT";
 

        [DllImport("coredll")]

        private extern static void SetWindowText(IntPtr hwnd, string text);
 

        [DllImport("coredll")]

        private static extern IntPtr FindWindow(string className, string wndName);
 

        [DllImport("coredll.dll")]

        private static extern bool SetForegroundWindow(IntPtr hWnd);
 

        [DllImport("coredll.dll", EntryPoint = "CreateEvent", SetLastError = true)]

        private static extern IntPtr CreateEvent(IntPtr lpEventAttributes, bool bManualReset, bool bInitialState, string lpName);
 

        [DllImport("coredll.dll", EntryPoint = "CloseHandle", SetLastError = true)]

        private static extern IntPtr CloseHandle(IntPtr handle);
 

//Before you do the app.run use the following code

                // makes sure that we have only one run instance

                IntPtr evnt = CreateEvent(IntPtr.Zero, false, false, AppNamedEvent);

                if (Marshal.GetLastWin32Error() != 0)

                {

                    // one instance of application is run, activate it

                    IntPtr hwnd = FindWindow(null, "StartForm");

                    if (hwnd != IntPtr.Zero)

                    {

                       SetForegroundWindow(hwnd);

                    }

                    return;

                }

Open in new window

0

Featured Post

Do You Know the 4 Main Threat Actor Types?

Do you know the main threat actor types? Most attackers fall into one of four categories, each with their own favored tactics, techniques, and procedures.

Join & Write a Comment

Suggested Solutions

When I was a beginner in Windows Mobile programming, even for small test I used to create a single MFC dialog-based application with one button, and put my test code in the OnLButtonDown method. For Pocket PC it worked fine, on some Windows CE d…
Preface: This article is part of a series focused on cross platform mobile app development (specifically Android and iOS) using the Alloy framework and Titanium Studio made by Appcelerator (https://www.appcelerator.com/). This article presumes a wor…
Here's a very brief overview of the methods PRTG Network Monitor (https://www.paessler.com/prtg) offers for monitoring bandwidth, to help you decide which methods you´d like to investigate in more detail.  The methods are covered in more detail in o…
This video gives you a great overview about bandwidth monitoring with SNMP and WMI with our network monitoring solution PRTG Network Monitor (https://www.paessler.com/prtg). If you're looking for how to monitor bandwidth using netflow or packet s…

758 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

19 Experts available now in Live!

Get 1:1 Help Now