在做java桌面应用程序时,双击程序的快捷启动图标,桌面程序就会打开。再次双击,又会打开一个新的桌面应用程序。如果软件中的某些值是不允许共享和并发的,比如端口占用等。因此必须找到一种方法使得无论双击多少次启动图标,我们的应用程序都只会打开一个。那么该怎么解决呢?
- #include <jni.h>
- #include <windows.h>
- #include "com_TestSingle.h" //由jni命令根据java文件生成的.h头文件
- HANDLE hMutex;
- JNIEXPORT jint JNICALL Java_com_TestSingle_getInstance(JNIEnv *env, jobject obj)
- {
- hMutex = CreateMutex(NULL, FALSE, "SingletonInstance");
- if(hMutex)
- {
- if(GetLastError() == ERROR_ALREADY_EXISTS)
- {
- return JNI_TRUE;
- }
- }
- return JNI_FALSE;
- }
- if(getInstance() == 1)
- {
- JOptionPane.showMessageDialog(null, "程序已经在运行!");
- System.exit(0);
- }