Navision schließen bzw. Aktiv holen

31. Juli 2009 08:11

Moin moin ,

ich bin auf der Suche nach einer Möglichkeit entweder einen sauberen Beenden Befehl in Navision auszugeben, oder aber Navision als Aktives Fenster zu holen.

Hintergrund ist, dass ich mir eine Form gebastelt habe, in der die Idle Zeit eines Users hochgezählt wird; ist eine gewisse Zeit erreicht, dann soll er Navision schließen.

Realisiere ich das jetzt aber mit einem einfach
Code:
SendKeys('%{F4}')
, killt er natürlich nicht Navision, sondern die Applikation, die gerade aktiv ist.

Ich hoffe, da gibt es überhaupt eine Möglichkeit und ihr kennt die ;-)

Gruß Steffen

Re: Navision schließen bzw. Aktiv holen

31. Juli 2009 08:20

Hallo Steffen,

es gibt da noch weitere Probleme, die du lösen musst:
  • Dein Programm muss zunächst das NAV-Fenster anhand des Fenstertitels finden.
  • Wenn sich NAV gerade in einem Dialog befindet oder sich in einer Übersicht befindet, kannst du den Client nicht so ohne weiteres schließen.
  • Ein killen des Prozesses würde da u.U. dazu führen, das dir eine Session auf dem NAV-Server blockiert ist, und du diese erst wieder nach dem Neustart des Server-Dienstes (Bei einer Native Datenbank) wiederbekommst.

Wenn du also etwas klamm an User- Lizenzen bist, ist die stabilere Lösung einige nachzukaufen :wink:

Gruß, Fiddi

Re: Navision schließen bzw. Aktiv holen

31. Juli 2009 08:23

das ginge mit
Code:
SHELL('taskkill /im fin.exe');
bzw.
SHELL('taskkill /im finsql.exe');

Mit /f /im würdest du das beenden noch erzwingen.
Allerdings beendest du so den Prozess, ich weiß nicht was Navision tut wenn gerade noch nicht gepeicherte Arbeit offen ist.

Edit:
Fiddi hat meine Bedenken auf den Punkt gebracht.

Re: Navision schließen bzw. Aktiv holen

31. Juli 2009 08:38

Hallo Steffen,

einer unserer Kunden hat das Problem so "gelöst":
Über einen NAS wird die Sessiontabelle überwacht, und bei Überschreiten einer bestimmten Dauer des "Nichtstuns" wird die entsprechende Session brutal gelöscht. Das Fenster beim Client bleibt dabei natürlich offen -- dort erscheint die Fehlermeldung, dass die Verbindung zum Server beendet wurde (o.ä.).

Ist aber auch nicht die feine Art -- siehe die Einwände von fiddi.

Gruß Torsten

Re: Navision schließen bzw. Aktiv holen

31. Juli 2009 09:38

Oha,

da sind doch ein paar gute Einwände bei...

Besonders die Sache mit dem Prozess killen, wollte ich eigentlich eh vermeiden, da ich mir schon so ne Sache dachte, wie es Fiddi sagt.
Das killen der Session von ner anderen Seite aus, wird derzeit manuell so gemacht, aber wie Torsten67 auch schon anmerkt, erscheint dann eine Fehlermeldung, die immer wieder zu unnötigen Fragen führt.

Aber den Weg über das hervorheben des Tasks und anschließend ein paar "{Esc}" +"%{F4}" lösen, bis auf ein Speichern Dialog, eigentlich alle Probleme. Und wenn ein Speichern Dialog aktiv ist, sollte man eh so gnädig sein und die Session nicht beenden.

Wie mein Navision Fenster heißt, weiß ich ja, da es auch nur maximal zwei Mandanten gibt. Nennen wir es einfach mal "Deko Navision".

Gibt es da nun eine Möglichkeit, den "Wechseln zu..." Task von Windows zu emulieren?

Re: Navision schließen bzw. Aktiv holen

31. Juli 2009 09:59

wenn du das Fenster gefunden hast, kannst du es über die ID, die du zurückbekommst, aktivieren.

Gruß, Fiddi

Re: Navision schließen bzw. Aktiv holen

31. Juli 2009 11:27

Könnte hier eventuell dieses Thema in die richtige Richtung zeigen?

Re: Navision schließen bzw. Aktiv holen

31. Juli 2009 12:33

Das ist ja mal schick, aber so wie ich das sehe, untersucht der nur die Prozesse, also in dem Fall fin.exe und die kann man leider nicht aktiv setzen.

Aber ich gucke mir das auf jeden Fall mal in Ruhe an, auch die Bibilotheken, die da gentzt werden. Da muss ja was dabei sein.

Re: Navision schließen bzw. Aktiv holen

3. August 2009 08:37

Über den Prozess fin.exe gehen und anhand der Prozess ID mittels der Win API die zugehörigen Fensterhandles holen. Dann kannst Du per Win API SendMessage in Ruhe versuchen die Fenster abzuschießen. Da die Dialogfenster abh. vom Hauptfenster sind bekommst Du also auch die Info mit, ob gerade etwas zusätzlich offen ist oder nicht. Weitere Infos z.B. hier: http://www.codeguru.com/forum/showthread.php?t=353149