masakari
Goto Top

(Fremd-)Programmaufruf nur einmal erlauben

Hallo,

hoffentlich kann mir jemand auch bei meinem zweiten Problem helfen welches ich nur mit aufwendigem gebatche umgehen könnte.

Szenario:

PCs für Vorschul bis Schulkinder mit Lernsoftware. Leider ist die Lernsoftware komplett aus Flash und benötigt etwas Zeit zum anlaufen. In der Zeit klicken die kleinen aber manchmal bis zu 4 mal auf das Icon und das ist bei der jetzigen Hardware nicht angenehm, vor allem da ich Taskmanager deaktiviert habe und die Programme sich bei Scriptfehlern nicht beenden lassen.

Problem:

Verhindern dass die Anwendung mehrfach gestartet werden kann. Am besten wäre wenn man über ein Fremdprogramm die Anwendung nur einmal starten lassen könnte. (ggf. auch 1mal in 2min)

Ich würde mich sehr freuen wenn mir jemand helfen könnte, da ich nach ewig langem Suchen nur Hinweise finde wie man sein eigenes Programm nur einmal aufrufen lassen kann oder dass es im jeweiligen Programm verfügbar sein muss zumindest mit Addones.

Falls das nicht geht würde ich das Icon mit einem link auf eine batch umleiten, die dann das Programm startet, die batch auf die die verknüpfung zielt durch eine ersetzt, die von 60 -1 zählt und dann die alte batch wiederherstellt. Somit wäre das ausführen innerhalb einer minute gewährleistet und versehentliches mehrfachstarten verhindert.

Vielen dank für eure zeit und hilfe
Gruß Masakari

Content-ID: 79147

Url: https://administrator.de/contentid/79147

Ausgedruckt am: 25.11.2024 um 23:11 Uhr

utopia
utopia 26.01.2008 um 01:57:55 Uhr
Goto Top
Hallte es nur nicht gerade für benutzerfreundlich, wenn man 60 sekunden warten muss und dieses batch-wirr-wa.

Schau dir mal den befehl tasklist in der kommandozeile an. Einfach nach dem prozess filtern der da gestartet wird. wenn er in der liste ist, dann programm nicht nochmal ausführen, ansonsten doch. fertig.
Masakari
Masakari 26.01.2008 um 14:37:21 Uhr
Goto Top
Hallte es nur nicht gerade für
benutzerfreundlich, wenn man 60 sekunden
warten muss und dieses batch-wirr-wa.

Schau dir mal den befehl tasklist in der
kommandozeile an. Einfach nach dem prozess
filtern der da gestartet wird. wenn er in der
liste ist, dann programm nicht nochmal
ausführen, ansonsten doch. fertig.

Hallo, sicher ists nicht benutzerfreundliche aber a) kann man den wait auch auf 30 setzen und außerdem braucht das programm leider etwas zum anlaufen mindestens 10 sec.

Vielen Dank für den Hinweis mit tasklist. Als ich durch die syntax mehr oder weniger nach x-maligem versuchen überfordert war habe ich danach gegoogelt und genau das gefunden was ich wollte:


aus dem forum hier: http://www.winhelpline.info/forum/programmierung-und-skripte/147849-bat ...

das klappt auch prima bei mir zuhause (XP) nur muss ich mal sehen dass ich tasklist auch unter w2k prof zum laufen kriege

falls es nicht hilft schau ich mal wieder vorbei face-smile

danke und schönes wochenende dir
Masakari
Masakari 31.01.2008 um 12:51:00 Uhr
Goto Top

unter w2k versucht und es aber leider funktioniert nicht. Dort ist keine taskkill vorhanden und die von xp verweigert ihren dienst.

Hat jemand vielleicht noch eine andre Idee.
Bitte um Hilfe
Masakari
Masakari 01.02.2008 um 13:08:34 Uhr
Goto Top
Ok, nach langen suchen hier mal die Auflösung des ganzen:

Hinweise:
cmdow und WAIT ist ein seperates Programm welches unter W2k und XP läuft und versteckt das Fenster (TIMEOUT funktionierte bei mir nicht)
tasklist, findstr gibt es unter W2k nicht, die Versionen von XP laufen aber auch unter W2k
tlist muss man von der W2k-CD meist erst extrahieren, liegt im Ordner Support/Tools/Support.cab
Bei der Angabe des Prozessnamens muss man sich den aus dem Taskmanager oder mit tasklist holen. Bei mir gabs bspw. Anwendungen, die im Taskmanager nur "name.ex" oder "name." heißen, dann muss genau das auch so als Prozessname angegeben werden.
cmdow, WAIT, tasklist, tlist, findstr und killbat kommen am einfachsten in den "%systemroot%\system32" -Ordner

für Windows XP nutzt man folgendes:

cmdow @ /hid <versteckt das fenster nach dem start>
START <<LW:\Pfad\Anwendung.xxx>> <startet die Anwendung wenn Sie nicht schon gestartet ist>

für Windows 2000 nutzt man dagegen folgendes:

cmdow @ /hid <versteckt das fenster nach dem start>
START <<LW:\Pfad\Anwendung.xxx>> <startet die Anwendung wenn Sie nicht schon gestartet ist>

wenn man die Fenster beenden lassen möchte, dann kann man gern mit EXIT, END, CLS, Gotoend experimentieren aber ich hab da keine Möglichkeit gefunden und die folgende Möglichkeit genutzt:

cmdow @ /hid
START kill.bat
START <<LW:\Pfad\Anwendung.xxx>>

hierbei steht in der kill.bat einfach nur:

cmdow @ /hid
WAIT 3
taskkill /f /IM CMD.exe

das Fenster wird nach dem Start versteckt, wartet 3 Sekunden und beendet dann alle cmd.exe-Prozesse

VORSICHT bei Anwendungen die ebenfalls cmd.exe benötigen oder aufrufen. Da muß man sich was andres einfallen lassen. Wenn der PC schnell genug ist dann macht das eine Fenster nichts, es ist eh versteckt und wird nicht gesehen.

Allen vielen Dank beim Helfen. Falls jemand das gleiche Problem hat, dann hoffe ich dass er mit meinen Hinweisen zumindest ein einfaches Workaroud bauen kann.