WinFuture-Forum.de: batch für "Start von Programm1 lässt Programm2 starten" - WinFuture-Forum.de

Zum Inhalt wechseln

Alle Informationen zum Thema Windows 7 in unserem Special. Windows 7 Download, FAQ und neue Funktionen im Überblick.
  • 2 Seiten +
  • 1
  • 2

batch für "Start von Programm1 lässt Programm2 starten"


#1 Mitglied ist offline   Joshua123 

  • Gruppe: aktive Mitglieder
  • Beiträge: 30
  • Beigetreten: 29. Juli 10
  • Reputation: 0

geschrieben 04. September 2014 - 21:27

Guten Abend Leute.

Wie im Titel angedeutet, möchte ich eine *bat schreiben, die vom Start eines Programms1 (Winword.exe in diesem Fall) ausgelöst wird und ein Programm2 (phraseexpress.exe) startet.

Wie man beide Programme aufeinmal starten lässt, habe ich schon rausgefunden:

Zitat

Start/MAX "" "C:\Program Files\Microsoft Office\Office\WINWORD.EXE"
Start "" "C:\Program Files\PhraseExpress\Phraseexpress.exe"


aber das ist nicht, was ich brauche. Phraseexpress.exe soll dann starten, wenn ich eine beliebige *.doc anklicke (worauf hin winword.exe startet).

Weiß jemand Rat?
0

Anzeige



#2 Mitglied ist offline   Q 1 

  • Gruppe: aktive Mitglieder
  • Beiträge: 2.274
  • Beigetreten: 11. Januar 14
  • Reputation: 153
  • Geschlecht:Männlich

geschrieben 05. September 2014 - 02:02

Du müßtest entweder die Dateiendung DOC nicht einem, sondern gleich zwei Programmen zuordnen :blink:
oder in die Winword.exe Code einbauen, der die Phraseexpress.exe startet :blink:

Vorschlag: Die Batch-Datei, die beide Programme startet, in eine .exe konvertieren und diese der Dateiendung DOC als Standardprogramm zuordnen. :blink:

Edit: An Zeile 1 ein "%1" anhängen. :blink:

Dieser Beitrag wurde von Q 1 bearbeitet: 05. September 2014 - 02:47

Im Budapester Memorandum bekräftigten Russland, die Vereinigten Staaten von Amerika und das Vereinigte Königreich, als Gegenleistung für einen Nuklearwaffenverzicht, gemeinsam in drei getrennten Erklärungen jeweils gegenüber Kasachstan, Belarus und der Ukraine erneut ihre bereits bestehenden Verpflichtungen, die Souveränität und die bestehenden Grenzen der Länder, das UN-Gewaltverbot und weitere Verpflichtungen zu achten.
0

#3 Mitglied ist offline   Sturmovik 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.776
  • Beigetreten: 10. Januar 08
  • Reputation: 445
  • Geschlecht:unbekannt
  • Wohnort:In Reichweite der Kaffeemaschine
  • Interessen:IT, Luftfahrt, historische Technik

geschrieben 05. September 2014 - 07:41

Das wär doch wieder mal was für die Aufgabenplanung. Als Trigger den Start von Winword.
«Geschichte wiederholt sich nicht, aber sie reimt sich» (Mark Twain)

Unix won't hold your hand. You wanna shoot your foot, Unix reliably delivers the shot.

True Cloudstorage
0

#4 Mitglied ist offline   DK2000 

  • Gruppe: Administration
  • Beiträge: 19.794
  • Beigetreten: 19. August 04
  • Reputation: 1.434
  • Geschlecht:Männlich
  • Wohnort:Oben auf dem Berg
  • Interessen:Essen, PC, Filme, TV Serien...

geschrieben 05. September 2014 - 07:50

Bloß welchen Trigger soll man da nehmen. So direkt gibt es da nichts passendes in der Richtung.
Ich bin kein Toilettenpapier-Hamster.
---
Ich bin ein kleiner, schnickeldischnuckeliger Tiger aus dem Schwarzwald.
Alle haben mich ganz dolle lila lieb.
0

#5 Mitglied ist offline   RalphS 

  • Gruppe: VIP Mitglieder
  • Beiträge: 8.895
  • Beigetreten: 20. Juli 07
  • Reputation: 1.126
  • Geschlecht:Männlich
  • Wohnort:Zuhause
  • Interessen:Ja

geschrieben 05. September 2014 - 08:01

Man könnte in den windows image options in der registry basteln. Damit müßte das gehen. Aber sauber ist das auch nicht.
"If you give a man a fish he is hungry again in an hour. If you teach him to catch a fish you do him a good turn."-- Anne Isabella Thackeray Ritchie

Eingefügtes Bild
Eingefügtes Bild
0

#6 _d4rkn3ss4ev3r_

  • Gruppe: Gäste

geschrieben 05. September 2014 - 09:15

Würde das genauso machen wie Q 1.

Alternativ kannst du eine Batch schreiben die alle X Sekunden oder Minuten prüft ob Word offen ist und dementsprechend dann PhraseExpress öffnen lassen.
Ich glaube mich zu erinnern das es Möglichkeiten gibt die Batch dann (nach Umwandlung) unsichtbar im Hintergrund laufen kann.
0

#7 Mitglied ist offline   Joshua123 

  • Gruppe: aktive Mitglieder
  • Beiträge: 30
  • Beigetreten: 29. Juli 10
  • Reputation: 0

geschrieben 05. September 2014 - 11:29

Danke für Eure Hilfsbereitschaft!

An Q1:
Verstehe. Wenn die *.docs, statt dem Programm Winword, der aus der Batch erzeugten EXE zugeordnet würden, dann würde sie Winword indirekt starten. Außerdem Phraseexpress.

Das %1 käme hinter den Gänsefüsschen, so wie hier drunter abgebildet?

Start/MAX "" "C:\Program Files\Microsoft Office\Office\WINWORD.EXE"%1
Start "" "C:\Program Files\PhraseExpress\Phraseexpress.exe"




An Sturmovik

Zitat

Das wär doch wieder mal was für die Aufgabenplanung. Als Trigger den Start von Winword.

Versuch gescheitert, weil ich nicht rausfinden konnte, an welcher Stelle in welcher Form der Winword-Start in die Planer-Schablone zu implementieren wäre. Prozess-ID angeben? Da taucht im Task-Manager bei jedem Winwordstart eine neue Zahl auf.
Zu Testzwecken als Trigger das in der Schablone vorgegebene Wordpad ausgewählt: null Reaktion.
0

#8 Mitglied ist offline   Sturmovik 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.776
  • Beigetreten: 10. Januar 08
  • Reputation: 445
  • Geschlecht:unbekannt
  • Wohnort:In Reichweite der Kaffeemaschine
  • Interessen:IT, Luftfahrt, historische Technik

geschrieben 05. September 2014 - 12:10

Beitrag anzeigenZitat (Joshua123: 05. September 2014 - 11:29)

Versuch gescheitert, weil ich nicht rausfinden konnte, an welcher Stelle in welcher Form der Winword-Start in die Planer-Schablone zu implementieren wäre. Prozess-ID angeben? Da taucht im Task-Manager bei jedem Winwordstart eine neue Zahl auf.
Zu Testzwecken als Trigger das in der Schablone vorgegebene Wordpad ausgewählt: null Reaktion.

Ausm Hut kann ich da auch nix sagen, war halt ne Idee.
Ich müsste da auch erstmal nachforschen welche Systemereignisse da nutzbar wären.
«Geschichte wiederholt sich nicht, aber sie reimt sich» (Mark Twain)

Unix won't hold your hand. You wanna shoot your foot, Unix reliably delivers the shot.

True Cloudstorage
0

#9 Mitglied ist offline   Q 1 

  • Gruppe: aktive Mitglieder
  • Beiträge: 2.274
  • Beigetreten: 11. Januar 14
  • Reputation: 153
  • Geschlecht:Männlich

geschrieben 05. September 2014 - 13:58

Beitrag anzeigenZitat (Joshua123: 05. September 2014 - 11:29)

Das %1 käme hinter den Gänsefüsschen, so wie hier drunter abgebildet?

Mit einem Abstand und Anführungszeichen, also

Start/MAX "" "C:\Program Files\Microsoft Office\Office\WINWORD.EXE" "%1"

Ist nötig, um nicht nur das Programm zu öffnen, sondern gleich das jeweilige Dokument. :)
Im Budapester Memorandum bekräftigten Russland, die Vereinigten Staaten von Amerika und das Vereinigte Königreich, als Gegenleistung für einen Nuklearwaffenverzicht, gemeinsam in drei getrennten Erklärungen jeweils gegenüber Kasachstan, Belarus und der Ukraine erneut ihre bereits bestehenden Verpflichtungen, die Souveränität und die bestehenden Grenzen der Länder, das UN-Gewaltverbot und weitere Verpflichtungen zu achten.
0

#10 Mitglied ist offline   DK2000 

  • Gruppe: Administration
  • Beiträge: 19.794
  • Beigetreten: 19. August 04
  • Reputation: 1.434
  • Geschlecht:Männlich
  • Wohnort:Oben auf dem Berg
  • Interessen:Essen, PC, Filme, TV Serien...

geschrieben 06. September 2014 - 05:57

Bin gerade am überlegen, ob es eventuell nicht sauberer wäre, wenn man nicht lieber das Problem mit einer permanenten oder Temporären WMI Event Subscriptions erledigt, welche man über eine MOF Datei einrichtet. Die WMI erzeugt ja so oder so ständig ein Ereignis, wenn eine Anwendung gestartet oder beendet wird. Über Win32_ProcessStartTrace und Win32_ProcessStopTrace lässt sich das ganze auch auswerten.

Mittels PowerShell lässt sich das einfach lösen (temporär), hat allerdings einen Nachteil aus meiner Sicht:

Register-WmiEvent -Query "Select * from Win32_ProcessStartTrace WHERE ProcessName='notepad.exe'"  -Action {Write-Host "Der Editor wurde gestartet." }

Register-WmiEvent -Query "Select * from Win32_ProcessStopTrace WHERE ProcessName='notepad.exe'"  -Action {Write-Host "Der Editor wurde beendet." }

Was jetzt passiert, sieht man eigentlich schon am Quelltext. Hinter '-Action' kann man natürlich auch anstelle von 'Write-Host' auch die Anweisung geben, eine andere Anwendung zu starten, wenn 'notepad.exe' gestartet wird.

Nachteil ist hier allerdings, dass das Ganze nur mit Adminrechten funktioniert. Die Anwendung, welche automatisch gestartet wird, würde hier auch mit Adminrechten laufen. Das gefällt mir nicht so ganz.

Aber vielleicht ist das ganze ja auch ausbaufähig. Habe da auch noch einen Artikel gefunden, der das beschreibt, woran ich gerade denke:

Creating WMI Permanent Event Subscriptions Using MOF

Habe das Ganze aber nur mal überflogen. Weiß also nicht, ob das wirklich so geht. Aber eventuell kann man damit einen eigenes Event erstellen, welches nur den Start von 'Word.exe' meldet und dieses Event dann für die Aufgabenplanung verwenden, um dann über diese die Anwendung zu starten.

Das wäre eventuell eine saubere Methode und eine Überlegung wert, im Gegensatz zum Umverknüpfen von *.doc zu *.bat oder wie auch immer.

Vielleicht hat ja Ralph da noch eine Idee dazu. :rolleyes:
Ich bin kein Toilettenpapier-Hamster.
---
Ich bin ein kleiner, schnickeldischnuckeliger Tiger aus dem Schwarzwald.
Alle haben mich ganz dolle lila lieb.
0

#11 Mitglied ist offline   RalphS 

  • Gruppe: VIP Mitglieder
  • Beiträge: 8.895
  • Beigetreten: 20. Juli 07
  • Reputation: 1.126
  • Geschlecht:Männlich
  • Wohnort:Zuhause
  • Interessen:Ja

geschrieben 06. September 2014 - 06:51

Weshalb der Augenroll-Smiley? :unsure:

Und nein, leider nicht. Was so Dinge wie WMI und Programmausführungseigenheiten unter Windows angeht, hast Du sicherlich mehr Erfahrung (und Ahnung) als ich, damit hab ich mich noch nie so wirklich auseinandersetzen müssen.

Wenn das so funktioniert, wie Du schreibst, wäre das aber auf jeden Fall schon mal vielversprechend. Mit den Windows Image Options würde ich da auch nicht herumbasteln wollen, solange es nicht irgendwie anders geht; auch und nicht zuletzt deswegen, weil man dort a) mehr kaputtmachen kann als ganz (wenn man nicht aufpaßt oder es sonst zu irgendwelchen Ringbezügen führt oder sonst irgendwas "nicht paßt", dann geht gar nichts mehr) und natürlich b) weil das eine Stelle ist, wo auch Malware gerne mal ansetzt und dann fängt irgendwann der Virenscanner anzuschlagen (sogar berechtigterweise).
"If you give a man a fish he is hungry again in an hour. If you teach him to catch a fish you do him a good turn."-- Anne Isabella Thackeray Ritchie

Eingefügtes Bild
Eingefügtes Bild
0

#12 Mitglied ist offline   DK2000 

  • Gruppe: Administration
  • Beiträge: 19.794
  • Beigetreten: 19. August 04
  • Reputation: 1.434
  • Geschlecht:Männlich
  • Wohnort:Oben auf dem Berg
  • Interessen:Essen, PC, Filme, TV Serien...

geschrieben 06. September 2014 - 07:00

Beitrag anzeigenZitat (RalphS: 06. September 2014 - 06:51)

Weshalb der Augenroll-Smiley? :unsure:

Weil Du mehr Ahnung von programmieren hast. :wink:

Beitrag anzeigenZitat (RalphS: 06. September 2014 - 06:51)

Und nein, leider nicht. Was so Dinge wie WMI und Programmausführungseigenheiten unter Windows angeht, hast Du sicherlich mehr Erfahrung (und Ahnung) als ich, damit hab ich mich noch nie so wirklich auseinandersetzen müssen.

In der Richtung auch nicht. Habe da noch nie einen eigenen WMI Event Provider erstellt. Das es geht, weiß ich. Man kann darüber so ziemlich alles überwachen. Theoretisch müsste es gehen. Nur steige ich da im Moment noch nicht ganz durch so eine MOF Datei durch.

Mittels VBScript soll das auch gehen. Nur direkt jetzt mit einer .cmd finde ich da nichts.
Ich bin kein Toilettenpapier-Hamster.
---
Ich bin ein kleiner, schnickeldischnuckeliger Tiger aus dem Schwarzwald.
Alle haben mich ganz dolle lila lieb.
0

#13 Mitglied ist offline   RalphS 

  • Gruppe: VIP Mitglieder
  • Beiträge: 8.895
  • Beigetreten: 20. Juli 07
  • Reputation: 1.126
  • Geschlecht:Männlich
  • Wohnort:Zuhause
  • Interessen:Ja

geschrieben 06. September 2014 - 07:22

Nun ja, die Architektur wäre ja dieselbe:

@echo off
start winword.exe %*
start NAME_DER_PHRASE-EXPRESS_EXE

und das dann auf einem der vielen Wege mit .doc/.docx verknüpfen. VBS oder JS wäre natürlich ein bißchen angenehmer als Batch (oder Powershell); da gibt's dann kein extra schwarzes Fenster, welches auf- und wieder zupoppt.

Würde das bei Verwendung des Windows Script Hosts dann auch lieber explizit verknüpfen - script.vbs/script.js "%1" %* solte zwar problemlos funktionieren, ich persönlich würde aber
"%SYSTEMROOT%\system32\wscript.exe" "LW:\Pfad\zum\script.(vb|j)s" "%1" %* 
bevorzugen, falls sich die Standard-Verknüpfung von VBS/JS doch mal ändern sollte (auf irgendeine Programmierumgebung zum Beispiel), in welchem Fall das dann sonst nicht mehr funktionieren würde.

Solange man nicht den /W(ait) Parameter an start übergibt, sollte das auch gut funktionieren, da start nicht auf die Beendigung "seines" Programms wartet.

Caveat: Ich hab leider keine Ahnung, ob und inwieweit Microsoft gerade bei seinem Office auf DDE-Kommunikation setzt. Die geht so natürlich komplett kaputt und man müßte das dann gegebenenfalls irgendwie manuell (oder im Script) zurechtbiegen - oder natürlich damit leben, daß zB ein zweites Word-Dokument jetzt in einer zweiten Instanz von Word und nicht in derselben als zweites Fenster geöffnet wird.

Dieser Beitrag wurde von RalphS bearbeitet: 06. September 2014 - 07:28

"If you give a man a fish he is hungry again in an hour. If you teach him to catch a fish you do him a good turn."-- Anne Isabella Thackeray Ritchie

Eingefügtes Bild
Eingefügtes Bild
0

#14 Mitglied ist offline   Stefan_der_held 

  • Gruppe: Offizieller Support
  • Beiträge: 14.289
  • Beigetreten: 08. April 06
  • Reputation: 885
  • Geschlecht:Männlich
  • Wohnort:Dortmund NRW
  • Interessen:Alles wo irgendwie Strom durchfließt fasziniert mich einfach weswegen ich halt Elektroinstallateur geworden bin :)

geschrieben 06. September 2014 - 08:29

bzgl. der "unschönen" GUI-Elemente:

Was spricht denn dagegen das Script als Dienst zu registrieren?

http://geolevel.word...2-installieren/
0

#15 Mitglied ist offline   DK2000 

  • Gruppe: Administration
  • Beiträge: 19.794
  • Beigetreten: 19. August 04
  • Reputation: 1.434
  • Geschlecht:Männlich
  • Wohnort:Oben auf dem Berg
  • Interessen:Essen, PC, Filme, TV Serien...

geschrieben 06. September 2014 - 08:55

Das Problem ist da weniger die GUI, sondern im Moment bei mir die Benutzerrechte. Das klappt im Moment alles nur, wenn man den Script mit Adminrechten ausführt. Dadurch würde aber die zu startende Anwendung auch mit Adminrechten laufen.

Prinzipiell funktioniert das ja:

strComputer = "." 
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
Set colProcessStartTrace = objWMIService.ExecNotificationQuery ("SELECT * FROM Win32_ProcessStartTrace WHERE ProcessName='notepad.exe'") 

Do 
  Set objLatestEvent = colProcessStartTrace.NextEvent 
  Wscript.Echo "Process Name: " & objLatestEvent.ProcessName 
Loop 

Solange die .vbs läuft , würde jedesmal Process Name: notepad.exe ausgegeben werden, wenn man notepad.exe startet. Hier kann man dann auch eine Anwendung starten lassen, aber halt dann auch nur mit Adminrechten. Und das stört mich da. Würde da lieber die Anwendung mit den selben Rechten starten, welche der User gerade hat.

Aber prinzipiell geht das mit so einer Schleife. Jedesmal, wenn die Anwendung A (Word.exe) startet, würde ein Ereignis ausgelöst werden, welches dann Anwendung B (phraseexpress.exe) startet. Da bräuchte man nichts weiter am System zu verändern, da dieses Ereignis so oder so stattfinden würde.
Ich bin kein Toilettenpapier-Hamster.
---
Ich bin ein kleiner, schnickeldischnuckeliger Tiger aus dem Schwarzwald.
Alle haben mich ganz dolle lila lieb.
0

Thema verteilen:


  • 2 Seiten +
  • 1
  • 2

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0