Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Notepad-Task

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Notepad-Task (1034 mal gelesen)
Arcuso
Mitglied
Vermessung


Sehen Sie sich das Profil von Arcuso an!   Senden Sie eine Private Message an Arcuso  Schreiben Sie einen Gästebucheintrag für Arcuso

Beiträge: 70
Registriert: 25.07.2011

erstellt am: 15. Okt. 2012 09:14    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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




Sehen Sie sich das Profil von CADmium an!   Senden Sie eine Private Message an CADmium  Schreiben Sie einen Gästebucheintrag für CADmium

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 15. Okt. 2012 09:28    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Arcuso 10 Unities + Antwort hilfreich

wenn du Änderungen in einem Lisp per Notepad an einer Textdatei vornehmen lassen willst,
laß das Lisp doch warten , bis Notepad wieder geschlossen ist.

Der Notepadinhalt ist zur Bearbeitungszeit nur im Speicher - wie auch bei einer NEUEN Datei,
die wird auch erst beim Speichern angelegt.

Ach ja .. mit dem Wartenlassen :
(vl-load-com)

(if(setq WScript (vlax-get-or-create-object "WScript.Shell"))  
  (progn
    (vl-catch-all-apply
      'vlax-invoke-method
      (list WScript "Run"
            (if(setq DATEI (findfile "D:\\TEST.TXT"))
              (strcat "Notepad.exe \"" DATEI "\"")
              "Notepad.exe"
            ) 
              1 :vlax-true
      )
    )
    (vlax-release-object WSCRIPT)
  )
)

Wenns hilfreich war ...<< KLICK >>


------------------
  - 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


Sehen Sie sich das Profil von Arcuso an!   Senden Sie eine Private Message an Arcuso  Schreiben Sie einen Gästebucheintrag für Arcuso

Beiträge: 70
Registriert: 25.07.2011

erstellt am: 15. Okt. 2012 10:32    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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




Sehen Sie sich das Profil von CADmium an!   Senden Sie eine Private Message an CADmium  Schreiben Sie einen Gästebucheintrag für CADmium

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 15. Okt. 2012 11:32    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Arcuso 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von Arcuso an!   Senden Sie eine Private Message an Arcuso  Schreiben Sie einen Gästebucheintrag für Arcuso

Beiträge: 70
Registriert: 25.07.2011

erstellt am: 16. Okt. 2012 06:22    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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




Sehen Sie sich das Profil von CADmium an!   Senden Sie eine Private Message an CADmium  Schreiben Sie einen Gästebucheintrag für CADmium

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 16. Okt. 2012 07:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Arcuso 10 Unities + Antwort hilfreich

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

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz