Wie der Titel vermuten lässt, handelt es sich um eine Klasse, um den Mehrfachstart einer Anwendung zu verhindern.
Zusätzlich ist es möglich, an die bereits laufende Instanz eine Textnachricht zu schicken, z. B. eine Pfadangabe, die der zweiten Instanz als Argument mitgegeben wurde.
Die Klasse selbst ist eine Ableitung von QApplication.
Das Archiv enthält eine Testanwendung, die selbsterklärend sein sollte.
Bei Fragen oder Problemen bitte hier melden.
SingleApplication (windows only)
-
- Beiträge: 89
- Registriert: 24. Februar 2006 16:41
- Wohnort: Dresden
SingleApplication (windows only)
- Dateianhänge
-
- mytest.rar
- Testanwendung:
VS 2005-Makefile-Projekt (mingw / QMAKESPEC: win32-g++) - (12.03 KiB) 939-mal heruntergeladen
Gruß, Peter
Ich erhalte ich beim Compilieren mit VS2005 Prof + SP1 an 2 Stellen einen Fehler. Du allozierst da einen Puffer mit
wobei jedoch len keine Konstante ist, sondern eine Variable die zur Laufzeit ermittelt wird. Ich habe das so ersetzt und nun funktioniert es:
Besten Dank für den Code!
Code: Alles auswählen
char buf[len];
Code: Alles auswählen
char *buf = new char[len];
// .... code der buf verwendet ....
delete[] buf;
-
- Beiträge: 89
- Registriert: 24. Februar 2006 16:41
- Wohnort: Dresden
Textnachricht bei Mac OS Programm?
Hallo,
gibt es auch eine Möglichkeit unter Mac OS X dem laufenden Programm eine Pfadangabe mitzuteilen, bspw. dass eine Datei geöffnet werden soll?
Unter Windows ist das ja sehr komfortable mit Deinem Code eine Datei per Rechtsklick darauf öffnen zu lassen.
Gruß,
M
gibt es auch eine Möglichkeit unter Mac OS X dem laufenden Programm eine Pfadangabe mitzuteilen, bspw. dass eine Datei geöffnet werden soll?
Unter Windows ist das ja sehr komfortable mit Deinem Code eine Datei per Rechtsklick darauf öffnen zu lassen.
Gruß,
M
SingleApplication (windows only) +linux
Mit Linux geht es auch durch di socket
der vorteil man kann dann auch file senden zum oeffnen oder andere meldungen....
Als reales beispiel:
http://fop-miniscribus.googlecode.com/s ... t/main.cpp
http://www.qt-apps.org/content/show.php ... tent=80234
der vorteil man kann dann auch file senden zum oeffnen oder andere meldungen....
Code: Alles auswählen
#ifdef Q_OS_UNIX
/* kurzer name der application */
#define _UNIX_SOCKET_ "/tmp/layeres.sock"
#include <stddef.h>
#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/un.h>
int make_local_app_socket()
{
struct sockaddr_un name;
int sock;
size_t size;
sock = socket (PF_LOCAL, SOCK_DGRAM, 0);
if (sock < 0)
{
return 0;
}
name.sun_family = AF_LOCAL;
strncpy (name.sun_path, _UNIX_SOCKET_, sizeof (name.sun_path));
name.sun_path[sizeof (name.sun_path) - 1] = '\0';
size = (offsetof (struct sockaddr_un, sun_path) + strlen (name.sun_path) + 1);
if (bind (sock, (struct sockaddr *) &name, size) < 0)
{
/* bereits offen andere apps ! */
return 0;
}
return sock;
}
#endif
int unix_sock = 0;
unix_sock = make_local_app_socket();
bool Apps_Offen = unix_sock == 0 ? true : false;
Als reales beispiel:
http://fop-miniscribus.googlecode.com/s ... t/main.cpp
http://www.qt-apps.org/content/show.php ... tent=80234
.........................
speack português italiano deutsch english castellà qt
speack português italiano deutsch english castellà qt