Anwendung wird zum 2ten mal gestartet -> 1. Anwendung soll reagieren
-
Hallo,
ich kann meine Anwendung mit Argumenten starten z.B.:
myproject.exe -abcdef
Angenommen meine Anwendung läuft schon (s.o.) und ich öffne nochmal die selbe Anwendung z.B. durch einen Link folgender Maßen:
myproject.exe -ghijkl
dann soll die Anwendung nicht nocheinmal gestartet werden, sondern die "neuen" Argumente der ersten Anwendung übergeben werden.
Wie kann ich dies realisieren? Muss ich nach dem Prozessnamen suchen oder dem Fenstertitel und dann einen Message schicken und die neue Anwendung schließen?
Danke im Voraus
teaseme
-
http://www.marquardtnet.info/cecke/quickies.1/1_quicky_19.html
in dem Beispiel wird das Fenster in den Vordergrund gebracht. Mit diesem Code sendest du dann die Daten an das Fenster
if(strlen(cmdLine)!=0) { COPYDATASTRUCT cds; cds.dwData=NULL; cds.cbData=strlen(cmdLine)+1; cds.lpData=cmdLine; SendMessage(hWnd,WM_COPYDATA,NULL,(LPARAM)&cds); }Das Programm muss dann auf WM_COPYDATA reagieren. Dazu in der Headerdatei des Formulars unter public folgendes aufnehmen:
public: // Anwenderdeklarationen
__fastcall TMain(TComponent* Owner);// Messagehandling deklarieren: BEGIN_MESSAGE_MAP MESSAGE_HANDLER(WM_COPYDATA, TWMCopyData, WmCopyData) END_MESSAGE_MAP(TForm)und dazu die WMCOPY Routine in der CPP Datei des Formulars
void __fastcall TMain::WmCopyData(TWMCopyData& Message) { String slCmdLine=(char*)Message.CopyDataStruct->lpData; //mach was damit } //---------------------------------------------------------------------------