Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

Test if application is already running

Posted on 2009-07-03
3
Medium Priority
?
224 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

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In this article we will discuss all things related to StageFright bug, the most vulnerable bug of android devices.
You should read OS supplied guidelines before developing. I can't stress that enough. The guidelines will help you understand the reasons mobile app developers do what they do.  Apple is very particular when they review appstore submissions.
This course is ideal for IT System Administrators working with VMware vSphere and its associated products in their company infrastructure. This course teaches you how to install and maintain this virtualization technology to store data, prevent vuln…
Screencast - Getting to Know the Pipeline
Suggested Courses

916 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