| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY präsentiert die neue NVIDIA RTX A400 und die A1000 Grafikkarte, eine Pressemitteilung
|
Autor
|
Thema: Notepad-Task (1104 mal gelesen)
|
Arcuso Mitglied Vermessung
Beiträge: 70 Registriert: 25.07.2011
|
erstellt am: 15. Okt. 2012 09:14 <-- editieren / zitieren --> Unities abgeben:
Hallo ! Ich öffne per (startapp ...) eine ASCII-Datei mit dem Windows-Notepad. Notepad arbeitet ja mit einer Kopie der Original-Datei und kann in mehreren Instanzen geöffnet werden. Der Editor bekommt es aber nicht mit, wenn ich mit Lisp seine offene Datei umbenenne. Ich hatte gehofft, dass das nicht möglich wäre, in Lisp einen Fehler erzeugt und so mir mitteilt, das das File bereits offen ist. Ich möchte also vor jedem Öffnen abfragen, ob die Datei nicht vielleicht schon aufgerufen ist, damit der Anwender auch einen event. minimierten Task nicht übersehen kann. (dos_openp ...) erkennt auch nicht, ob die ASCII-Datei von Notebook geöffnet wurde. Leider finde ich weder in WinXP noch in Win7 eine Möglichkeit, das zu ermitteln. Ich hätte das Arbeits-File von Notepad in einem Temp-Ordner vermutet. Wahrscheinlich gibt es ja auch irgendwo in der Registry einen verwertbaren Eintrag. Bei den recherchierten getenv-Variablen habe ich auch nichts gefunden. Für einen möglichen Zugriff per (vlax-get-or-create-object "wscript.shell") auf Notepad oder die Windows Task-Liste fehlen mir die notwendigen Argumente. Vielleicht kann mir da jemand weiterhelfen, danke. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 15. Okt. 2012 09:28 <-- editieren / zitieren --> Unities abgeben: Nur für Arcuso
|
Arcuso Mitglied Vermessung
Beiträge: 70 Registriert: 25.07.2011
|
erstellt am: 15. Okt. 2012 10:32 <-- editieren / zitieren --> Unities abgeben:
Hallo ! Ich muss die Hintergründe besser erklären: Es handelt sich um eine Datei, die von einem Logger über die RS232-Schnittstelle portionsweise Messdaten eines Theodoliten zeilenweise weitergeschrieben wird. Von dort lese ich mit Lisp immer die jüngsten Zeilen und kartiere mit den lokalen Polar-Daten die Punkt-Blöcke in die Zeichnung. Der Beobachter kann sie dann vor Ort sofort in seinem Notebook verbinden. Das alles funktioniert bereits wunderbar, es kann aber sein, dass der Beobachter irgendeinen Fehler macht (falsche Punkt-Nr. beim Orientieren, etc.). Dazu möchte ich ihm die Möglichkeit bieten, die Messdaten mit Notebook zu öffnen, die fehlerhaften Zeilen harauszulöschen, zu speichern und diese Punkte neu aufzunehmen. Wenn er dann vergisst, Notepad ganz zu schließen und er speichert erst später wieder, sind die inzwischen aufgenommenen Punkte im Kübel. Ich möchte also den Anwender per Lisp darauf aufmerksam machen können, dass Notepad noch geöffnet ist, bevor er mit seiner regulären Polarpunkt-Aufnahme fortfährt. Am rel. kleinen Notebook-Monitor könnte er den minimierten Task in der unteren Leiste leicht übersehen. Es müsste doch in der Registry irgendwo erkennbar sein, ob Notepad gerade aktiv ist ?
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 15. Okt. 2012 11:32 <-- editieren / zitieren --> Unities abgeben: Nur für Arcuso
Zitat: Original erstellt von Arcuso:
Es müsste doch in der Registry irgendwo erkennbar sein, ob Notepad gerade aktiv ist ?
Warum sollte jedes Programm wenn es gestartet wird was in die Registry schreiben ? .... Und Notepad kann doch auch mit ner ganz anderen TXT beschäftigt sein oder mehrfach mit der gleichen offen sein ..... Wie soll das abgefangen werden ? Da müßtest du die Windows-TASKListe auswerten.. Anbei etwas Code : (defun Appli?(/ apps item lst meth1 meth2 WMI) (setq WMI (vlax-create-object "WbemScripting.SWbemLocator") meth1 (vlax-invoke WMI 'ConnectServer nil nil nil nil nil nil nil nil) meth2 (vlax-invoke meth1 'ExecQuery "Select * from Win32_Process")) (vlax-for item meth2 (setq lst (append lst (list (vlax-get item 'CommandLine)))) ) (vlax-release-object WMI) (vlax-release-object meth1) (vlax-release-object meth2) (vl-remove nil lst) ) ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Arcuso Mitglied Vermessung
Beiträge: 70 Registriert: 25.07.2011
|
erstellt am: 16. Okt. 2012 06:22 <-- editieren / zitieren --> Unities abgeben:
Danke CADmium, der Code funktioniert unter Win7 prima. Würde er das auch unter XP ? Unser Außendienst-Notebook wird vorläufig noch nicht erneuert und findet auch mit AutoCAD 2005 das Auslangen. Ich habe nur leider zZt. keinen Zugriff auf das Werkel und muss div. Situationen simulieren. Dabei fällt mir noch etwas Nützliches ein: Ließe sich mit einem ähnlichen Code auch ein minimierter Task oder ein Task im Hintergrund als aktuelles Fenster schalten? Dafür gäbe es bei uns außer für Notepad auch andere Anwendungsmöglichkeiten. Vielen Dank
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 16. Okt. 2012 07:09 <-- editieren / zitieren --> Unities abgeben: Nur für Arcuso
Zitat: Original erstellt von Arcuso: Danke CADmium, der Code funktioniert unter Win7 prima.Würde er das auch unter XP ?
Denke schon .. auch damals gabs das WMI-Objekt schon. Zitat: Original erstellt von Arcuso:
Ließe sich mit einem ähnlichen Code auch ein minimierter Task oder ein Task im Hintergrund als aktuelles Fenster schalten? Dafür gäbe es bei uns außer für Notepad auch andere Anwendungsmöglichkeiten. Vielen Dank
Mit Winscript läßt sich so einiges machen. Und mit ActiveX lassen sich - wenn COM-Schnittstelle vorhanden - viele Windowsprogramme im Hintergrund steuern .. WOrd Excel .... Und nochwas ... anderes .... Ganz allgemein an alle Mitleser ... weils mir in letzter Zeit mal wieder auffiel : Kennt von den "Neueren" eigentlich noch einer die Unities ??? Wirklich als Frage gemeint, nicht als Aufforderung! Auch wenn die Dinger eigentlich Ü sind .... als Mittel zum Zweck freut man sich drüber ... und ich find die Positiv für die "Kultur" im Forum und für eine mögliche "Wichtung" der Beiträge ... Ein Ersatz für ein geschriebenes "Danke" sind sie natürlich nicht. Oder haperts daran, das man dafür angemeldet sein muss ? Oder ist die Idee der U's tot ?
------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |