Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

prüfen ob anderes Programm schon offen

Forumthread: prüfen ob anderes Programm schon offen

prüfen ob anderes Programm schon offen
22.03.2005 20:30:00
Johannes
Hallo Spezialisten,
ich habe folgendes Problem: Mit der Zeile öffne ich den Barcodegenerator aus dem Ablauf heraus - funktioniert auch.
Shell "D:\Barcode\BARCODE.exe"
Nun soll aber nicht in jeder Schleife das Programm erneut geöffnet werden und ich suche nach der Syntax in einer if - then - else Abfrage um zu prüfen ob das Programm schon offen ist.
if [programm schon offen]
then [weiterer Ablauf ...]
else [Programm öffnen s.o.]
[weiterer Ablauf ...]
Könnte mir bitte jemand auf die Sprünge helfen.
Vielen lieben Dank schon mal für Eure Mühe
Johannes
Anzeige

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: prüfen ob anderes Programm schon offen
22.03.2005 20:47:01
Nepumuk
Hallo Johannes,
erzeugt das Programm ein sichtbares Fenster oder ein Icon in der Taskleiste, sobald es gestartet wird? Wenn du dir nicht sicher bist, starte das Programm und schau mal im Taskmanager unter Anwendungen. Ist da ein Eintrag, der das Programm repräsentiert? Wenn ja, was steht da unter "Task"?
Gruß
Nepumuk
Anzeige
AW: prüfen ob anderes Programm schon offen
22.03.2005 20:56:47
Johannes
Hallo Nepumuk,
Taskmanager:
Task..........................Status
[Icon]Barcode..........Wird ausgeführt
Das Programm ist in der Taskleiste als Button sichtbar.
Gruß
Johannes
AW: prüfen ob anderes Programm schon offen
22.03.2005 20:58:47
K.Rola
Hallo Nepumuk,
wie wärs damit:
Option Explicit
Sub teste()
Dim objWMI As Object, colPro As Object
Set objWMI = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & "." & "\root\cimv2")
Set colPro = objWMI.ExecQuery _
("Select * from Win32_Process Where Name = 'Excel.exe'")
If colPro.Count = 0 Then
MsgBox "Excel.exe ist nicht am werkeln!"
Else
MsgBox "Excel.exe ist stark beschäftigt!"
End If
End Sub

Gruß K.Rola

Der Fleiß ist die Wurzel aller Häßlichkeit.

Oscar Wilde


Anzeige
AW: prüfen ob anderes Programm schon offen
22.03.2005 21:02:25
chris
Hallo K.Rola ,
mit diesem Code hast du auch mich neugierig gemacht..
Würdest du mir dasd ganze auch etwas genauer ewrklären ?
Also wie ich es anwende ist klar aber wie oder was der code macht.
Und evtl. auch wie mann auf sowas kommt ?
Danke schon mal grüße Christian
AW: prüfen ob anderes Programm schon offen
22.03.2005 21:09:46
K.Rola
Hallo,
das ist WMI Query Language, angelehnt an SQL aber halt nicht ganz genauso.
Wenn du dich dafür interessierst, kannst du bei Microsoft diverse WMI-Tools
downloaden. Mit einigen Worten kann man das nicht erklären, dafür ist das
zu mächtig.
Gruß K.Rola
Anzeige
AW: prüfen ob anderes Programm schon offen
22.03.2005 21:15:05
chris b
Ohh Danke dir Kola,
dann lass ich lieber die finger davon. :)
Weil Microsoft downloaden und so ist english und dessen bin ich noch nicht so sehr mächtig.
Ich weiß wäre von vorteil bei Programmiersprachen aber so fitt bin ich dann leider doch nicht.
Danke !
Du kannst auch in deutsch downloaden__ot
22.03.2005 21:30:10
K.Rola
k
AW: prüfen ob anderes Programm schon offen
22.03.2005 21:29:32
Nepumuk
Hi K.Rola,
ich benutze das um die ProzessorID auszulesen. Sowohl bei meinem, als auch bei deinem Code stelle ich fest, der schnellste ist der nicht gerade.
Gruß
Nepumuk
Anzeige
AW: prüfen ob anderes Programm schon offen
22.03.2005 21:34:53
K.Rola
Hi Nepumuk,
also über die Geschwindigkeit kann ich nicht meckern, die Anzeige erfolgt quasi
verzögerungslos. Vieleicht solltest du deine Maschine mal von Dampf auf Strom
umstellen :-°)
Gruß K.Rola
Aber sonst geht´s Euch gut?
22.03.2005 23:40:39
Boris
Hi Teuerste,
...schwebt ihr gerade in anderen Sphären? Kommt mir zumindest so vor...(mir ist ganz schwindelig...). :-p
Grüße Boris
Anzeige
AW: Aber sonst geht´s Euch gut?
23.03.2005 01:38:17
K.Rola
Hi Schatz,
bei deinen {} Formel gehts mir ähnlich.
btw: WMI ist nichts für schwache Nerven.
Gruß und Kuss
K.Rola
Herzlichen Dank - klappt prima o.w.T
22.03.2005 21:16:44
Johannes
.
AW: prüfen ob anderes Programm schon offen
22.03.2005 21:18:07
Nepumuk
Liebste K.Rola,
Windows Managemet System, auch keine schlechte Idee. Ich wollte erst über den Fenstertitel, aber den heraus zu bekommen wird mit "VBA - nur mit Recorder" schwierig. Ich denke einfacher geht es so:


Option Explicit
Private Declare Function CreateToolhelp32Snapshot Lib "kernel32.dll" (ByVal dwFlags As LongByVal th32ProcessID As LongAs Long
Private Declare Function Process32First Lib "kernel32.dll" (ByVal hSnapshot As LongByRef lppe As PROCESSENTRY32) As Long
Private Declare Function Process32Next Lib "kernel32.dll" (ByVal hSnapshot As LongByRef lppe As PROCESSENTRY32) As Long
Private Declare Function CloseHandle Lib "kernel32.dll" (ByVal hObject As LongAs Long
Private Enum Costant
    TH32CS_SNAPPROCESS = &H2
    MAX_PATH = 260
End Enum
Private Type PROCESSENTRY32
    dwSize As Long
    cntUsage As Long
    th32ProcessID As Long
    th32DefaultHeapID As Long
    th32ModuleID As Long
    cntThreads As Long
    th32ParentProcessID As Long
    pcPriClassBase As Long
    dwFlags As Long
    szExeFile As String * MAX_PATH
End Type
Public Sub Alle_Prozesse()
    Dim Snap As Long, Process As PROCESSENTRY32, Result As Long
    Snap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)
    If Snap <> -1 Then
        Process.dwSize = Len(Process)
        Result = Process32First(Snap, Process)
        Do Until Result = 0
            If InStr(1, UCase$(Process.szExeFile), "BARCODE.EXE") Then
                MsgBox "Läuft !"
                Exit Do
            End If
            Result = Process32Next(Snap, Process)
        Loop
    End If
    CloseHandle Snap
End Sub


Gruß
Nepumuk
Anzeige
AW: prüfen ob anderes Programm schon offen
22.03.2005 21:31:23
Johannes
Hallo Nepumuk,
das mit dem "VBA nur mit Macrorecorder" ist vieleicht ein wenig tiefgestapelt - aber angesichts der wirklich super Ideen die ich hier finde ist mir eine Selbsteinstufung "VBA gut" dann aber doch ein wenig viel - es würde mir eine Zwischeneinstufung eher zustehen - und da es die leider nicht gibt, dann doch lieber ein bischen bescheidener.
Danke vielmals und Gruß
Johannes
Anzeige
;
Anzeige

Infobox / Tutorial

Überprüfen, ob ein anderes Programm bereits geöffnet ist


Schritt-für-Schritt-Anleitung

Um zu prüfen, ob ein bestimmtes Programm bereits geöffnet ist, kannst du den folgenden VBA-Code verwenden. Dieser Code nutzt die Windows Management Instrumentation (WMI), um nach dem Prozess zu suchen:

Option Explicit

Public Sub Alle_Prozesse()
    Dim Snap As Long, Process As PROCESSENTRY32, Result As Long
    Snap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)

    If Snap <> -1 Then
        Process.dwSize = Len(Process)
        Result = Process32First(Snap, Process)

        Do Until Result = 0
            If InStr(1, UCase$(Process.szExeFile), "BARCODE.EXE") Then
                MsgBox "Läuft!"
                Exit Do
            End If
            Result = Process32Next(Snap, Process)
        Loop
    End If
    CloseHandle Snap
End Sub
  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.
  3. Kopiere den obigen Code in das Modul.
  4. Schließe den VBA-Editor und führe das Makro aus, um zu testen, ob das Programm geöffnet ist.

Häufige Fehler und Lösungen

  • Fehlermeldung beim Ausführen des Codes: Achte darauf, dass die Windows-API-Deklarationen korrekt sind und dass du die richtigen Berechtigungen hast, um auf die Prozesse zuzugreifen.

  • Das Programm wird nicht erkannt: Stelle sicher, dass der Name des Programms korrekt in den Code eingefügt ist (z.B. "BARCODE.EXE"). Der Vergleich ist nicht case-sensitive, aber der Name muss exakt übereinstimmen.


Alternative Methoden

Eine andere Möglichkeit, um zu prüfen, ob ein Programm läuft, ist die Verwendung des Taskmanagers über die Eingabeaufforderung oder PowerShell. Du kannst ein Skript erstellen, das den Task-Status abfragt:

if (Get-Process | Where-Object { $_.ProcessName -eq "Barcode" }) {
    Write-Host "Das Programm läuft bereits."
} else {
    Write-Host "Das Programm ist nicht geöffnet."
}

Diese Methode kann besonders nützlich sein, wenn du nicht mit VBA arbeiten möchtest.


Praktische Beispiele

Hier ist ein Beispiel, wie du den VBA-Code in eine größere Anwendung integrieren kannst:

Sub StartBarcodeGenerator()
    Dim isRunning As Boolean
    isRunning = False

    ' Prüfen, ob Barcode.exe läuft
    If IsProgramRunning("BARCODE.EXE") Then
        isRunning = True
    End If

    If Not isRunning Then
        Shell "D:\Barcode\BARCODE.exe"
    End If

    ' Weiterer Ablauf...
End Sub

Function IsProgramRunning(processName As String) As Boolean
    ' Füge hier den Code ein, der prüft, ob das Programm läuft
End Function

Durch diese Struktur kannst du sicherstellen, dass der Barcode-Generator nur gestartet wird, wenn er nicht bereits geöffnet ist.


Tipps für Profis

  • Nutze die WMI-Tools von Microsoft für tiefere Einblicke in die Systemprozesse. Damit kannst du nicht nur Programme überwachen, sondern auch Systeminformationen auslesen.

  • Experimentiere mit der Geschwindigkeit der Abfragen. Manchmal kann das Abfragen von Prozessen mit WMI langsamer sein als mit anderen Methoden, also teste verschiedene Ansätze, um die beste Performance zu erzielen.


FAQ: Häufige Fragen

1. Wie kann ich den Code anpassen, um nach anderen Programmen zu suchen? Du musst lediglich den Namen des Programms in der InStr-Funktion ändern, um ein anderes Programm zu überprüfen.

2. Funktioniert dieser Code in Excel 2010? Ja, der Code sollte in den meisten modernen Excel-Versionen funktionieren, solange du Zugriff auf den VBA-Editor hast.

3. Warum wird das Programm nicht gefunden, obwohl es läuft? Stelle sicher, dass du den genauen Namen des Prozesses verwendest. Windows kann Prozesse unter verschiedenen Namen führen, also überprüfe den Task-Manager, um den richtigen Namen zu finden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige